From a90b923bef3406417b18ebd6d2788b9b454941d6 Mon Sep 17 00:00:00 2001 From: "bell@sanja.is.com.ua" <> Date: Tue, 5 Nov 2002 11:24:44 +0200 Subject: [PATCH 1/9] Fixed accidentally inverted assert condition --- sql/sql_lex.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc index b5dd5218e7d..5327801bf9c 100644 --- a/sql/sql_lex.cc +++ b/sql/sql_lex.cc @@ -1047,7 +1047,7 @@ void st_select_lex_node::exclude() st_select_lex* st_select_lex_node::select_lex() { DBUG_ENTER("st_select_lex_node::select_lex (never should be called)"); - DBUG_ASSERT(1); + DBUG_ASSERT(0); DBUG_RETURN(0); } From cebfa22c01f5f51b99f45e6e6a44a1869f001f2d Mon Sep 17 00:00:00 2001 From: "bar@bar.mysql.r18.ru" <> Date: Tue, 5 Nov 2002 15:10:13 +0400 Subject: [PATCH 2/9] CREATE DATABASE now tries to execute SHOW CREATE DATABASE first --- client/mysqldump.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/client/mysqldump.c b/client/mysqldump.c index 21358272109..04232474944 100644 --- a/client/mysqldump.c +++ b/client/mysqldump.c @@ -1247,8 +1247,28 @@ static int init_dumping(char *database) { fprintf(md_result_file,"\n--\n-- Current Database: %s\n--\n", database); if (!opt_create_db) - fprintf(md_result_file,"\nCREATE DATABASE /*!32312 IF NOT EXISTS*/ %s;\n", + { + char qbuf[128]; + MYSQL_ROW row; + MYSQL_RES *dbinfo; + + sprintf(qbuf,"SHOW CREATE DATABASE %s",database); + + if (mysql_query(sock, qbuf) || !(dbinfo = mysql_store_result(sock))) + { + /* Old server version, dump generic CREATE DATABASE */ + fprintf(md_result_file,"\nCREATE DATABASE /*!32312 IF NOT EXISTS*/ %s;\n", database); + } + else + { + row = mysql_fetch_row(dbinfo); + if (row[1]) + { + fprintf(md_result_file,"\n%s;\n",row[1]); + } + } + } fprintf(md_result_file,"\nUSE %s;\n", database); } } From 529146269dea329a8a3d89783cc3c612fa86c4d6 Mon Sep 17 00:00:00 2001 From: "ram@mysql.r18.ru" <> Date: Tue, 5 Nov 2002 18:12:53 +0400 Subject: [PATCH 3/9] fix for BDB 4.1.24 deleted unnecessary files from bdb/ --- bdb/dbinc_auto/crypto_ext.h | 37 - bdb/dbinc_auto/int_def.in | 1328 -------------------------------- bdb/dist/s_tags | 10 +- bdb/test/TESTS | 1437 ----------------------------------- 4 files changed, 5 insertions(+), 2807 deletions(-) delete mode 100644 bdb/dbinc_auto/crypto_ext.h delete mode 100644 bdb/dbinc_auto/int_def.in delete mode 100644 bdb/test/TESTS diff --git a/bdb/dbinc_auto/crypto_ext.h b/bdb/dbinc_auto/crypto_ext.h deleted file mode 100644 index e37a895d91a..00000000000 --- a/bdb/dbinc_auto/crypto_ext.h +++ /dev/null @@ -1,37 +0,0 @@ -/* DO NOT EDIT: automatically built by dist/s_include. */ -#ifndef _crypto_ext_h_ -#define _crypto_ext_h_ - -#if defined(__cplusplus) -extern "C" { -#endif - -int __aes_setup __P((DB_ENV *, DB_CIPHER *)); -int __aes_adj_size __P((size_t)); -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_region_init __P((DB_ENV *)); -int __crypto_dbenv_close __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 __db_generate_iv __P((DB_ENV *, u_int32_t *)); -int __db_rijndaelKeySetupEnc __P((u32 *, const u8 *, int)); -int __db_rijndaelKeySetupDec __P((u32 *, const u8 *, int)); -void __db_rijndaelEncrypt __P((u32 *, int, const u8 *, u8 *)); -void __db_rijndaelDecrypt __P((u32 *, int, const u8 *, u8 *)); -void __db_rijndaelEncryptRound __P((const u32 *, int, u8 *, int)); -void __db_rijndaelDecryptRound __P((const u32 *, int, u8 *, int)); -int __db_makeKey __P((keyInstance *, int, int, char *)); -int __db_cipherInit __P((cipherInstance *, int, char *)); -int __db_blockEncrypt __P((cipherInstance *, keyInstance *, BYTE *, size_t, BYTE *)); -int __db_padEncrypt __P((cipherInstance *, keyInstance *, BYTE *, int, BYTE *)); -int __db_blockDecrypt __P((cipherInstance *, keyInstance *, BYTE *, size_t, BYTE *)); -int __db_padDecrypt __P((cipherInstance *, keyInstance *, BYTE *, int, BYTE *)); -int __db_cipherUpdateRounds __P((cipherInstance *, keyInstance *, BYTE *, int, BYTE *, int)); - -#if defined(__cplusplus) -} -#endif -#endif /* !_crypto_ext_h_ */ diff --git a/bdb/dbinc_auto/int_def.in b/bdb/dbinc_auto/int_def.in deleted file mode 100644 index 003a861f4f5..00000000000 --- a/bdb/dbinc_auto/int_def.in +++ /dev/null @@ -1,1328 +0,0 @@ -/* DO NOT EDIT: automatically built by dist/s_include. */ -#ifndef _DB_INT_DEF_IN_ -#define _DB_INT_DEF_IN_ - -#define __crdel_metasub_log __crdel_metasub_log@DB_VERSION_UNIQUE_NAME@ -#define __crdel_metasub_getpgnos __crdel_metasub_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __crdel_metasub_print __crdel_metasub_print@DB_VERSION_UNIQUE_NAME@ -#define __crdel_metasub_read __crdel_metasub_read@DB_VERSION_UNIQUE_NAME@ -#define __crdel_init_print __crdel_init_print@DB_VERSION_UNIQUE_NAME@ -#define __crdel_init_getpgnos __crdel_init_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __crdel_init_recover __crdel_init_recover@DB_VERSION_UNIQUE_NAME@ -#define __crdel_metasub_recover __crdel_metasub_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_close __db_close@DB_VERSION_UNIQUE_NAME@ -#define __db_close_i __db_close_i@DB_VERSION_UNIQUE_NAME@ -#define __db_refresh __db_refresh@DB_VERSION_UNIQUE_NAME@ -#define __db_log_page __db_log_page@DB_VERSION_UNIQUE_NAME@ -#define __db_backup_name __db_backup_name@DB_VERSION_UNIQUE_NAME@ -#define __dblist_get __dblist_get@DB_VERSION_UNIQUE_NAME@ -#if CONFIG_TEST -#define __db_testcopy __db_testcopy@DB_VERSION_UNIQUE_NAME@ -#endif -#define __db_cursor __db_cursor@DB_VERSION_UNIQUE_NAME@ -#define __db_icursor __db_icursor@DB_VERSION_UNIQUE_NAME@ -#define __db_cprint __db_cprint@DB_VERSION_UNIQUE_NAME@ -#define __db_fd __db_fd@DB_VERSION_UNIQUE_NAME@ -#define __db_get __db_get@DB_VERSION_UNIQUE_NAME@ -#define __db_put __db_put@DB_VERSION_UNIQUE_NAME@ -#define __db_delete __db_delete@DB_VERSION_UNIQUE_NAME@ -#define __db_sync __db_sync@DB_VERSION_UNIQUE_NAME@ -#define __db_associate __db_associate@DB_VERSION_UNIQUE_NAME@ -#define __db_pget __db_pget@DB_VERSION_UNIQUE_NAME@ -#define __db_addrem_log __db_addrem_log@DB_VERSION_UNIQUE_NAME@ -#define __db_addrem_getpgnos __db_addrem_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __db_addrem_print __db_addrem_print@DB_VERSION_UNIQUE_NAME@ -#define __db_addrem_read __db_addrem_read@DB_VERSION_UNIQUE_NAME@ -#define __db_big_log __db_big_log@DB_VERSION_UNIQUE_NAME@ -#define __db_big_getpgnos __db_big_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __db_big_print __db_big_print@DB_VERSION_UNIQUE_NAME@ -#define __db_big_read __db_big_read@DB_VERSION_UNIQUE_NAME@ -#define __db_ovref_log __db_ovref_log@DB_VERSION_UNIQUE_NAME@ -#define __db_ovref_getpgnos __db_ovref_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __db_ovref_print __db_ovref_print@DB_VERSION_UNIQUE_NAME@ -#define __db_ovref_read __db_ovref_read@DB_VERSION_UNIQUE_NAME@ -#define __db_relink_log __db_relink_log@DB_VERSION_UNIQUE_NAME@ -#define __db_relink_getpgnos __db_relink_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __db_relink_print __db_relink_print@DB_VERSION_UNIQUE_NAME@ -#define __db_relink_read __db_relink_read@DB_VERSION_UNIQUE_NAME@ -#define __db_debug_log __db_debug_log@DB_VERSION_UNIQUE_NAME@ -#define __db_debug_getpgnos __db_debug_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __db_debug_print __db_debug_print@DB_VERSION_UNIQUE_NAME@ -#define __db_debug_read __db_debug_read@DB_VERSION_UNIQUE_NAME@ -#define __db_noop_log __db_noop_log@DB_VERSION_UNIQUE_NAME@ -#define __db_noop_getpgnos __db_noop_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __db_noop_print __db_noop_print@DB_VERSION_UNIQUE_NAME@ -#define __db_noop_read __db_noop_read@DB_VERSION_UNIQUE_NAME@ -#define __db_pg_alloc_log __db_pg_alloc_log@DB_VERSION_UNIQUE_NAME@ -#define __db_pg_alloc_getpgnos __db_pg_alloc_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __db_pg_alloc_print __db_pg_alloc_print@DB_VERSION_UNIQUE_NAME@ -#define __db_pg_alloc_read __db_pg_alloc_read@DB_VERSION_UNIQUE_NAME@ -#define __db_pg_free_log __db_pg_free_log@DB_VERSION_UNIQUE_NAME@ -#define __db_pg_free_getpgnos __db_pg_free_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __db_pg_free_print __db_pg_free_print@DB_VERSION_UNIQUE_NAME@ -#define __db_pg_free_read __db_pg_free_read@DB_VERSION_UNIQUE_NAME@ -#define __db_cksum_log __db_cksum_log@DB_VERSION_UNIQUE_NAME@ -#define __db_cksum_getpgnos __db_cksum_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __db_cksum_print __db_cksum_print@DB_VERSION_UNIQUE_NAME@ -#define __db_cksum_read __db_cksum_read@DB_VERSION_UNIQUE_NAME@ -#define __db_init_print __db_init_print@DB_VERSION_UNIQUE_NAME@ -#define __db_init_getpgnos __db_init_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __db_init_recover __db_init_recover@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 __db_duperr __db_duperr@DB_VERSION_UNIQUE_NAME@ -#define __db_c_secondary_get __db_c_secondary_get@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 __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@ -#define __db_pgin __db_pgin@DB_VERSION_UNIQUE_NAME@ -#define __db_pgout __db_pgout@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@ -#define __db_add_recovery __db_add_recovery@DB_VERSION_UNIQUE_NAME@ -#define __db_txnlist_init __db_txnlist_init@DB_VERSION_UNIQUE_NAME@ -#define __db_txnlist_add __db_txnlist_add@DB_VERSION_UNIQUE_NAME@ -#define __db_txnlist_remove __db_txnlist_remove@DB_VERSION_UNIQUE_NAME@ -#define __db_txnlist_ckp __db_txnlist_ckp@DB_VERSION_UNIQUE_NAME@ -#define __db_txnlist_end __db_txnlist_end@DB_VERSION_UNIQUE_NAME@ -#define __db_txnlist_find __db_txnlist_find@DB_VERSION_UNIQUE_NAME@ -#define __db_txnlist_update __db_txnlist_update@DB_VERSION_UNIQUE_NAME@ -#define __db_txnlist_gen __db_txnlist_gen@DB_VERSION_UNIQUE_NAME@ -#define __db_txnlist_lsnadd __db_txnlist_lsnadd@DB_VERSION_UNIQUE_NAME@ -#define __db_txnlist_lsninit __db_txnlist_lsninit@DB_VERSION_UNIQUE_NAME@ -#define __db_add_limbo __db_add_limbo@DB_VERSION_UNIQUE_NAME@ -#define __db_do_the_limbo __db_do_the_limbo@DB_VERSION_UNIQUE_NAME@ -#define __db_txnlist_print __db_txnlist_print@DB_VERSION_UNIQUE_NAME@ -#define __db_ditem __db_ditem@DB_VERSION_UNIQUE_NAME@ -#define __db_pitem __db_pitem@DB_VERSION_UNIQUE_NAME@ -#define __db_relink __db_relink@DB_VERSION_UNIQUE_NAME@ -#define __db_cursorchk __db_cursorchk@DB_VERSION_UNIQUE_NAME@ -#define __db_ccountchk __db_ccountchk@DB_VERSION_UNIQUE_NAME@ -#define __db_cdelchk __db_cdelchk@DB_VERSION_UNIQUE_NAME@ -#define __db_cgetchk __db_cgetchk@DB_VERSION_UNIQUE_NAME@ -#define __db_cputchk __db_cputchk@DB_VERSION_UNIQUE_NAME@ -#define __db_pgetchk __db_pgetchk@DB_VERSION_UNIQUE_NAME@ -#define __db_cpgetchk __db_cpgetchk@DB_VERSION_UNIQUE_NAME@ -#define __db_delchk __db_delchk@DB_VERSION_UNIQUE_NAME@ -#define __db_getchk __db_getchk@DB_VERSION_UNIQUE_NAME@ -#define __db_joinchk __db_joinchk@DB_VERSION_UNIQUE_NAME@ -#define __db_joingetchk __db_joingetchk@DB_VERSION_UNIQUE_NAME@ -#define __db_putchk __db_putchk@DB_VERSION_UNIQUE_NAME@ -#define __db_statchk __db_statchk@DB_VERSION_UNIQUE_NAME@ -#define __db_syncchk __db_syncchk@DB_VERSION_UNIQUE_NAME@ -#define __db_secondary_corrupt __db_secondary_corrupt@DB_VERSION_UNIQUE_NAME@ -#define __db_associatechk __db_associatechk@DB_VERSION_UNIQUE_NAME@ -#define __db_txn_auto __db_txn_auto@DB_VERSION_UNIQUE_NAME@ -#define __db_join __db_join@DB_VERSION_UNIQUE_NAME@ -#define __db_new __db_new@DB_VERSION_UNIQUE_NAME@ -#define __db_free __db_free@DB_VERSION_UNIQUE_NAME@ -#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 __dbh_am_chk __dbh_am_chk@DB_VERSION_UNIQUE_NAME@ -#define __db_set_lorder __db_set_lorder@DB_VERSION_UNIQUE_NAME@ -#define __db_open __db_open@DB_VERSION_UNIQUE_NAME@ -#define __db_dbopen __db_dbopen@DB_VERSION_UNIQUE_NAME@ -#define __db_new_file __db_new_file@DB_VERSION_UNIQUE_NAME@ -#define __db_init_subdb __db_init_subdb@DB_VERSION_UNIQUE_NAME@ -#define __db_chk_meta __db_chk_meta@DB_VERSION_UNIQUE_NAME@ -#define __db_meta_setup __db_meta_setup@DB_VERSION_UNIQUE_NAME@ -#define __db_goff __db_goff@DB_VERSION_UNIQUE_NAME@ -#define __db_poff __db_poff@DB_VERSION_UNIQUE_NAME@ -#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_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@ -#define __db_loadme __db_loadme@DB_VERSION_UNIQUE_NAME@ -#define __db_dump __db_dump@DB_VERSION_UNIQUE_NAME@ -#define __db_inmemdbflags __db_inmemdbflags@DB_VERSION_UNIQUE_NAME@ -#define __db_prnpage __db_prnpage@DB_VERSION_UNIQUE_NAME@ -#define __db_prpage __db_prpage@DB_VERSION_UNIQUE_NAME@ -#define __db_pr __db_pr@DB_VERSION_UNIQUE_NAME@ -#define __db_prdbt __db_prdbt@DB_VERSION_UNIQUE_NAME@ -#define __db_prflags __db_prflags@DB_VERSION_UNIQUE_NAME@ -#define __db_dbtype_to_string __db_dbtype_to_string@DB_VERSION_UNIQUE_NAME@ -#define __db_prheader __db_prheader@DB_VERSION_UNIQUE_NAME@ -#define __db_prfooter __db_prfooter@DB_VERSION_UNIQUE_NAME@ -#define __db_addrem_recover __db_addrem_recover@DB_VERSION_UNIQUE_NAME@ -#define __db_big_recover __db_big_recover@DB_VERSION_UNIQUE_NAME@ -#define __db_ovref_recover __db_ovref_recover@DB_VERSION_UNIQUE_NAME@ -#define __db_relink_recover __db_relink_recover@DB_VERSION_UNIQUE_NAME@ -#define __db_debug_recover __db_debug_recover@DB_VERSION_UNIQUE_NAME@ -#define __db_noop_recover __db_noop_recover@DB_VERSION_UNIQUE_NAME@ -#define __db_pg_alloc_recover __db_pg_alloc_recover@DB_VERSION_UNIQUE_NAME@ -#define __db_pg_free_recover __db_pg_free_recover@DB_VERSION_UNIQUE_NAME@ -#define __db_cksum_recover __db_cksum_recover@DB_VERSION_UNIQUE_NAME@ -#define __db_traverse_big __db_traverse_big@DB_VERSION_UNIQUE_NAME@ -#define __db_reclaim_callback __db_reclaim_callback@DB_VERSION_UNIQUE_NAME@ -#define __db_truncate_callback __db_truncate_callback@DB_VERSION_UNIQUE_NAME@ -#define __dbenv_dbremove __dbenv_dbremove@DB_VERSION_UNIQUE_NAME@ -#define __db_remove __db_remove@DB_VERSION_UNIQUE_NAME@ -#define __db_remove_i __db_remove_i@DB_VERSION_UNIQUE_NAME@ -#define __dbenv_dbrename __dbenv_dbrename@DB_VERSION_UNIQUE_NAME@ -#define __db_rename __db_rename@DB_VERSION_UNIQUE_NAME@ -#define __db_rename_i __db_rename_i@DB_VERSION_UNIQUE_NAME@ -#define __db_ret __db_ret@DB_VERSION_UNIQUE_NAME@ -#define __db_retcopy __db_retcopy@DB_VERSION_UNIQUE_NAME@ -#define __db_truncate __db_truncate@DB_VERSION_UNIQUE_NAME@ -#define __db_upgrade __db_upgrade@DB_VERSION_UNIQUE_NAME@ -#define __db_lastpgno __db_lastpgno@DB_VERSION_UNIQUE_NAME@ -#define __db_31_offdup __db_31_offdup@DB_VERSION_UNIQUE_NAME@ -#define __db_verify __db_verify@DB_VERSION_UNIQUE_NAME@ -#define __db_verify_callback __db_verify_callback@DB_VERSION_UNIQUE_NAME@ -#define __db_verify_internal __db_verify_internal@DB_VERSION_UNIQUE_NAME@ -#define __db_vrfy_datapage __db_vrfy_datapage@DB_VERSION_UNIQUE_NAME@ -#define __db_vrfy_meta __db_vrfy_meta@DB_VERSION_UNIQUE_NAME@ -#define __db_vrfy_struct_feedback __db_vrfy_struct_feedback@DB_VERSION_UNIQUE_NAME@ -#define __db_vrfy_inpitem __db_vrfy_inpitem@DB_VERSION_UNIQUE_NAME@ -#define __db_vrfy_duptype __db_vrfy_duptype@DB_VERSION_UNIQUE_NAME@ -#define __db_salvage_duptree __db_salvage_duptree@DB_VERSION_UNIQUE_NAME@ -#define __db_vrfy_dbinfo_create __db_vrfy_dbinfo_create@DB_VERSION_UNIQUE_NAME@ -#define __db_vrfy_dbinfo_destroy __db_vrfy_dbinfo_destroy@DB_VERSION_UNIQUE_NAME@ -#define __db_vrfy_getpageinfo __db_vrfy_getpageinfo@DB_VERSION_UNIQUE_NAME@ -#define __db_vrfy_putpageinfo __db_vrfy_putpageinfo@DB_VERSION_UNIQUE_NAME@ -#define __db_vrfy_pgset __db_vrfy_pgset@DB_VERSION_UNIQUE_NAME@ -#define __db_vrfy_pgset_get __db_vrfy_pgset_get@DB_VERSION_UNIQUE_NAME@ -#define __db_vrfy_pgset_inc __db_vrfy_pgset_inc@DB_VERSION_UNIQUE_NAME@ -#define __db_vrfy_pgset_dec __db_vrfy_pgset_dec@DB_VERSION_UNIQUE_NAME@ -#define __db_vrfy_pgset_next __db_vrfy_pgset_next@DB_VERSION_UNIQUE_NAME@ -#define __db_vrfy_childcursor __db_vrfy_childcursor@DB_VERSION_UNIQUE_NAME@ -#define __db_vrfy_childput __db_vrfy_childput@DB_VERSION_UNIQUE_NAME@ -#define __db_vrfy_ccset __db_vrfy_ccset@DB_VERSION_UNIQUE_NAME@ -#define __db_vrfy_ccnext __db_vrfy_ccnext@DB_VERSION_UNIQUE_NAME@ -#define __db_vrfy_ccclose __db_vrfy_ccclose@DB_VERSION_UNIQUE_NAME@ -#define __db_salvage_init __db_salvage_init@DB_VERSION_UNIQUE_NAME@ -#define __db_salvage_destroy __db_salvage_destroy@DB_VERSION_UNIQUE_NAME@ -#define __db_salvage_getnext __db_salvage_getnext@DB_VERSION_UNIQUE_NAME@ -#define __db_salvage_isdone __db_salvage_isdone@DB_VERSION_UNIQUE_NAME@ -#define __db_salvage_markdone __db_salvage_markdone@DB_VERSION_UNIQUE_NAME@ -#define __db_salvage_markneeded __db_salvage_markneeded@DB_VERSION_UNIQUE_NAME@ -#define __bam_cmp __bam_cmp@DB_VERSION_UNIQUE_NAME@ -#define __bam_defcmp __bam_defcmp@DB_VERSION_UNIQUE_NAME@ -#define __bam_defpfx __bam_defpfx@DB_VERSION_UNIQUE_NAME@ -#define __bam_pgin __bam_pgin@DB_VERSION_UNIQUE_NAME@ -#define __bam_pgout __bam_pgout@DB_VERSION_UNIQUE_NAME@ -#define __bam_mswap __bam_mswap@DB_VERSION_UNIQUE_NAME@ -#define __bam_cprint __bam_cprint@DB_VERSION_UNIQUE_NAME@ -#define __bam_ca_delete __bam_ca_delete@DB_VERSION_UNIQUE_NAME@ -#define __ram_ca_delete __ram_ca_delete@DB_VERSION_UNIQUE_NAME@ -#define __bam_ca_di __bam_ca_di@DB_VERSION_UNIQUE_NAME@ -#define __bam_ca_dup __bam_ca_dup@DB_VERSION_UNIQUE_NAME@ -#define __bam_ca_undodup __bam_ca_undodup@DB_VERSION_UNIQUE_NAME@ -#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 __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 __bam_ditem __bam_ditem@DB_VERSION_UNIQUE_NAME@ -#define __bam_adjindx __bam_adjindx@DB_VERSION_UNIQUE_NAME@ -#define __bam_dpages __bam_dpages@DB_VERSION_UNIQUE_NAME@ -#define __bam_db_create __bam_db_create@DB_VERSION_UNIQUE_NAME@ -#define __bam_db_close __bam_db_close@DB_VERSION_UNIQUE_NAME@ -#define __bam_set_flags __bam_set_flags@DB_VERSION_UNIQUE_NAME@ -#define __ram_set_flags __ram_set_flags@DB_VERSION_UNIQUE_NAME@ -#define __bam_open __bam_open@DB_VERSION_UNIQUE_NAME@ -#define __bam_metachk __bam_metachk@DB_VERSION_UNIQUE_NAME@ -#define __bam_read_root __bam_read_root@DB_VERSION_UNIQUE_NAME@ -#define __bam_new_file __bam_new_file@DB_VERSION_UNIQUE_NAME@ -#define __bam_new_subdb __bam_new_subdb@DB_VERSION_UNIQUE_NAME@ -#define __bam_iitem __bam_iitem@DB_VERSION_UNIQUE_NAME@ -#define __bam_ritem __bam_ritem@DB_VERSION_UNIQUE_NAME@ -#define __bam_split_recover __bam_split_recover@DB_VERSION_UNIQUE_NAME@ -#define __bam_rsplit_recover __bam_rsplit_recover@DB_VERSION_UNIQUE_NAME@ -#define __bam_adj_recover __bam_adj_recover@DB_VERSION_UNIQUE_NAME@ -#define __bam_cadjust_recover __bam_cadjust_recover@DB_VERSION_UNIQUE_NAME@ -#define __bam_cdel_recover __bam_cdel_recover@DB_VERSION_UNIQUE_NAME@ -#define __bam_repl_recover __bam_repl_recover@DB_VERSION_UNIQUE_NAME@ -#define __bam_root_recover __bam_root_recover@DB_VERSION_UNIQUE_NAME@ -#define __bam_curadj_recover __bam_curadj_recover@DB_VERSION_UNIQUE_NAME@ -#define __bam_rcuradj_recover __bam_rcuradj_recover@DB_VERSION_UNIQUE_NAME@ -#define __bam_reclaim __bam_reclaim@DB_VERSION_UNIQUE_NAME@ -#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 __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@ -#define __bam_rsearch __bam_rsearch@DB_VERSION_UNIQUE_NAME@ -#define __bam_adjust __bam_adjust@DB_VERSION_UNIQUE_NAME@ -#define __bam_nrecs __bam_nrecs@DB_VERSION_UNIQUE_NAME@ -#define __bam_total __bam_total@DB_VERSION_UNIQUE_NAME@ -#define __bam_search __bam_search@DB_VERSION_UNIQUE_NAME@ -#define __bam_stkrel __bam_stkrel@DB_VERSION_UNIQUE_NAME@ -#define __bam_stkgrow __bam_stkgrow@DB_VERSION_UNIQUE_NAME@ -#define __bam_split __bam_split@DB_VERSION_UNIQUE_NAME@ -#define __bam_copy __bam_copy@DB_VERSION_UNIQUE_NAME@ -#define __bam_stat __bam_stat@DB_VERSION_UNIQUE_NAME@ -#define __bam_traverse __bam_traverse@DB_VERSION_UNIQUE_NAME@ -#define __bam_stat_callback __bam_stat_callback@DB_VERSION_UNIQUE_NAME@ -#define __bam_key_range __bam_key_range@DB_VERSION_UNIQUE_NAME@ -#define __bam_30_btreemeta __bam_30_btreemeta@DB_VERSION_UNIQUE_NAME@ -#define __bam_31_btreemeta __bam_31_btreemeta@DB_VERSION_UNIQUE_NAME@ -#define __bam_31_lbtree __bam_31_lbtree@DB_VERSION_UNIQUE_NAME@ -#define __bam_vrfy_meta __bam_vrfy_meta@DB_VERSION_UNIQUE_NAME@ -#define __ram_vrfy_leaf __ram_vrfy_leaf@DB_VERSION_UNIQUE_NAME@ -#define __bam_vrfy __bam_vrfy@DB_VERSION_UNIQUE_NAME@ -#define __bam_vrfy_itemorder __bam_vrfy_itemorder@DB_VERSION_UNIQUE_NAME@ -#define __bam_vrfy_structure __bam_vrfy_structure@DB_VERSION_UNIQUE_NAME@ -#define __bam_vrfy_subtree __bam_vrfy_subtree@DB_VERSION_UNIQUE_NAME@ -#define __bam_salvage __bam_salvage@DB_VERSION_UNIQUE_NAME@ -#define __bam_salvage_walkdupint __bam_salvage_walkdupint@DB_VERSION_UNIQUE_NAME@ -#define __bam_meta2pgset __bam_meta2pgset@DB_VERSION_UNIQUE_NAME@ -#define __bam_split_log __bam_split_log@DB_VERSION_UNIQUE_NAME@ -#define __bam_split_getpgnos __bam_split_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __bam_split_print __bam_split_print@DB_VERSION_UNIQUE_NAME@ -#define __bam_split_read __bam_split_read@DB_VERSION_UNIQUE_NAME@ -#define __bam_rsplit_log __bam_rsplit_log@DB_VERSION_UNIQUE_NAME@ -#define __bam_rsplit_getpgnos __bam_rsplit_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __bam_rsplit_print __bam_rsplit_print@DB_VERSION_UNIQUE_NAME@ -#define __bam_rsplit_read __bam_rsplit_read@DB_VERSION_UNIQUE_NAME@ -#define __bam_adj_log __bam_adj_log@DB_VERSION_UNIQUE_NAME@ -#define __bam_adj_getpgnos __bam_adj_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __bam_adj_print __bam_adj_print@DB_VERSION_UNIQUE_NAME@ -#define __bam_adj_read __bam_adj_read@DB_VERSION_UNIQUE_NAME@ -#define __bam_cadjust_log __bam_cadjust_log@DB_VERSION_UNIQUE_NAME@ -#define __bam_cadjust_getpgnos __bam_cadjust_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __bam_cadjust_print __bam_cadjust_print@DB_VERSION_UNIQUE_NAME@ -#define __bam_cadjust_read __bam_cadjust_read@DB_VERSION_UNIQUE_NAME@ -#define __bam_cdel_log __bam_cdel_log@DB_VERSION_UNIQUE_NAME@ -#define __bam_cdel_getpgnos __bam_cdel_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __bam_cdel_print __bam_cdel_print@DB_VERSION_UNIQUE_NAME@ -#define __bam_cdel_read __bam_cdel_read@DB_VERSION_UNIQUE_NAME@ -#define __bam_repl_log __bam_repl_log@DB_VERSION_UNIQUE_NAME@ -#define __bam_repl_getpgnos __bam_repl_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __bam_repl_print __bam_repl_print@DB_VERSION_UNIQUE_NAME@ -#define __bam_repl_read __bam_repl_read@DB_VERSION_UNIQUE_NAME@ -#define __bam_root_log __bam_root_log@DB_VERSION_UNIQUE_NAME@ -#define __bam_root_getpgnos __bam_root_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __bam_root_print __bam_root_print@DB_VERSION_UNIQUE_NAME@ -#define __bam_root_read __bam_root_read@DB_VERSION_UNIQUE_NAME@ -#define __bam_curadj_log __bam_curadj_log@DB_VERSION_UNIQUE_NAME@ -#define __bam_curadj_getpgnos __bam_curadj_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __bam_curadj_print __bam_curadj_print@DB_VERSION_UNIQUE_NAME@ -#define __bam_curadj_read __bam_curadj_read@DB_VERSION_UNIQUE_NAME@ -#define __bam_rcuradj_log __bam_rcuradj_log@DB_VERSION_UNIQUE_NAME@ -#define __bam_rcuradj_getpgnos __bam_rcuradj_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __bam_rcuradj_print __bam_rcuradj_print@DB_VERSION_UNIQUE_NAME@ -#define __bam_rcuradj_read __bam_rcuradj_read@DB_VERSION_UNIQUE_NAME@ -#define __bam_init_print __bam_init_print@DB_VERSION_UNIQUE_NAME@ -#define __bam_init_getpgnos __bam_init_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __bam_init_recover __bam_init_recover@DB_VERSION_UNIQUE_NAME@ -#ifndef HAVE_GETCWD -#define getcwd getcwd@DB_VERSION_UNIQUE_NAME@ -#endif -#ifndef HAVE_GETOPT -#define getopt getopt@DB_VERSION_UNIQUE_NAME@ -#endif -#ifndef HAVE_MEMCMP -#define memcmp memcmp@DB_VERSION_UNIQUE_NAME@ -#endif -#ifndef HAVE_MEMCPY -#define memcpy memcpy@DB_VERSION_UNIQUE_NAME@ -#endif -#ifndef HAVE_MEMMOVE -#define memmove memmove@DB_VERSION_UNIQUE_NAME@ -#endif -#ifndef HAVE_RAISE -#define raise raise@DB_VERSION_UNIQUE_NAME@ -#endif -#ifndef HAVE_SNPRINTF -#define snprintf snprintf@DB_VERSION_UNIQUE_NAME@ -#endif -#ifndef HAVE_STRCASECMP -#define strcasecmp strcasecmp@DB_VERSION_UNIQUE_NAME@ -#endif -#ifndef HAVE_STRCASECMP -#define strncasecmp strncasecmp@DB_VERSION_UNIQUE_NAME@ -#endif -#ifndef HAVE_STRDUP -#define strdup strdup@DB_VERSION_UNIQUE_NAME@ -#endif -#ifndef HAVE_STRERROR -#define strerror strerror@DB_VERSION_UNIQUE_NAME@ -#endif -#ifndef HAVE_VSNPRINTF -#define vsnprintf vsnprintf@DB_VERSION_UNIQUE_NAME@ -#endif -#define __db_isbigendian __db_isbigendian@DB_VERSION_UNIQUE_NAME@ -#define __db_byteorder __db_byteorder@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@ -#define __db_pgerr __db_pgerr@DB_VERSION_UNIQUE_NAME@ -#define __db_pgfmt __db_pgfmt@DB_VERSION_UNIQUE_NAME@ -#define __db_eopnotsup __db_eopnotsup@DB_VERSION_UNIQUE_NAME@ -#ifdef DIAGNOSTIC -#define __db_assert __db_assert@DB_VERSION_UNIQUE_NAME@ -#endif -#define __db_panic_msg __db_panic_msg@DB_VERSION_UNIQUE_NAME@ -#define __db_panic __db_panic@DB_VERSION_UNIQUE_NAME@ -#define __db_err __db_err@DB_VERSION_UNIQUE_NAME@ -#define __db_errcall __db_errcall@DB_VERSION_UNIQUE_NAME@ -#define __db_errfile __db_errfile@DB_VERSION_UNIQUE_NAME@ -#define __db_logmsg __db_logmsg@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@ -#define __db_check_txn __db_check_txn@DB_VERSION_UNIQUE_NAME@ -#define __db_not_txn_env __db_not_txn_env@DB_VERSION_UNIQUE_NAME@ -#define __db_getlong __db_getlong@DB_VERSION_UNIQUE_NAME@ -#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_util_arg __db_util_arg@DB_VERSION_UNIQUE_NAME@ -#define __db_util_cache __db_util_cache@DB_VERSION_UNIQUE_NAME@ -#define __db_util_logset __db_util_logset@DB_VERSION_UNIQUE_NAME@ -#define __db_util_siginit __db_util_siginit@DB_VERSION_UNIQUE_NAME@ -#define __db_util_interrupted __db_util_interrupted@DB_VERSION_UNIQUE_NAME@ -#define __db_util_sigresend __db_util_sigresend@DB_VERSION_UNIQUE_NAME@ -#define __aes_setup __aes_setup@DB_VERSION_UNIQUE_NAME@ -#define __aes_adj_size __aes_adj_size@DB_VERSION_UNIQUE_NAME@ -#define __aes_close __aes_close@DB_VERSION_UNIQUE_NAME@ -#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_region_init __crypto_region_init@DB_VERSION_UNIQUE_NAME@ -#define __crypto_dbenv_close __crypto_dbenv_close@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 __db_generate_iv __db_generate_iv@DB_VERSION_UNIQUE_NAME@ -#define __db_rijndaelKeySetupEnc __db_rijndaelKeySetupEnc@DB_VERSION_UNIQUE_NAME@ -#define __db_rijndaelKeySetupDec __db_rijndaelKeySetupDec@DB_VERSION_UNIQUE_NAME@ -#define __db_rijndaelEncrypt __db_rijndaelEncrypt@DB_VERSION_UNIQUE_NAME@ -#define __db_rijndaelDecrypt __db_rijndaelDecrypt@DB_VERSION_UNIQUE_NAME@ -#define __db_rijndaelEncryptRound __db_rijndaelEncryptRound@DB_VERSION_UNIQUE_NAME@ -#define __db_rijndaelDecryptRound __db_rijndaelDecryptRound@DB_VERSION_UNIQUE_NAME@ -#define __db_makeKey __db_makeKey@DB_VERSION_UNIQUE_NAME@ -#define __db_cipherInit __db_cipherInit@DB_VERSION_UNIQUE_NAME@ -#define __db_blockEncrypt __db_blockEncrypt@DB_VERSION_UNIQUE_NAME@ -#define __db_padEncrypt __db_padEncrypt@DB_VERSION_UNIQUE_NAME@ -#define __db_blockDecrypt __db_blockDecrypt@DB_VERSION_UNIQUE_NAME@ -#define __db_padDecrypt __db_padDecrypt@DB_VERSION_UNIQUE_NAME@ -#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_new_id __dbreg_new_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_close_id __dbreg_close_id@DB_VERSION_UNIQUE_NAME@ -#define __dbreg_register_log __dbreg_register_log@DB_VERSION_UNIQUE_NAME@ -#define __dbreg_register_getpgnos __dbreg_register_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __dbreg_register_print __dbreg_register_print@DB_VERSION_UNIQUE_NAME@ -#define __dbreg_register_read __dbreg_register_read@DB_VERSION_UNIQUE_NAME@ -#define __dbreg_init_print __dbreg_init_print@DB_VERSION_UNIQUE_NAME@ -#define __dbreg_init_getpgnos __dbreg_init_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __dbreg_init_recover __dbreg_init_recover@DB_VERSION_UNIQUE_NAME@ -#define __dbreg_register_recover __dbreg_register_recover@DB_VERSION_UNIQUE_NAME@ -#define __dbreg_add_dbentry __dbreg_add_dbentry@DB_VERSION_UNIQUE_NAME@ -#define __dbreg_rem_dbentry __dbreg_rem_dbentry@DB_VERSION_UNIQUE_NAME@ -#define __dbreg_open_files __dbreg_open_files@DB_VERSION_UNIQUE_NAME@ -#define __dbreg_close_files __dbreg_close_files@DB_VERSION_UNIQUE_NAME@ -#define __dbreg_nofiles __dbreg_nofiles@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@ -#define __dbreg_id_to_fname __dbreg_id_to_fname@DB_VERSION_UNIQUE_NAME@ -#define __dbreg_fid_to_fname __dbreg_fid_to_fname@DB_VERSION_UNIQUE_NAME@ -#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 __dbreg_push_id __dbreg_push_id@DB_VERSION_UNIQUE_NAME@ -#define __dbreg_pop_id __dbreg_pop_id@DB_VERSION_UNIQUE_NAME@ -#define __dbreg_pluck_id __dbreg_pluck_id@DB_VERSION_UNIQUE_NAME@ -#define __dbreg_print_dblist __dbreg_print_dblist@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_shsizeof __db_shsizeof@DB_VERSION_UNIQUE_NAME@ -#define __db_shalloc_dump __db_shalloc_dump@DB_VERSION_UNIQUE_NAME@ -#define __db_tablesize __db_tablesize@DB_VERSION_UNIQUE_NAME@ -#define __db_hashinit __db_hashinit@DB_VERSION_UNIQUE_NAME@ -#define __db_fileinit __db_fileinit@DB_VERSION_UNIQUE_NAME@ -#define __db_overwrite __db_overwrite@DB_VERSION_UNIQUE_NAME@ -#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 __dbenv_open __dbenv_open@DB_VERSION_UNIQUE_NAME@ -#define __dbenv_remove __dbenv_remove@DB_VERSION_UNIQUE_NAME@ -#define __dbenv_close __dbenv_close@DB_VERSION_UNIQUE_NAME@ -#define __db_appname __db_appname@DB_VERSION_UNIQUE_NAME@ -#define __db_home __db_home@DB_VERSION_UNIQUE_NAME@ -#define __db_apprec __db_apprec@DB_VERSION_UNIQUE_NAME@ -#define __env_openfiles __env_openfiles@DB_VERSION_UNIQUE_NAME@ -#define __db_e_attach __db_e_attach@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_e_stat __db_e_stat@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 __fop_create_log __fop_create_log@DB_VERSION_UNIQUE_NAME@ -#define __fop_create_getpgnos __fop_create_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __fop_create_print __fop_create_print@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@ -#define __fop_remove_getpgnos __fop_remove_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __fop_remove_print __fop_remove_print@DB_VERSION_UNIQUE_NAME@ -#define __fop_remove_read __fop_remove_read@DB_VERSION_UNIQUE_NAME@ -#define __fop_write_log __fop_write_log@DB_VERSION_UNIQUE_NAME@ -#define __fop_write_getpgnos __fop_write_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __fop_write_print __fop_write_print@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_getpgnos __fop_rename_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __fop_rename_print __fop_rename_print@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_getpgnos __fop_file_remove_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __fop_file_remove_print __fop_file_remove_print@DB_VERSION_UNIQUE_NAME@ -#define __fop_file_remove_read __fop_file_remove_read@DB_VERSION_UNIQUE_NAME@ -#define __fop_init_print __fop_init_print@DB_VERSION_UNIQUE_NAME@ -#define __fop_init_getpgnos __fop_init_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __fop_init_recover __fop_init_recover@DB_VERSION_UNIQUE_NAME@ -#define __fop_create __fop_create@DB_VERSION_UNIQUE_NAME@ -#define __fop_remove __fop_remove@DB_VERSION_UNIQUE_NAME@ -#define __fop_write __fop_write@DB_VERSION_UNIQUE_NAME@ -#define __fop_rename __fop_rename@DB_VERSION_UNIQUE_NAME@ -#define __fop_create_recover __fop_create_recover@DB_VERSION_UNIQUE_NAME@ -#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_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@ -#define __fop_subdb_setup __fop_subdb_setup@DB_VERSION_UNIQUE_NAME@ -#define __fop_remove_setup __fop_remove_setup@DB_VERSION_UNIQUE_NAME@ -#define __fop_read_meta __fop_read_meta@DB_VERSION_UNIQUE_NAME@ -#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 __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 __ham_get_clist __ham_get_clist@DB_VERSION_UNIQUE_NAME@ -#define __ham_insdel_log __ham_insdel_log@DB_VERSION_UNIQUE_NAME@ -#define __ham_insdel_getpgnos __ham_insdel_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __ham_insdel_print __ham_insdel_print@DB_VERSION_UNIQUE_NAME@ -#define __ham_insdel_read __ham_insdel_read@DB_VERSION_UNIQUE_NAME@ -#define __ham_newpage_log __ham_newpage_log@DB_VERSION_UNIQUE_NAME@ -#define __ham_newpage_getpgnos __ham_newpage_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __ham_newpage_print __ham_newpage_print@DB_VERSION_UNIQUE_NAME@ -#define __ham_newpage_read __ham_newpage_read@DB_VERSION_UNIQUE_NAME@ -#define __ham_splitdata_log __ham_splitdata_log@DB_VERSION_UNIQUE_NAME@ -#define __ham_splitdata_getpgnos __ham_splitdata_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __ham_splitdata_print __ham_splitdata_print@DB_VERSION_UNIQUE_NAME@ -#define __ham_splitdata_read __ham_splitdata_read@DB_VERSION_UNIQUE_NAME@ -#define __ham_replace_log __ham_replace_log@DB_VERSION_UNIQUE_NAME@ -#define __ham_replace_getpgnos __ham_replace_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __ham_replace_print __ham_replace_print@DB_VERSION_UNIQUE_NAME@ -#define __ham_replace_read __ham_replace_read@DB_VERSION_UNIQUE_NAME@ -#define __ham_copypage_log __ham_copypage_log@DB_VERSION_UNIQUE_NAME@ -#define __ham_copypage_getpgnos __ham_copypage_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __ham_copypage_print __ham_copypage_print@DB_VERSION_UNIQUE_NAME@ -#define __ham_copypage_read __ham_copypage_read@DB_VERSION_UNIQUE_NAME@ -#define __ham_metagroup_log __ham_metagroup_log@DB_VERSION_UNIQUE_NAME@ -#define __ham_metagroup_getpgnos __ham_metagroup_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __ham_metagroup_print __ham_metagroup_print@DB_VERSION_UNIQUE_NAME@ -#define __ham_metagroup_read __ham_metagroup_read@DB_VERSION_UNIQUE_NAME@ -#define __ham_groupalloc_log __ham_groupalloc_log@DB_VERSION_UNIQUE_NAME@ -#define __ham_groupalloc_getpgnos __ham_groupalloc_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __ham_groupalloc_print __ham_groupalloc_print@DB_VERSION_UNIQUE_NAME@ -#define __ham_groupalloc_read __ham_groupalloc_read@DB_VERSION_UNIQUE_NAME@ -#define __ham_curadj_log __ham_curadj_log@DB_VERSION_UNIQUE_NAME@ -#define __ham_curadj_getpgnos __ham_curadj_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __ham_curadj_print __ham_curadj_print@DB_VERSION_UNIQUE_NAME@ -#define __ham_curadj_read __ham_curadj_read@DB_VERSION_UNIQUE_NAME@ -#define __ham_chgpg_log __ham_chgpg_log@DB_VERSION_UNIQUE_NAME@ -#define __ham_chgpg_getpgnos __ham_chgpg_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __ham_chgpg_print __ham_chgpg_print@DB_VERSION_UNIQUE_NAME@ -#define __ham_chgpg_read __ham_chgpg_read@DB_VERSION_UNIQUE_NAME@ -#define __ham_init_print __ham_init_print@DB_VERSION_UNIQUE_NAME@ -#define __ham_init_getpgnos __ham_init_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __ham_init_recover __ham_init_recover@DB_VERSION_UNIQUE_NAME@ -#define __ham_pgin __ham_pgin@DB_VERSION_UNIQUE_NAME@ -#define __ham_pgout __ham_pgout@DB_VERSION_UNIQUE_NAME@ -#define __ham_mswap __ham_mswap@DB_VERSION_UNIQUE_NAME@ -#define __ham_add_dup __ham_add_dup@DB_VERSION_UNIQUE_NAME@ -#define __ham_dup_convert __ham_dup_convert@DB_VERSION_UNIQUE_NAME@ -#define __ham_make_dup __ham_make_dup@DB_VERSION_UNIQUE_NAME@ -#define __ham_dsearch __ham_dsearch@DB_VERSION_UNIQUE_NAME@ -#define __ham_cprint __ham_cprint@DB_VERSION_UNIQUE_NAME@ -#define __ham_func2 __ham_func2@DB_VERSION_UNIQUE_NAME@ -#define __ham_func3 __ham_func3@DB_VERSION_UNIQUE_NAME@ -#define __ham_func4 __ham_func4@DB_VERSION_UNIQUE_NAME@ -#define __ham_func5 __ham_func5@DB_VERSION_UNIQUE_NAME@ -#define __ham_test __ham_test@DB_VERSION_UNIQUE_NAME@ -#define __ham_get_meta __ham_get_meta@DB_VERSION_UNIQUE_NAME@ -#define __ham_release_meta __ham_release_meta@DB_VERSION_UNIQUE_NAME@ -#define __ham_dirty_meta __ham_dirty_meta@DB_VERSION_UNIQUE_NAME@ -#define __ham_db_create __ham_db_create@DB_VERSION_UNIQUE_NAME@ -#define __ham_db_close __ham_db_close@DB_VERSION_UNIQUE_NAME@ -#define __ham_open __ham_open@DB_VERSION_UNIQUE_NAME@ -#define __ham_metachk __ham_metachk@DB_VERSION_UNIQUE_NAME@ -#define __ham_new_file __ham_new_file@DB_VERSION_UNIQUE_NAME@ -#define __ham_new_subdb __ham_new_subdb@DB_VERSION_UNIQUE_NAME@ -#define __ham_item __ham_item@DB_VERSION_UNIQUE_NAME@ -#define __ham_item_reset __ham_item_reset@DB_VERSION_UNIQUE_NAME@ -#define __ham_item_init __ham_item_init@DB_VERSION_UNIQUE_NAME@ -#define __ham_item_last __ham_item_last@DB_VERSION_UNIQUE_NAME@ -#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_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_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@ -#define __ham_lock_bucket __ham_lock_bucket@DB_VERSION_UNIQUE_NAME@ -#define __ham_dpair __ham_dpair@DB_VERSION_UNIQUE_NAME@ -#define __ham_insdel_recover __ham_insdel_recover@DB_VERSION_UNIQUE_NAME@ -#define __ham_newpage_recover __ham_newpage_recover@DB_VERSION_UNIQUE_NAME@ -#define __ham_replace_recover __ham_replace_recover@DB_VERSION_UNIQUE_NAME@ -#define __ham_splitdata_recover __ham_splitdata_recover@DB_VERSION_UNIQUE_NAME@ -#define __ham_copypage_recover __ham_copypage_recover@DB_VERSION_UNIQUE_NAME@ -#define __ham_metagroup_recover __ham_metagroup_recover@DB_VERSION_UNIQUE_NAME@ -#define __ham_groupalloc_recover __ham_groupalloc_recover@DB_VERSION_UNIQUE_NAME@ -#define __ham_curadj_recover __ham_curadj_recover@DB_VERSION_UNIQUE_NAME@ -#define __ham_chgpg_recover __ham_chgpg_recover@DB_VERSION_UNIQUE_NAME@ -#define __ham_reclaim __ham_reclaim@DB_VERSION_UNIQUE_NAME@ -#define __ham_truncate __ham_truncate@DB_VERSION_UNIQUE_NAME@ -#define __ham_stat __ham_stat@DB_VERSION_UNIQUE_NAME@ -#define __ham_traverse __ham_traverse@DB_VERSION_UNIQUE_NAME@ -#define __ham_30_hashmeta __ham_30_hashmeta@DB_VERSION_UNIQUE_NAME@ -#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_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@ -#define __ham_vrfy_hashing __ham_vrfy_hashing@DB_VERSION_UNIQUE_NAME@ -#define __ham_salvage __ham_salvage@DB_VERSION_UNIQUE_NAME@ -#define __ham_meta2pgset __ham_meta2pgset@DB_VERSION_UNIQUE_NAME@ -#define __db_chksum __db_chksum@DB_VERSION_UNIQUE_NAME@ -#define __db_derive_mac __db_derive_mac@DB_VERSION_UNIQUE_NAME@ -#define __db_check_chksum __db_check_chksum@DB_VERSION_UNIQUE_NAME@ -#define __db_SHA1Transform __db_SHA1Transform@DB_VERSION_UNIQUE_NAME@ -#define __db_SHA1Init __db_SHA1Init@DB_VERSION_UNIQUE_NAME@ -#define __db_SHA1Update __db_SHA1Update@DB_VERSION_UNIQUE_NAME@ -#define __db_SHA1Final __db_SHA1Final@DB_VERSION_UNIQUE_NAME@ -#define __lock_id __lock_id@DB_VERSION_UNIQUE_NAME@ -#define __lock_id_free __lock_id_free@DB_VERSION_UNIQUE_NAME@ -#define __lock_vec __lock_vec@DB_VERSION_UNIQUE_NAME@ -#define __lock_get __lock_get@DB_VERSION_UNIQUE_NAME@ -#define __lock_put __lock_put@DB_VERSION_UNIQUE_NAME@ -#define __lock_downgrade __lock_downgrade@DB_VERSION_UNIQUE_NAME@ -#define __lock_addfamilylocker __lock_addfamilylocker@DB_VERSION_UNIQUE_NAME@ -#define __lock_freefamilylocker __lock_freefamilylocker@DB_VERSION_UNIQUE_NAME@ -#define __lock_set_timeout __lock_set_timeout@DB_VERSION_UNIQUE_NAME@ -#define __lock_inherit_timeout __lock_inherit_timeout@DB_VERSION_UNIQUE_NAME@ -#define __lock_getlocker __lock_getlocker@DB_VERSION_UNIQUE_NAME@ -#define __lock_promote __lock_promote@DB_VERSION_UNIQUE_NAME@ -#define __lock_expired __lock_expired@DB_VERSION_UNIQUE_NAME@ -#define __lock_detect __lock_detect@DB_VERSION_UNIQUE_NAME@ -#define __lock_dbenv_create __lock_dbenv_create@DB_VERSION_UNIQUE_NAME@ -#define __lock_dbenv_close __lock_dbenv_close@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_region_destroy __lock_region_destroy@DB_VERSION_UNIQUE_NAME@ -#define __lock_id_set __lock_id_set@DB_VERSION_UNIQUE_NAME@ -#define __lock_stat __lock_stat@DB_VERSION_UNIQUE_NAME@ -#define __lock_dump_region __lock_dump_region@DB_VERSION_UNIQUE_NAME@ -#define __lock_printlock __lock_printlock@DB_VERSION_UNIQUE_NAME@ -#define __lock_cmp __lock_cmp@DB_VERSION_UNIQUE_NAME@ -#define __lock_locker_cmp __lock_locker_cmp@DB_VERSION_UNIQUE_NAME@ -#define __lock_ohash __lock_ohash@DB_VERSION_UNIQUE_NAME@ -#define __lock_lhash __lock_lhash@DB_VERSION_UNIQUE_NAME@ -#define __lock_locker_hash __lock_locker_hash@DB_VERSION_UNIQUE_NAME@ -#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_stat __log_stat@DB_VERSION_UNIQUE_NAME@ -#define __log_get_cached_ckp_lsn __log_get_cached_ckp_lsn@DB_VERSION_UNIQUE_NAME@ -#define __log_region_destroy __log_region_destroy@DB_VERSION_UNIQUE_NAME@ -#define __log_vtruncate __log_vtruncate@DB_VERSION_UNIQUE_NAME@ -#define __log_is_outdated __log_is_outdated@DB_VERSION_UNIQUE_NAME@ -#define __log_archive __log_archive@DB_VERSION_UNIQUE_NAME@ -#define __log_cursor __log_cursor@DB_VERSION_UNIQUE_NAME@ -#define __log_dbenv_create __log_dbenv_create@DB_VERSION_UNIQUE_NAME@ -#define __log_put __log_put@DB_VERSION_UNIQUE_NAME@ -#define __log_txn_lsn __log_txn_lsn@DB_VERSION_UNIQUE_NAME@ -#define __log_newfile __log_newfile@DB_VERSION_UNIQUE_NAME@ -#define __log_flush __log_flush@DB_VERSION_UNIQUE_NAME@ -#define __log_file __log_file@DB_VERSION_UNIQUE_NAME@ -#define __log_name __log_name@DB_VERSION_UNIQUE_NAME@ -#define __log_rep_put __log_rep_put@DB_VERSION_UNIQUE_NAME@ -#define __memp_alloc __memp_alloc@DB_VERSION_UNIQUE_NAME@ -#ifdef DIAGNOSTIC -#define __memp_check_order __memp_check_order@DB_VERSION_UNIQUE_NAME@ -#endif -#define __memp_bhwrite __memp_bhwrite@DB_VERSION_UNIQUE_NAME@ -#define __memp_pgread __memp_pgread@DB_VERSION_UNIQUE_NAME@ -#define __memp_pg __memp_pg@DB_VERSION_UNIQUE_NAME@ -#define __memp_bhfree __memp_bhfree@DB_VERSION_UNIQUE_NAME@ -#define __memp_fget __memp_fget@DB_VERSION_UNIQUE_NAME@ -#define __memp_fcreate __memp_fcreate@DB_VERSION_UNIQUE_NAME@ -#define __memp_fopen_int __memp_fopen_int@DB_VERSION_UNIQUE_NAME@ -#define __memp_fclose_int __memp_fclose_int@DB_VERSION_UNIQUE_NAME@ -#define __memp_mf_discard __memp_mf_discard@DB_VERSION_UNIQUE_NAME@ -#define __memp_fn __memp_fn@DB_VERSION_UNIQUE_NAME@ -#define __memp_fns __memp_fns@DB_VERSION_UNIQUE_NAME@ -#define __memp_fput __memp_fput@DB_VERSION_UNIQUE_NAME@ -#define __memp_fset __memp_fset@DB_VERSION_UNIQUE_NAME@ -#define __memp_dbenv_create __memp_dbenv_create@DB_VERSION_UNIQUE_NAME@ -#define __memp_open __memp_open@DB_VERSION_UNIQUE_NAME@ -#define __memp_dbenv_refresh __memp_dbenv_refresh@DB_VERSION_UNIQUE_NAME@ -#define __mpool_region_destroy __mpool_region_destroy@DB_VERSION_UNIQUE_NAME@ -#define __memp_nameop __memp_nameop@DB_VERSION_UNIQUE_NAME@ -#define __memp_register __memp_register@DB_VERSION_UNIQUE_NAME@ -#define __memp_stat __memp_stat@DB_VERSION_UNIQUE_NAME@ -#define __memp_dump_region __memp_dump_region@DB_VERSION_UNIQUE_NAME@ -#define __memp_stat_hash __memp_stat_hash@DB_VERSION_UNIQUE_NAME@ -#define __memp_sync __memp_sync@DB_VERSION_UNIQUE_NAME@ -#define __memp_fsync __memp_fsync@DB_VERSION_UNIQUE_NAME@ -#define __mp_xxx_fh __mp_xxx_fh@DB_VERSION_UNIQUE_NAME@ -#define __memp_sync_int __memp_sync_int@DB_VERSION_UNIQUE_NAME@ -#define __memp_trickle __memp_trickle@DB_VERSION_UNIQUE_NAME@ -#define __db_fcntl_mutex_init __db_fcntl_mutex_init@DB_VERSION_UNIQUE_NAME@ -#define __db_fcntl_mutex_lock __db_fcntl_mutex_lock@DB_VERSION_UNIQUE_NAME@ -#define __db_fcntl_mutex_unlock __db_fcntl_mutex_unlock@DB_VERSION_UNIQUE_NAME@ -#define __db_fcntl_mutex_destroy __db_fcntl_mutex_destroy@DB_VERSION_UNIQUE_NAME@ -#define __db_pthread_mutex_init __db_pthread_mutex_init@DB_VERSION_UNIQUE_NAME@ -#define __db_pthread_mutex_lock __db_pthread_mutex_lock@DB_VERSION_UNIQUE_NAME@ -#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 __db_tas_mutex_init __db_tas_mutex_init@DB_VERSION_UNIQUE_NAME@ -#define __db_tas_mutex_lock __db_tas_mutex_lock@DB_VERSION_UNIQUE_NAME@ -#define __db_tas_mutex_unlock __db_tas_mutex_unlock@DB_VERSION_UNIQUE_NAME@ -#define __db_tas_mutex_destroy __db_tas_mutex_destroy@DB_VERSION_UNIQUE_NAME@ -#define __db_win32_mutex_init __db_win32_mutex_init@DB_VERSION_UNIQUE_NAME@ -#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 __db_mutex_setup __db_mutex_setup@DB_VERSION_UNIQUE_NAME@ -#define __db_mutex_free __db_mutex_free@DB_VERSION_UNIQUE_NAME@ -#define __db_shreg_locks_clear __db_shreg_locks_clear@DB_VERSION_UNIQUE_NAME@ -#define __db_shreg_locks_destroy __db_shreg_locks_destroy@DB_VERSION_UNIQUE_NAME@ -#define __db_shreg_mutex_init __db_shreg_mutex_init@DB_VERSION_UNIQUE_NAME@ -#define __db_shreg_maintinit __db_shreg_maintinit@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@ -#define __os_ufree __os_ufree@DB_VERSION_UNIQUE_NAME@ -#define __os_strdup __os_strdup@DB_VERSION_UNIQUE_NAME@ -#define __os_calloc __os_calloc@DB_VERSION_UNIQUE_NAME@ -#define __os_malloc __os_malloc@DB_VERSION_UNIQUE_NAME@ -#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_fs_notzero __os_fs_notzero@DB_VERSION_UNIQUE_NAME@ -#define __os_dirlist __os_dirlist@DB_VERSION_UNIQUE_NAME@ -#define __os_dirfree __os_dirfree@DB_VERSION_UNIQUE_NAME@ -#define __os_get_errno_ret_zero __os_get_errno_ret_zero@DB_VERSION_UNIQUE_NAME@ -#define __os_get_errno __os_get_errno@DB_VERSION_UNIQUE_NAME@ -#define __os_set_errno __os_set_errno@DB_VERSION_UNIQUE_NAME@ -#define __os_fileid __os_fileid@DB_VERSION_UNIQUE_NAME@ -#define __os_fsync __os_fsync@DB_VERSION_UNIQUE_NAME@ -#define __os_openhandle __os_openhandle@DB_VERSION_UNIQUE_NAME@ -#define __os_closehandle __os_closehandle@DB_VERSION_UNIQUE_NAME@ -#define __os_id __os_id@DB_VERSION_UNIQUE_NAME@ -#define __os_r_sysattach __os_r_sysattach@DB_VERSION_UNIQUE_NAME@ -#define __os_r_sysdetach __os_r_sysdetach@DB_VERSION_UNIQUE_NAME@ -#define __os_mapfile __os_mapfile@DB_VERSION_UNIQUE_NAME@ -#define __os_unmapfile __os_unmapfile@DB_VERSION_UNIQUE_NAME@ -#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@ -#ifdef HAVE_QNX -#define __os_shmname __os_shmname@DB_VERSION_UNIQUE_NAME@ -#endif -#define __os_r_attach __os_r_attach@DB_VERSION_UNIQUE_NAME@ -#define __os_r_detach __os_r_detach@DB_VERSION_UNIQUE_NAME@ -#define __os_rename __os_rename@DB_VERSION_UNIQUE_NAME@ -#define __os_isroot __os_isroot@DB_VERSION_UNIQUE_NAME@ -#define __db_rpath __db_rpath@DB_VERSION_UNIQUE_NAME@ -#define __os_io __os_io@DB_VERSION_UNIQUE_NAME@ -#define __os_read __os_read@DB_VERSION_UNIQUE_NAME@ -#define __os_write __os_write@DB_VERSION_UNIQUE_NAME@ -#define __os_seek __os_seek@DB_VERSION_UNIQUE_NAME@ -#define __os_sleep __os_sleep@DB_VERSION_UNIQUE_NAME@ -#define __os_spin __os_spin@DB_VERSION_UNIQUE_NAME@ -#define __os_yield __os_yield@DB_VERSION_UNIQUE_NAME@ -#define __os_exists __os_exists@DB_VERSION_UNIQUE_NAME@ -#define __os_ioinfo __os_ioinfo@DB_VERSION_UNIQUE_NAME@ -#define __os_tmpdir __os_tmpdir@DB_VERSION_UNIQUE_NAME@ -#define __os_region_unlink __os_region_unlink@DB_VERSION_UNIQUE_NAME@ -#define __os_unlink __os_unlink@DB_VERSION_UNIQUE_NAME@ -#if defined(DB_WIN32) -#define __os_win32_errno __os_win32_errno@DB_VERSION_UNIQUE_NAME@ -#endif -#define __os_fsync __os_fsync@DB_VERSION_UNIQUE_NAME@ -#define __os_openhandle __os_openhandle@DB_VERSION_UNIQUE_NAME@ -#define __os_closehandle __os_closehandle@DB_VERSION_UNIQUE_NAME@ -#define __os_io __os_io@DB_VERSION_UNIQUE_NAME@ -#define __os_read __os_read@DB_VERSION_UNIQUE_NAME@ -#define __os_write __os_write@DB_VERSION_UNIQUE_NAME@ -#define __os_exists __os_exists@DB_VERSION_UNIQUE_NAME@ -#define __os_ioinfo __os_ioinfo@DB_VERSION_UNIQUE_NAME@ -#define __os_is_winnt __os_is_winnt@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 __qam_truncate __qam_truncate@DB_VERSION_UNIQUE_NAME@ -#define __qam_incfirst_log __qam_incfirst_log@DB_VERSION_UNIQUE_NAME@ -#define __qam_incfirst_getpgnos __qam_incfirst_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __qam_incfirst_print __qam_incfirst_print@DB_VERSION_UNIQUE_NAME@ -#define __qam_incfirst_read __qam_incfirst_read@DB_VERSION_UNIQUE_NAME@ -#define __qam_mvptr_log __qam_mvptr_log@DB_VERSION_UNIQUE_NAME@ -#define __qam_mvptr_getpgnos __qam_mvptr_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __qam_mvptr_print __qam_mvptr_print@DB_VERSION_UNIQUE_NAME@ -#define __qam_mvptr_read __qam_mvptr_read@DB_VERSION_UNIQUE_NAME@ -#define __qam_del_log __qam_del_log@DB_VERSION_UNIQUE_NAME@ -#define __qam_del_getpgnos __qam_del_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __qam_del_print __qam_del_print@DB_VERSION_UNIQUE_NAME@ -#define __qam_del_read __qam_del_read@DB_VERSION_UNIQUE_NAME@ -#define __qam_add_log __qam_add_log@DB_VERSION_UNIQUE_NAME@ -#define __qam_add_getpgnos __qam_add_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __qam_add_print __qam_add_print@DB_VERSION_UNIQUE_NAME@ -#define __qam_add_read __qam_add_read@DB_VERSION_UNIQUE_NAME@ -#define __qam_delext_log __qam_delext_log@DB_VERSION_UNIQUE_NAME@ -#define __qam_delext_getpgnos __qam_delext_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __qam_delext_print __qam_delext_print@DB_VERSION_UNIQUE_NAME@ -#define __qam_delext_read __qam_delext_read@DB_VERSION_UNIQUE_NAME@ -#define __qam_init_print __qam_init_print@DB_VERSION_UNIQUE_NAME@ -#define __qam_init_getpgnos __qam_init_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __qam_init_recover __qam_init_recover@DB_VERSION_UNIQUE_NAME@ -#define __qam_mswap __qam_mswap@DB_VERSION_UNIQUE_NAME@ -#define __qam_pgin_out __qam_pgin_out@DB_VERSION_UNIQUE_NAME@ -#define __qam_fprobe __qam_fprobe@DB_VERSION_UNIQUE_NAME@ -#define __qam_fclose __qam_fclose@DB_VERSION_UNIQUE_NAME@ -#define __qam_fremove __qam_fremove@DB_VERSION_UNIQUE_NAME@ -#define __qam_sync __qam_sync@DB_VERSION_UNIQUE_NAME@ -#define __qam_gen_filelist __qam_gen_filelist@DB_VERSION_UNIQUE_NAME@ -#define __qam_extent_names __qam_extent_names@DB_VERSION_UNIQUE_NAME@ -#define __qam_exid __qam_exid@DB_VERSION_UNIQUE_NAME@ -#define __qam_db_create __qam_db_create@DB_VERSION_UNIQUE_NAME@ -#define __qam_db_close __qam_db_close@DB_VERSION_UNIQUE_NAME@ -#define __db_prqueue __db_prqueue@DB_VERSION_UNIQUE_NAME@ -#define __qam_remove __qam_remove@DB_VERSION_UNIQUE_NAME@ -#define __qam_rename __qam_rename@DB_VERSION_UNIQUE_NAME@ -#define __qam_open __qam_open@DB_VERSION_UNIQUE_NAME@ -#define __qam_metachk __qam_metachk@DB_VERSION_UNIQUE_NAME@ -#define __qam_new_file __qam_new_file@DB_VERSION_UNIQUE_NAME@ -#define __qam_incfirst_recover __qam_incfirst_recover@DB_VERSION_UNIQUE_NAME@ -#define __qam_mvptr_recover __qam_mvptr_recover@DB_VERSION_UNIQUE_NAME@ -#define __qam_del_recover __qam_del_recover@DB_VERSION_UNIQUE_NAME@ -#define __qam_delext_recover __qam_delext_recover@DB_VERSION_UNIQUE_NAME@ -#define __qam_add_recover __qam_add_recover@DB_VERSION_UNIQUE_NAME@ -#define __qam_stat __qam_stat@DB_VERSION_UNIQUE_NAME@ -#define __qam_31_qammeta __qam_31_qammeta@DB_VERSION_UNIQUE_NAME@ -#define __qam_32_qammeta __qam_32_qammeta@DB_VERSION_UNIQUE_NAME@ -#define __qam_vrfy_meta __qam_vrfy_meta@DB_VERSION_UNIQUE_NAME@ -#define __qam_vrfy_data __qam_vrfy_data@DB_VERSION_UNIQUE_NAME@ -#define __qam_vrfy_structure __qam_vrfy_structure@DB_VERSION_UNIQUE_NAME@ -#define __rep_dbenv_create __rep_dbenv_create@DB_VERSION_UNIQUE_NAME@ -#define __rep_process_message __rep_process_message@DB_VERSION_UNIQUE_NAME@ -#define __rep_process_txn __rep_process_txn@DB_VERSION_UNIQUE_NAME@ -#define __rep_region_init __rep_region_init@DB_VERSION_UNIQUE_NAME@ -#define __rep_region_destroy __rep_region_destroy@DB_VERSION_UNIQUE_NAME@ -#define __rep_dbenv_close __rep_dbenv_close@DB_VERSION_UNIQUE_NAME@ -#define __rep_preclose __rep_preclose@DB_VERSION_UNIQUE_NAME@ -#define __rep_check_alloc __rep_check_alloc@DB_VERSION_UNIQUE_NAME@ -#define __rep_send_message __rep_send_message@DB_VERSION_UNIQUE_NAME@ -#define __rep_new_master __rep_new_master@DB_VERSION_UNIQUE_NAME@ -#define __rep_lockpgno_init __rep_lockpgno_init@DB_VERSION_UNIQUE_NAME@ -#define __rep_unlockpages __rep_unlockpages@DB_VERSION_UNIQUE_NAME@ -#define __rep_lockpages __rep_lockpages@DB_VERSION_UNIQUE_NAME@ -#define __rep_is_client __rep_is_client@DB_VERSION_UNIQUE_NAME@ -#define __rep_send_vote __rep_send_vote@DB_VERSION_UNIQUE_NAME@ -#define __rep_grow_sites __rep_grow_sites@DB_VERSION_UNIQUE_NAME@ -#define __rep_print_message __rep_print_message@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_envrpcserver __dbcl_envrpcserver@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_env_open_wrap __dbcl_env_open_wrap@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_open_wrap __dbcl_db_open_wrap@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_refresh __dbcl_refresh@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_retcopy __dbcl_retcopy@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_txn_end __dbcl_txn_end@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_txn_setup __dbcl_txn_setup@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_c_refresh __dbcl_c_refresh@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_c_setup __dbcl_c_setup@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_dbclose_common __dbcl_dbclose_common@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_env_alloc __dbcl_env_alloc@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_set_app_dispatch __dbcl_set_app_dispatch@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_env_cachesize __dbcl_env_cachesize@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_env_close __dbcl_env_close@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_env_create __dbcl_env_create@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_set_data_dir __dbcl_set_data_dir@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_env_dbremove __dbcl_env_dbremove@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_env_dbrename __dbcl_env_dbrename@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_env_encrypt __dbcl_env_encrypt@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_env_set_feedback __dbcl_env_set_feedback@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_env_flags __dbcl_env_flags@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_set_lg_bsize __dbcl_set_lg_bsize@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_set_lg_dir __dbcl_set_lg_dir@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_set_lg_max __dbcl_set_lg_max@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_set_lg_regionmax __dbcl_set_lg_regionmax@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_set_lk_conflict __dbcl_set_lk_conflict@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_set_lk_detect __dbcl_set_lk_detect@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_set_lk_max __dbcl_set_lk_max@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_set_lk_max_locks __dbcl_set_lk_max_locks@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_set_lk_max_lockers __dbcl_set_lk_max_lockers@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_set_lk_max_objects __dbcl_set_lk_max_objects@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_set_mp_mmapsize __dbcl_set_mp_mmapsize@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_env_open __dbcl_env_open@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_env_paniccall __dbcl_env_paniccall@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_env_remove __dbcl_env_remove@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_set_shm_key __dbcl_set_shm_key@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_set_tas_spins __dbcl_set_tas_spins@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_set_timeout __dbcl_set_timeout@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_set_tmp_dir __dbcl_set_tmp_dir@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_set_tx_max __dbcl_set_tx_max@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_set_tx_timestamp __dbcl_set_tx_timestamp@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_set_verbose __dbcl_set_verbose@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_txn_abort __dbcl_txn_abort@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_txn_begin __dbcl_txn_begin@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_txn_checkpoint __dbcl_txn_checkpoint@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@ -#define __dbcl_txn_prepare __dbcl_txn_prepare@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_txn_recover __dbcl_txn_recover@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_txn_stat __dbcl_txn_stat@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_txn_timeout __dbcl_txn_timeout@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_rep_elect __dbcl_rep_elect@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_rep_flush __dbcl_rep_flush@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_rep_process_message __dbcl_rep_process_message@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_rep_set_limit __dbcl_rep_set_limit@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_rep_set_request __dbcl_rep_set_request@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_rep_set_rep_transport __dbcl_rep_set_rep_transport@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_rep_start __dbcl_rep_start@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_rep_stat __dbcl_rep_stat@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_alloc __dbcl_db_alloc@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_associate __dbcl_db_associate@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_bt_compare __dbcl_db_bt_compare@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_bt_maxkey __dbcl_db_bt_maxkey@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_bt_minkey __dbcl_db_bt_minkey@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_bt_prefix __dbcl_db_bt_prefix@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_set_append_recno __dbcl_db_set_append_recno@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_cache_priority __dbcl_db_cache_priority@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_cachesize __dbcl_db_cachesize@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_close __dbcl_db_close@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_create __dbcl_db_create@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_del __dbcl_db_del@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_dup_compare __dbcl_db_dup_compare@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_encrypt __dbcl_db_encrypt@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_extentsize __dbcl_db_extentsize@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_fd __dbcl_db_fd@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_feedback __dbcl_db_feedback@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_flags __dbcl_db_flags@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_get __dbcl_db_get@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_h_ffactor __dbcl_db_h_ffactor@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_h_hash __dbcl_db_h_hash@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_h_nelem __dbcl_db_h_nelem@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_key_range __dbcl_db_key_range@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_lorder __dbcl_db_lorder@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_open __dbcl_db_open@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_pagesize __dbcl_db_pagesize@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_panic __dbcl_db_panic@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_pget __dbcl_db_pget@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_put __dbcl_db_put@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_re_delim __dbcl_db_re_delim@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_re_len __dbcl_db_re_len@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_re_pad __dbcl_db_re_pad@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_re_source __dbcl_db_re_source@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_remove __dbcl_db_remove@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_rename __dbcl_db_rename@DB_VERSION_UNIQUE_NAME@ -#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_db_upgrade __dbcl_db_upgrade@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_verify __dbcl_db_verify@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_cursor __dbcl_db_cursor@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_join __dbcl_db_join@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_pget __dbcl_dbc_pget@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_dbc_put __dbcl_dbc_put@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_lock_detect __dbcl_lock_detect@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_lock_get __dbcl_lock_get@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_lock_id __dbcl_lock_id@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_lock_id_free __dbcl_lock_id_free@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_lock_put __dbcl_lock_put@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_lock_stat __dbcl_lock_stat@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_lock_vec __dbcl_lock_vec@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_log_archive __dbcl_log_archive@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_log_cursor __dbcl_log_cursor@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_log_file __dbcl_log_file@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_log_flush __dbcl_log_flush@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_log_put __dbcl_log_put@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_log_stat __dbcl_log_stat@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_memp_fcreate __dbcl_memp_fcreate@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_memp_register __dbcl_memp_register@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_memp_stat __dbcl_memp_stat@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_memp_sync __dbcl_memp_sync@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_memp_trickle __dbcl_memp_trickle@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_env_close_ret __dbcl_env_close_ret@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_env_create_ret __dbcl_env_create_ret@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_env_open_ret __dbcl_env_open_ret@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_env_remove_ret __dbcl_env_remove_ret@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_txn_abort_ret __dbcl_txn_abort_ret@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_txn_begin_ret __dbcl_txn_begin_ret@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_txn_commit_ret __dbcl_txn_commit_ret@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_txn_discard_ret __dbcl_txn_discard_ret@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_txn_recover_ret __dbcl_txn_recover_ret@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_close_ret __dbcl_db_close_ret@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_create_ret __dbcl_db_create_ret@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_get_ret __dbcl_db_get_ret@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_key_range_ret __dbcl_db_key_range_ret@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_open_ret __dbcl_db_open_ret@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_pget_ret __dbcl_db_pget_ret@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_put_ret __dbcl_db_put_ret@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_remove_ret __dbcl_db_remove_ret@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_rename_ret __dbcl_db_rename_ret@DB_VERSION_UNIQUE_NAME@ -#define __dbcl_db_stat_ret __dbcl_db_stat_ret@DB_VERSION_UNIQUE_NAME@ -#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_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_cachesize_proc __env_cachesize_proc@DB_VERSION_UNIQUE_NAME@ -#define __env_close_proc __env_close_proc@DB_VERSION_UNIQUE_NAME@ -#define __env_create_proc __env_create_proc@DB_VERSION_UNIQUE_NAME@ -#define __env_dbremove_proc __env_dbremove_proc@DB_VERSION_UNIQUE_NAME@ -#define __env_dbrename_proc __env_dbrename_proc@DB_VERSION_UNIQUE_NAME@ -#define __env_encrypt_proc __env_encrypt_proc@DB_VERSION_UNIQUE_NAME@ -#define __env_flags_proc __env_flags_proc@DB_VERSION_UNIQUE_NAME@ -#define __env_open_proc __env_open_proc@DB_VERSION_UNIQUE_NAME@ -#define __env_remove_proc __env_remove_proc@DB_VERSION_UNIQUE_NAME@ -#define __txn_abort_proc __txn_abort_proc@DB_VERSION_UNIQUE_NAME@ -#define __txn_begin_proc __txn_begin_proc@DB_VERSION_UNIQUE_NAME@ -#define __txn_commit_proc __txn_commit_proc@DB_VERSION_UNIQUE_NAME@ -#define __txn_discard_proc __txn_discard_proc@DB_VERSION_UNIQUE_NAME@ -#define __txn_prepare_proc __txn_prepare_proc@DB_VERSION_UNIQUE_NAME@ -#define __txn_recover_proc __txn_recover_proc@DB_VERSION_UNIQUE_NAME@ -#define __db_bt_maxkey_proc __db_bt_maxkey_proc@DB_VERSION_UNIQUE_NAME@ -#define __db_associate_proc __db_associate_proc@DB_VERSION_UNIQUE_NAME@ -#define __db_bt_minkey_proc __db_bt_minkey_proc@DB_VERSION_UNIQUE_NAME@ -#define __db_close_proc __db_close_proc@DB_VERSION_UNIQUE_NAME@ -#define __db_create_proc __db_create_proc@DB_VERSION_UNIQUE_NAME@ -#define __db_del_proc __db_del_proc@DB_VERSION_UNIQUE_NAME@ -#define __db_encrypt_proc __db_encrypt_proc@DB_VERSION_UNIQUE_NAME@ -#define __db_extentsize_proc __db_extentsize_proc@DB_VERSION_UNIQUE_NAME@ -#define __db_flags_proc __db_flags_proc@DB_VERSION_UNIQUE_NAME@ -#define __db_get_proc __db_get_proc@DB_VERSION_UNIQUE_NAME@ -#define __db_h_ffactor_proc __db_h_ffactor_proc@DB_VERSION_UNIQUE_NAME@ -#define __db_h_nelem_proc __db_h_nelem_proc@DB_VERSION_UNIQUE_NAME@ -#define __db_key_range_proc __db_key_range_proc@DB_VERSION_UNIQUE_NAME@ -#define __db_lorder_proc __db_lorder_proc@DB_VERSION_UNIQUE_NAME@ -#define __db_open_proc __db_open_proc@DB_VERSION_UNIQUE_NAME@ -#define __db_pagesize_proc __db_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_re_delim_proc __db_re_delim_proc@DB_VERSION_UNIQUE_NAME@ -#define __db_re_len_proc __db_re_len_proc@DB_VERSION_UNIQUE_NAME@ -#define __db_re_pad_proc __db_re_pad_proc@DB_VERSION_UNIQUE_NAME@ -#define __db_remove_proc __db_remove_proc@DB_VERSION_UNIQUE_NAME@ -#define __db_rename_proc __db_rename_proc@DB_VERSION_UNIQUE_NAME@ -#define __db_stat_proc __db_stat_proc@DB_VERSION_UNIQUE_NAME@ -#define __db_sync_proc __db_sync_proc@DB_VERSION_UNIQUE_NAME@ -#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_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 __dbsrv_settimeout __dbsrv_settimeout@DB_VERSION_UNIQUE_NAME@ -#define __dbsrv_timeout __dbsrv_timeout@DB_VERSION_UNIQUE_NAME@ -#define __dbclear_ctp __dbclear_ctp@DB_VERSION_UNIQUE_NAME@ -#define __dbdel_ctp __dbdel_ctp@DB_VERSION_UNIQUE_NAME@ -#define new_ct_ent new_ct_ent@DB_VERSION_UNIQUE_NAME@ -#define get_tableent get_tableent@DB_VERSION_UNIQUE_NAME@ -#define __dbsrv_sharedb __dbsrv_sharedb@DB_VERSION_UNIQUE_NAME@ -#define __dbsrv_shareenv __dbsrv_shareenv@DB_VERSION_UNIQUE_NAME@ -#define __dbsrv_active __dbsrv_active@DB_VERSION_UNIQUE_NAME@ -#define __db_close_int __db_close_int@DB_VERSION_UNIQUE_NAME@ -#define __dbc_close_int __dbc_close_int@DB_VERSION_UNIQUE_NAME@ -#define __dbenv_close_int __dbenv_close_int@DB_VERSION_UNIQUE_NAME@ -#define get_home get_home@DB_VERSION_UNIQUE_NAME@ -#define bdb_HCommand bdb_HCommand@DB_VERSION_UNIQUE_NAME@ -#if DB_DBM_HSEARCH != 0 -#define bdb_NdbmOpen bdb_NdbmOpen@DB_VERSION_UNIQUE_NAME@ -#endif -#if DB_DBM_HSEARCH != 0 -#define bdb_DbmCommand bdb_DbmCommand@DB_VERSION_UNIQUE_NAME@ -#endif -#define ndbm_Cmd ndbm_Cmd@DB_VERSION_UNIQUE_NAME@ -#define _DbInfoDelete _DbInfoDelete@DB_VERSION_UNIQUE_NAME@ -#define db_Cmd db_Cmd@DB_VERSION_UNIQUE_NAME@ -#define dbc_Cmd dbc_Cmd@DB_VERSION_UNIQUE_NAME@ -#define env_Cmd env_Cmd@DB_VERSION_UNIQUE_NAME@ -#define tcl_EnvRemove tcl_EnvRemove@DB_VERSION_UNIQUE_NAME@ -#define tcl_EnvVerbose tcl_EnvVerbose@DB_VERSION_UNIQUE_NAME@ -#define tcl_EnvAttr tcl_EnvAttr@DB_VERSION_UNIQUE_NAME@ -#define tcl_EnvTest tcl_EnvTest@DB_VERSION_UNIQUE_NAME@ -#define _NewInfo _NewInfo@DB_VERSION_UNIQUE_NAME@ -#define _NameToPtr _NameToPtr@DB_VERSION_UNIQUE_NAME@ -#define _PtrToInfo _PtrToInfo@DB_VERSION_UNIQUE_NAME@ -#define _NameToInfo _NameToInfo@DB_VERSION_UNIQUE_NAME@ -#define _SetInfoData _SetInfoData@DB_VERSION_UNIQUE_NAME@ -#define _DeleteInfo _DeleteInfo@DB_VERSION_UNIQUE_NAME@ -#define _SetListElem _SetListElem@DB_VERSION_UNIQUE_NAME@ -#define _SetListElemInt _SetListElemInt@DB_VERSION_UNIQUE_NAME@ -#define _SetListRecnoElem _SetListRecnoElem@DB_VERSION_UNIQUE_NAME@ -#define _Set3DBTList _Set3DBTList@DB_VERSION_UNIQUE_NAME@ -#define _SetMultiList _SetMultiList@DB_VERSION_UNIQUE_NAME@ -#define _GetGlobPrefix _GetGlobPrefix@DB_VERSION_UNIQUE_NAME@ -#define _ReturnSetup _ReturnSetup@DB_VERSION_UNIQUE_NAME@ -#define _ErrorSetup _ErrorSetup@DB_VERSION_UNIQUE_NAME@ -#define _ErrorFunc _ErrorFunc@DB_VERSION_UNIQUE_NAME@ -#define _GetLsn _GetLsn@DB_VERSION_UNIQUE_NAME@ -#define _GetUInt32 _GetUInt32@DB_VERSION_UNIQUE_NAME@ -#define _GetFlagsList _GetFlagsList@DB_VERSION_UNIQUE_NAME@ -#define _debug_check _debug_check@DB_VERSION_UNIQUE_NAME@ -#define _CopyObjBytes _CopyObjBytes@DB_VERSION_UNIQUE_NAME@ -#define tcl_LockDetect tcl_LockDetect@DB_VERSION_UNIQUE_NAME@ -#define tcl_LockGet tcl_LockGet@DB_VERSION_UNIQUE_NAME@ -#define tcl_LockStat tcl_LockStat@DB_VERSION_UNIQUE_NAME@ -#define tcl_LockTimeout tcl_LockTimeout@DB_VERSION_UNIQUE_NAME@ -#define tcl_LockVec tcl_LockVec@DB_VERSION_UNIQUE_NAME@ -#define tcl_LogArchive tcl_LogArchive@DB_VERSION_UNIQUE_NAME@ -#define tcl_LogCompare tcl_LogCompare@DB_VERSION_UNIQUE_NAME@ -#define tcl_LogFile tcl_LogFile@DB_VERSION_UNIQUE_NAME@ -#define tcl_LogFlush tcl_LogFlush@DB_VERSION_UNIQUE_NAME@ -#define tcl_LogGet tcl_LogGet@DB_VERSION_UNIQUE_NAME@ -#define tcl_LogPut tcl_LogPut@DB_VERSION_UNIQUE_NAME@ -#define tcl_LogStat tcl_LogStat@DB_VERSION_UNIQUE_NAME@ -#define logc_Cmd logc_Cmd@DB_VERSION_UNIQUE_NAME@ -#define _MpInfoDelete _MpInfoDelete@DB_VERSION_UNIQUE_NAME@ -#define tcl_MpSync tcl_MpSync@DB_VERSION_UNIQUE_NAME@ -#define tcl_MpTrickle tcl_MpTrickle@DB_VERSION_UNIQUE_NAME@ -#define tcl_Mp tcl_Mp@DB_VERSION_UNIQUE_NAME@ -#define tcl_MpStat tcl_MpStat@DB_VERSION_UNIQUE_NAME@ -#define tcl_RepElect tcl_RepElect@DB_VERSION_UNIQUE_NAME@ -#define tcl_RepFlush tcl_RepFlush@DB_VERSION_UNIQUE_NAME@ -#define tcl_RepLimit tcl_RepLimit@DB_VERSION_UNIQUE_NAME@ -#define tcl_RepRequest tcl_RepRequest@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 _TxnInfoDelete _TxnInfoDelete@DB_VERSION_UNIQUE_NAME@ -#define tcl_TxnCheckpoint tcl_TxnCheckpoint@DB_VERSION_UNIQUE_NAME@ -#define tcl_Txn tcl_Txn@DB_VERSION_UNIQUE_NAME@ -#define tcl_TxnStat tcl_TxnStat@DB_VERSION_UNIQUE_NAME@ -#define tcl_TxnTimeout tcl_TxnTimeout@DB_VERSION_UNIQUE_NAME@ -#define tcl_TxnRecover tcl_TxnRecover@DB_VERSION_UNIQUE_NAME@ -#define bdb_RandCommand bdb_RandCommand@DB_VERSION_UNIQUE_NAME@ -#define tcl_Mutex tcl_Mutex@DB_VERSION_UNIQUE_NAME@ -#define __txn_begin __txn_begin@DB_VERSION_UNIQUE_NAME@ -#define __txn_xa_begin __txn_xa_begin@DB_VERSION_UNIQUE_NAME@ -#define __txn_compensate_begin __txn_compensate_begin@DB_VERSION_UNIQUE_NAME@ -#define __txn_commit __txn_commit@DB_VERSION_UNIQUE_NAME@ -#define __txn_abort __txn_abort@DB_VERSION_UNIQUE_NAME@ -#define __txn_discard __txn_discard@DB_VERSION_UNIQUE_NAME@ -#define __txn_prepare __txn_prepare@DB_VERSION_UNIQUE_NAME@ -#define __txn_id __txn_id@DB_VERSION_UNIQUE_NAME@ -#define __txn_checkpoint __txn_checkpoint@DB_VERSION_UNIQUE_NAME@ -#define __txn_getckp __txn_getckp@DB_VERSION_UNIQUE_NAME@ -#define __txn_activekids __txn_activekids@DB_VERSION_UNIQUE_NAME@ -#define __txn_force_abort __txn_force_abort@DB_VERSION_UNIQUE_NAME@ -#define __txn_preclose __txn_preclose@DB_VERSION_UNIQUE_NAME@ -#define __txn_reset __txn_reset@DB_VERSION_UNIQUE_NAME@ -#define __txn_regop_log __txn_regop_log@DB_VERSION_UNIQUE_NAME@ -#define __txn_regop_getpgnos __txn_regop_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __txn_regop_print __txn_regop_print@DB_VERSION_UNIQUE_NAME@ -#define __txn_regop_read __txn_regop_read@DB_VERSION_UNIQUE_NAME@ -#define __txn_ckp_log __txn_ckp_log@DB_VERSION_UNIQUE_NAME@ -#define __txn_ckp_getpgnos __txn_ckp_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __txn_ckp_print __txn_ckp_print@DB_VERSION_UNIQUE_NAME@ -#define __txn_ckp_read __txn_ckp_read@DB_VERSION_UNIQUE_NAME@ -#define __txn_child_log __txn_child_log@DB_VERSION_UNIQUE_NAME@ -#define __txn_child_getpgnos __txn_child_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __txn_child_print __txn_child_print@DB_VERSION_UNIQUE_NAME@ -#define __txn_child_read __txn_child_read@DB_VERSION_UNIQUE_NAME@ -#define __txn_xa_regop_log __txn_xa_regop_log@DB_VERSION_UNIQUE_NAME@ -#define __txn_xa_regop_getpgnos __txn_xa_regop_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __txn_xa_regop_print __txn_xa_regop_print@DB_VERSION_UNIQUE_NAME@ -#define __txn_xa_regop_read __txn_xa_regop_read@DB_VERSION_UNIQUE_NAME@ -#define __txn_recycle_log __txn_recycle_log@DB_VERSION_UNIQUE_NAME@ -#define __txn_recycle_getpgnos __txn_recycle_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __txn_recycle_print __txn_recycle_print@DB_VERSION_UNIQUE_NAME@ -#define __txn_recycle_read __txn_recycle_read@DB_VERSION_UNIQUE_NAME@ -#define __txn_init_print __txn_init_print@DB_VERSION_UNIQUE_NAME@ -#define __txn_init_getpgnos __txn_init_getpgnos@DB_VERSION_UNIQUE_NAME@ -#define __txn_init_recover __txn_init_recover@DB_VERSION_UNIQUE_NAME@ -#define __txn_dbenv_create __txn_dbenv_create@DB_VERSION_UNIQUE_NAME@ -#define __txn_regop_recover __txn_regop_recover@DB_VERSION_UNIQUE_NAME@ -#define __txn_xa_regop_recover __txn_xa_regop_recover@DB_VERSION_UNIQUE_NAME@ -#define __txn_ckp_recover __txn_ckp_recover@DB_VERSION_UNIQUE_NAME@ -#define __txn_child_recover __txn_child_recover@DB_VERSION_UNIQUE_NAME@ -#define __txn_restore_txn __txn_restore_txn@DB_VERSION_UNIQUE_NAME@ -#define __txn_recycle_recover __txn_recycle_recover@DB_VERSION_UNIQUE_NAME@ -#define __txn_continue __txn_continue@DB_VERSION_UNIQUE_NAME@ -#define __txn_map_gid __txn_map_gid@DB_VERSION_UNIQUE_NAME@ -#define __txn_recover __txn_recover@DB_VERSION_UNIQUE_NAME@ -#define __txn_get_prepared __txn_get_prepared@DB_VERSION_UNIQUE_NAME@ -#define __txn_open __txn_open@DB_VERSION_UNIQUE_NAME@ -#define __txn_dbenv_refresh __txn_dbenv_refresh@DB_VERSION_UNIQUE_NAME@ -#define __txn_region_destroy __txn_region_destroy@DB_VERSION_UNIQUE_NAME@ -#define __txn_id_set __txn_id_set@DB_VERSION_UNIQUE_NAME@ -#define __txn_stat __txn_stat@DB_VERSION_UNIQUE_NAME@ -#define __txn_remevent __txn_remevent@DB_VERSION_UNIQUE_NAME@ -#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 __db_xa_create __db_xa_create@DB_VERSION_UNIQUE_NAME@ -#define __db_rmid_to_env __db_rmid_to_env@DB_VERSION_UNIQUE_NAME@ -#define __db_xid_to_txn __db_xid_to_txn@DB_VERSION_UNIQUE_NAME@ -#define __db_map_rmid __db_map_rmid@DB_VERSION_UNIQUE_NAME@ -#define __db_unmap_rmid __db_unmap_rmid@DB_VERSION_UNIQUE_NAME@ -#define __db_map_xid __db_map_xid@DB_VERSION_UNIQUE_NAME@ -#define __db_unmap_xid __db_unmap_xid@DB_VERSION_UNIQUE_NAME@ -#define xdr___env_cachesize_msg xdr___env_cachesize_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___env_cachesize_reply xdr___env_cachesize_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___env_close_msg xdr___env_close_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___env_close_reply xdr___env_close_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___env_create_msg xdr___env_create_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___env_create_reply xdr___env_create_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___env_dbremove_msg xdr___env_dbremove_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___env_dbremove_reply xdr___env_dbremove_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___env_dbrename_msg xdr___env_dbrename_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___env_dbrename_reply xdr___env_dbrename_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___env_encrypt_msg xdr___env_encrypt_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___env_encrypt_reply xdr___env_encrypt_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___env_flags_msg xdr___env_flags_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___env_flags_reply xdr___env_flags_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___env_open_msg xdr___env_open_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___env_open_reply xdr___env_open_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___env_remove_msg xdr___env_remove_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___env_remove_reply xdr___env_remove_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___txn_abort_msg xdr___txn_abort_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___txn_abort_reply xdr___txn_abort_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___txn_begin_msg xdr___txn_begin_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___txn_begin_reply xdr___txn_begin_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___txn_commit_msg xdr___txn_commit_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___txn_commit_reply xdr___txn_commit_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___txn_discard_msg xdr___txn_discard_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___txn_discard_reply xdr___txn_discard_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___txn_prepare_msg xdr___txn_prepare_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___txn_prepare_reply xdr___txn_prepare_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___txn_recover_msg xdr___txn_recover_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___txn_recover_reply xdr___txn_recover_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_associate_msg xdr___db_associate_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_associate_reply xdr___db_associate_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_bt_maxkey_msg xdr___db_bt_maxkey_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_bt_maxkey_reply xdr___db_bt_maxkey_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_bt_minkey_msg xdr___db_bt_minkey_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_bt_minkey_reply xdr___db_bt_minkey_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_close_msg xdr___db_close_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_close_reply xdr___db_close_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_create_msg xdr___db_create_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_create_reply xdr___db_create_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_del_msg xdr___db_del_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_del_reply xdr___db_del_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_encrypt_msg xdr___db_encrypt_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_encrypt_reply xdr___db_encrypt_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_extentsize_msg xdr___db_extentsize_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_extentsize_reply xdr___db_extentsize_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_flags_msg xdr___db_flags_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_flags_reply xdr___db_flags_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_get_msg xdr___db_get_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_get_reply xdr___db_get_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_h_ffactor_msg xdr___db_h_ffactor_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_h_ffactor_reply xdr___db_h_ffactor_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_h_nelem_msg xdr___db_h_nelem_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_h_nelem_reply xdr___db_h_nelem_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_key_range_msg xdr___db_key_range_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_key_range_reply xdr___db_key_range_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_lorder_msg xdr___db_lorder_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_lorder_reply xdr___db_lorder_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_open_msg xdr___db_open_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_open_reply xdr___db_open_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_pagesize_msg xdr___db_pagesize_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_pagesize_reply xdr___db_pagesize_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_pget_msg xdr___db_pget_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_pget_reply xdr___db_pget_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_put_msg xdr___db_put_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_put_reply xdr___db_put_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_re_delim_msg xdr___db_re_delim_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_re_delim_reply xdr___db_re_delim_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_re_len_msg xdr___db_re_len_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_re_len_reply xdr___db_re_len_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_re_pad_msg xdr___db_re_pad_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_re_pad_reply xdr___db_re_pad_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_remove_msg xdr___db_remove_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_remove_reply xdr___db_remove_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_rename_msg xdr___db_rename_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_rename_reply xdr___db_rename_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_stat_msg xdr___db_stat_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_stat_reply xdr___db_stat_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_sync_msg xdr___db_sync_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_sync_reply xdr___db_sync_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_truncate_msg xdr___db_truncate_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_truncate_reply xdr___db_truncate_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_cursor_msg xdr___db_cursor_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_cursor_reply xdr___db_cursor_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_join_msg xdr___db_join_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___db_join_reply xdr___db_join_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___dbc_close_msg xdr___dbc_close_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___dbc_close_reply xdr___dbc_close_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___dbc_count_msg xdr___dbc_count_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___dbc_count_reply xdr___dbc_count_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___dbc_del_msg xdr___dbc_del_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___dbc_del_reply xdr___dbc_del_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___dbc_dup_msg xdr___dbc_dup_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___dbc_dup_reply xdr___dbc_dup_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___dbc_get_msg xdr___dbc_get_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___dbc_get_reply xdr___dbc_get_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___dbc_pget_msg xdr___dbc_pget_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___dbc_pget_reply xdr___dbc_pget_reply@DB_VERSION_UNIQUE_NAME@ -#define xdr___dbc_put_msg xdr___dbc_put_msg@DB_VERSION_UNIQUE_NAME@ -#define xdr___dbc_put_reply xdr___dbc_put_reply@DB_VERSION_UNIQUE_NAME@ -#define __db_global_values __db_global_values@DB_VERSION_UNIQUE_NAME@ -#define __db_jump __db_jump@DB_VERSION_UNIQUE_NAME@ - -#endif /* !_DB_INT_DEF_IN_ */ diff --git a/bdb/dist/s_tags b/bdb/dist/s_tags index 1c0be7b9e0f..d5037896443 100755 --- a/bdb/dist/s_tags +++ b/bdb/dist/s_tags @@ -8,7 +8,7 @@ files="../dbinc/*.h \ ../btree/*.[ch] \ ../clib/*.[ch] \ ../common/*.[ch] \ - ../crypto/*.[ch] \ +# ../crypto/*.[ch] \ ../crypto/mersenne/*.[ch] \ ../crypto/rijndael/*.[ch] \ ../db/*.[ch] \ @@ -54,7 +54,7 @@ fi ctags $flags $files 2>/dev/null chmod 444 $f -f=../test_perf/tags -echo "Building $f" -(cd ../test_perf && ctags $flags *.[ch] 2>/dev/null) -chmod 444 $f +#f=../test_perf/tags +#echo "Building $f" +#(cd ../test_perf && ctags $flags *.[ch] 2>/dev/null) +#chmod 444 $f diff --git a/bdb/test/TESTS b/bdb/test/TESTS deleted file mode 100644 index eac6396b20c..00000000000 --- a/bdb/test/TESTS +++ /dev/null @@ -1,1437 +0,0 @@ -# Automatically built by dist/s_test; may require local editing. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -bigfile001 - 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. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -bigfile002 - This one should be faster and not require so much disk space, - although it doesn't test as extensively. Create an mpool file - with 1K pages. Dirty page 6000000. Sync. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -dbm - Historic DBM interface test. Use the first 1000 entries from the - dictionary. Insert each with self as key and data; retrieve each. - After all are entered, retrieve all; compare output to original. - Then reopen the file, re-retrieve everything. Finally, delete - everything. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -dead001 - Use two different configurations to test deadlock detection among a - variable number of processes. One configuration has the processes - deadlocked in a ring. The other has the processes all deadlocked on - a single resource. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -dead002 - Same test as dead001, but use "detect on every collision" instead - of separate deadlock detector. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -dead003 - - Same test as dead002, but explicitly specify DB_LOCK_OLDEST and - DB_LOCK_YOUNGEST. Verify the correct lock was aborted/granted. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -dead006 - use timeouts rather than the normal dd algorithm. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -dead007 - use timeouts rather than the normal dd algorithm. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -env001 - Test of env remove interface (formerly env_remove). - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -env002 - Test of DB_LOG_DIR and env name resolution. - With an environment path specified using -home, and then again - with it specified by the environment variable DB_HOME: - 1) Make sure that the set_lg_dir option is respected - a) as a relative pathname. - b) as an absolute pathname. - 2) Make sure that the DB_LOG_DIR db_config argument is respected, - again as relative and absolute pathnames. - 3) Make sure that if -both- db_config and a file are present, - only the file is respected (see doc/env/naming.html). - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -env003 - Test DB_TMP_DIR and env name resolution - With an environment path specified using -home, and then again - with it specified by the environment variable DB_HOME: - 1) Make sure that the DB_TMP_DIR config file option is respected - a) as a relative pathname. - b) as an absolute pathname. - 2) Make sure that the -tmp_dir config option is respected, - again as relative and absolute pathnames. - 3) Make sure that if -both- -tmp_dir and a file are present, - only the file is respected (see doc/env/naming.html). - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -env004 - Test multiple data directories. Do a bunch of different opens - to make sure that the files are detected in different directories. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -env005 - Test that using subsystems without initializing them correctly - returns an error. Cannot test mpool, because it is assumed in - the Tcl code. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -env006 - Make sure that all the utilities exist and run. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -env007 - Test various DB_CONFIG config file options. - 1) Make sure command line option is respected - 2) Make sure that config file option is respected - 3) Make sure that if -both- DB_CONFIG and the set_ - method is used, only the file is respected. - Then test all known config options. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -env008 - Test environments and subdirectories. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -env009 - Test calls to all the various stat functions. We have several - sprinkled throughout the test suite, but this will ensure that - we run all of them at least once. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -env010 - Run recovery in an empty directory, and then make sure we can still - create a database in that directory. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -env011 - Run with region overwrite flag. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -jointest - Test duplicate assisted joins. Executes 1, 2, 3 and 4-way joins - with differing index orders and selectivity. - - We'll test 2-way, 3-way, and 4-way joins and figure that if those - work, everything else does as well. We'll create test databases - called join1.db, join2.db, join3.db, and join4.db. The number on - the database describes the duplication -- duplicates are of the - form 0, N, 2N, 3N, ... where N is the number of the database. - Primary.db is the primary database, and null.db is the database - that has no matching duplicates. - - We should test this on all btrees, all hash, and a combination thereof - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -lock001 - Make sure that the basic lock tests work. Do some simple gets - and puts for a single locker. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -lock002 - Exercise basic multi-process aspects of lock. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -lock003 - Exercise multi-process aspects of lock. Generate a bunch of parallel - testers that try to randomly obtain locks; make sure that the locks - correctly protect corresponding objects. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -lock004 - Test locker ids wraping around. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -lock005 - Check that page locks are being released properly. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -log001 - Read/write log records. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -log002 - Tests multiple logs - Log truncation - LSN comparison and file functionality. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -log003 - Verify that log_flush is flushing records correctly. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -log004 - Make sure that if we do PREVs on a log, but the beginning of the - log has been truncated, we do the right thing. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -log005 - Check that log file sizes can change on the fly. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -memp001 - Randomly updates pages. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -memp002 - Tests multiple processes accessing and modifying the same files. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -memp003 - Test reader-only/writer process combinations; we use the access methods - for testing. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -mutex001 - Test basic mutex functionality - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -mutex002 - Test basic mutex synchronization - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -mutex003 - Generate a bunch of parallel testers that try to randomly obtain locks. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -recd001 - Per-operation recovery tests for non-duplicate, non-split - messages. Makes sure that we exercise redo, undo, and do-nothing - condition. Any test that appears with the message (change state) - indicates that we've already run the particular test, but we are - running it again so that we can change the state of the data base - to prepare for the next test (this applies to all other recovery - tests as well). - - These are the most basic recovery tests. We do individual recovery - tests for each operation in the access method interface. First we - create a file and capture the state of the database (i.e., we copy - it. Then we run a transaction containing a single operation. In - one test, we abort the transaction and compare the outcome to the - original copy of the file. In the second test, we restore the - original copy of the database and then run recovery and compare - this against the actual database. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -recd002 - Split recovery tests. For every known split log message, makes sure - that we exercise redo, undo, and do-nothing condition. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -recd003 - Duplicate recovery tests. For every known duplicate log message, - makes sure that we exercise redo, undo, and do-nothing condition. - - Test all the duplicate log messages and recovery operations. We make - sure that we exercise all possible recovery actions: redo, undo, undo - but no fix necessary and redo but no fix necessary. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -recd004 - Big key test where big key gets elevated to internal page. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -recd005 - Verify reuse of file ids works on catastrophic recovery. - - Make sure that we can do catastrophic recovery even if we open - files using the same log file id. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -recd006 - Nested transactions. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -recd007 - File create/delete tests. - - This is a recovery test for create/delete of databases. We have - hooks in the database so that we can abort the process at various - points and make sure that the transaction doesn't commit. We - then need to recover and make sure the file is correctly existing - or not, as the case may be. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -recd008 - Test deeply nested transactions and many-child transactions. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -recd009 - Verify record numbering across split/reverse splits and recovery. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -recd010 - Test stability of btree duplicates across btree off-page dup splits - and reverse splits and across recovery. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -recd011 - Verify that recovery to a specific timestamp works. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -recd012 - Test of log file ID management. [#2288] - Test recovery handling of file opens and closes. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -recd013 - Test of cursor adjustment on child transaction aborts. [#2373] - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -recd014 - This is a recovery test for create/delete of queue extents. We - then need to recover and make sure the file is correctly existing - or not, as the case may be. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -recd015 - This is a recovery test for testing lots of prepared txns. - This test is to force the use of txn_recover to call with the - DB_FIRST flag and then DB_NEXT. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -recd016 - This is a recovery test for testing running recovery while - recovery is already running. While bad things may or may not - happen, if recovery is then run properly, things should be correct. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -recd017 - Test recovery and security. This is basically a watered - down version of recd001 just to verify that encrypted environments - can be recovered. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -recd018 - Test recover of closely interspersed checkpoints and commits. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -recd019 - Test txn id wrap-around and recovery. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -recd020 - Test recovery after checksum error. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -rep001 - Replication rename and forced-upgrade test. - - Run a modified version of test001 in a replicated master environment; - verify that the database on the client is correct. - Next, remove the database, close the master, upgrade the - client, reopen the master, and make sure the new master can correctly - run test001 and propagate it in the other direction. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -rep002 - Basic replication election test. - - Run a modified version of test001 in a replicated master environment; - hold an election among a group of clients to make sure they select - a proper master from amongst themselves, in various scenarios. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -rep003 - Repeated shutdown/restart replication test - - Run a quick put test in a replicated master environment; start up, - shut down, and restart client processes, with and without recovery. - To ensure that environment state is transient, use DB_PRIVATE. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -rep004 - Test of DB_REP_LOGSONLY. - - Run a quick put test in a master environment that has one logs-only - client. Shut down, then run catastrophic recovery in the logs-only - client and check that the database is present and populated. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -rep005 - Replication election test with error handling. - - Run a modified version of test001 in a replicated master environment; - hold an election among a group of clients to make sure they select - a proper master from amongst themselves, forcing errors at various - locations in the election path. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -rpc001 - Test RPC server timeouts for cursor, txn and env handles. - Test RPC specifics, primarily that unsupported functions return - errors and such. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -rpc002 - Test invalid RPC functions and make sure we error them correctly - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -rpc004 - Test RPC server and security - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -rpc005 - Test RPC server handle ID sharing - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -rsrc001 - Recno backing file test. Try different patterns of adding - records and making sure that the corresponding file matches. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -rsrc002 - Recno backing file test #2: test of set_re_delim. Specify a backing - file with colon-delimited records, and make sure they are correctly - interpreted. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -rsrc003 - Recno backing file test. Try different patterns of adding - records and making sure that the corresponding file matches. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -rsrc004 - Recno backing file test for EOF-terminated records. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -scr### - The scr### directories are shell scripts that test a variety of - things, including things about the distribution itself. These - tests won't run on most systems, so don't even try to run them. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -sdbtest001 - Tests multiple access methods in one subdb - Open several subdbs, each with a different access method - Small keys, small data - Put/get per key per subdb - Dump file, verify per subdb - Close, reopen per subdb - Dump file, verify per subdb - - Make several subdb's of different access methods all in one DB. - Rotate methods and repeat [#762]. - 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. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -sdbtest002 - Tests multiple access methods in one subdb access by multiple - processes. - Open several subdbs, each with a different access method - Small keys, small data - Put/get per key per subdb - Fork off several child procs to each delete selected - data from their subdb and then exit - Dump file, verify contents of each subdb is correct - Close, reopen per subdb - Dump file, verify per subdb - - Make several subdb's of different access methods all in one DB. - Fork of some child procs to each manipulate one subdb and when - they are finished, verify the contents of the databases. - 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. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -sec001 - Test of security interface - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -sec002 - Test of security interface and catching errors in the - face of attackers overwriting parts of existing files. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -sindex001 - Basic secondary index put/delete test - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -sindex002 - Basic cursor-based secondary index put/delete test - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -sindex003 - sindex001 with secondaries created and closed mid-test - Basic secondary index put/delete test with secondaries - created mid-test. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -sindex004 - sindex002 with secondaries created and closed mid-test - Basic cursor-based secondary index put/delete test, with - secondaries created mid-test. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -sindex006 - Basic secondary index put/delete test with transactions - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -subdb001 Tests mixing db and subdb operations - Tests mixing db and subdb operations - Create a db, add data, try to create a subdb. - Test naming db and subdb with a leading - for correct parsing - Existence check -- test use of -excl with subdbs - - Test non-subdb and subdb operations - Test naming (filenames begin with -) - Test existence (cannot create subdb of same name with -excl) - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -subdb002 - Tests basic subdb functionality - Small keys, small data - Put/get per key - Dump file - Close, reopen - Dump file - - 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. - Then repeat using an environment. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -subdb003 - Tests many subdbs - Creates many subdbs and puts a small amount of - data in each (many defaults to 2000) - - Use the first 10,000 entries from the dictionary as subdbnames. - Insert each with entry as name of subdatabase and a partial list - as key/data. After all are entered, retrieve all; compare output - to original. Close file, reopen, do retrieve and re-verify. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -subdb004 - Tests large subdb names - subdb name = filecontents, - key = filename, data = filecontents - Put/get per key - Dump file - Dump subdbs, verify data and subdb name match - - Create 1 db with many large subdbs. Use the contents as subdb names. - Take the source files and dbtest executable and enter their names as - the key with their contents as data. After all are entered, retrieve - all; compare output to original. Close file, reopen, do retrieve and - re-verify. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -subdb005 - Tests cursor operations in subdbs - Put/get per key - Verify cursor operations work within subdb - Verify cursor operations do not work across subdbs - - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -subdb006 - Tests intra-subdb join - - We'll test 2-way, 3-way, and 4-way joins and figure that if those work, - everything else does as well. We'll create test databases called - sub1.db, sub2.db, sub3.db, and sub4.db. The number on the database - describes the duplication -- duplicates are of the form 0, N, 2N, 3N, - ... where N is the number of the database. Primary.db is the primary - database, and sub0.db is the database that has no matching duplicates. - All of these are within a single database. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -subdb007 - Tests page size difference errors between subdbs. - Test 3 different scenarios for page sizes. - 1. Create/open with a default page size, 2nd subdb create with - specified different one, should error. - 2. Create/open with specific page size, 2nd subdb create with - different one, should error. - 3. Create/open with specified page size, 2nd subdb create with - same specified size, should succeed. - (4th combo of using all defaults is a basic test, done elsewhere) - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -subdb008 - Tests lorder difference errors between subdbs. - Test 3 different scenarios for lorder. - 1. Create/open with specific lorder, 2nd subdb create with - different one, should error. - 2. Create/open with a default lorder 2nd subdb create with - specified different one, should error. - 3. Create/open with specified lorder, 2nd subdb create with - same specified lorder, should succeed. - (4th combo of using all defaults is a basic test, done elsewhere) - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -subdb009 - Test DB->rename() method for subdbs - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -subdb010 - Test DB->remove() method and DB->truncate() for subdbs - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -subdb011 - Test deleting Subdbs with overflow pages - Create 1 db with many large subdbs. - Test subdatabases with overflow pages. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -subdb012 - Test subdbs with locking and transactions - Tests creating and removing subdbs while handles - are open works correctly, and in the face of txns. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test001 - Small keys/data - Put/get per key - Dump file - Close, reopen - Dump file - - 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. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test002 - Small keys/medium data - Put/get per key - Dump file - Close, reopen - Dump file - - Use the first 10,000 entries from the dictionary. - Insert each with self as key and a fixed, medium length data string; - retrieve each. After all are entered, retrieve all; compare output - to original. Close file, reopen, do retrieve and re-verify. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test003 - Small keys/large data - Put/get per key - Dump file - Close, reopen - Dump file - - Take the source files and dbtest executable and enter their names - as the key with their contents as data. After all are entered, - retrieve all; compare output to original. Close file, reopen, do - retrieve and re-verify. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test004 - Small keys/medium data - Put/get per key - Sequential (cursor) get/delete - - Check that cursor operations work. Create a database. - Read through the database sequentially using cursors and - delete each element. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test005 - Small keys/medium data - Put/get per key - Close, reopen - Sequential (cursor) get/delete - - Check that cursor operations work. Create a database; close - it and reopen it. Then read through the database sequentially - using cursors and delete each element. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test006 - Small keys/medium data - Put/get per key - Keyed delete and verify - - Keyed delete test. - Create database. - Go through database, deleting all entries by key. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test007 - Small keys/medium data - Put/get per key - Close, reopen - Keyed delete - - Check that delete operations work. Create a database; close - database and reopen it. Then issues delete by key for each - entry. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test008 - Small keys/large data - Put/get per key - Loop through keys by steps (which change) - ... delete each key at step - ... add each key back - ... change step - Confirm that overflow pages are getting reused - - Take the source files and dbtest executable and enter their names as - the key with their contents as data. After all are entered, begin - looping through the entries; deleting some pairs and then readding them. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test009 - Small keys/large data - Same as test008; close and reopen database - - Check that we reuse overflow pages. Create database with lots of - big key/data pairs. Go through and delete and add keys back - randomly. Then close the DB and make sure that we have everything - we think we should. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test010 - Duplicate test - Small key/data pairs. - - Use the first 10,000 entries from the dictionary. - Insert each with self as key and data; add duplicate records for each. - After all are entered, retrieve all; verify output. - Close file, reopen, do retrieve and re-verify. - This does not work for recno - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test011 - Duplicate test - Small key/data pairs. - Test DB_KEYFIRST, DB_KEYLAST, DB_BEFORE and DB_AFTER. - To test off-page duplicates, run with small pagesize. - - Use the first 10,000 entries from the dictionary. - Insert each with self as key and data; add duplicate records for each. - Then do some key_first/key_last add_before, add_after operations. - This does not work for recno - - To test if dups work when they fall off the main page, run this with - a very tiny page size. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test012 - Large keys/small data - Same as test003 except use big keys (source files and - executables) and small data (the file/executable names). - - Take the source files and dbtest executable and enter their contents - as the key with their names as data. After all are entered, retrieve - all; compare output to original. Close file, reopen, do retrieve and - re-verify. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test013 - Partial put test - Overwrite entire records using partial puts. - Make surethat NOOVERWRITE flag works. - - 1. Insert 10000 keys and retrieve them (equal key/data pairs). - 2. Attempt to overwrite keys with NO_OVERWRITE set (expect error). - 3. Actually overwrite each one with its datum reversed. - - No partial testing here. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test014 - Exercise partial puts on short data - Run 5 combinations of numbers of characters to replace, - and number of times to increase the size by. - - Partial put test, small data, replacing with same size. The data set - consists of the first nentries of the dictionary. We will insert them - (and retrieve them) as we do in test 1 (equal key/data pairs). Then - we'll try to perform partial puts of some characters at the beginning, - some at the end, and some at the middle. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test015 - Partial put test - Partial put test where the key does not initially exist. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test016 - Partial put test - Partial put where the datum gets shorter as a result of the put. - - Partial put test where partial puts make the record smaller. - Use the first 10,000 entries from the dictionary. - Insert each with self as key and a fixed, medium length data string; - retrieve each. After all are entered, go back and do partial puts, - replacing a random-length string with the key value. - Then verify. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test017 - Basic offpage duplicate test. - - Run duplicates with small page size so that we test off page duplicates. - Then after we have an off-page database, test with overflow pages too. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test018 - Offpage duplicate test - Key_{first,last,before,after} offpage duplicates. - Run duplicates with small page size so that we test off page - duplicates. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test019 - Partial get test. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test020 - In-Memory database tests. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test021 - Btree range tests. - - Use the first 10,000 entries from the dictionary. - Insert each with self, reversed as key and self as data. - After all are entered, retrieve each using a cursor SET_RANGE, and - getting about 20 keys sequentially after it (in some cases we'll - run out towards the end of the file). - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test022 - Test of DB->getbyteswapped(). - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test023 - Duplicate test - Exercise deletes and cursor operations within a duplicate set. - Add a key with duplicates (first time on-page, second time off-page) - Number the dups. - Delete dups and make sure that CURRENT/NEXT/PREV work correctly. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test024 - Record number retrieval test. - Test the Btree and Record number get-by-number functionality. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test025 - DB_APPEND flag test. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test026 - Small keys/medium data w/duplicates - Put/get per key. - Loop through keys -- delete each key - ... test that cursors delete duplicates correctly - - Keyed delete test through cursor. If ndups is small; this will - test on-page dups; if it's large, it will test off-page dups. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test027 - Off-page duplicate test - Test026 with parameters to force off-page duplicates. - - Check that delete operations work. Create a database; close - database and reopen it. Then issues delete by key for each - entry. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test028 - Cursor delete test - Test put operations after deleting through a cursor. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test029 - Test the Btree and Record number renumbering. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test030 - Test DB_NEXT_DUP Functionality. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test031 - Duplicate sorting functionality - Make sure DB_NODUPDATA works. - - Use the first 10,000 entries from the dictionary. - Insert each with self as key and "ndups" duplicates - For the data field, prepend random five-char strings (see test032) - that we force the duplicate sorting code to do something. - Along the way, test that we cannot insert duplicate duplicates - using DB_NODUPDATA. - - By setting ndups large, we can make this an off-page test - After all are entered, retrieve all; verify output. - Close file, reopen, do retrieve and re-verify. - This does not work for recno - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test032 - DB_GET_BOTH, DB_GET_BOTH_RANGE - - Use the first 10,000 entries from the dictionary. Insert each with - self as key and "ndups" duplicates. For the data field, prepend the - letters of the alphabet in a random order so we force the duplicate - sorting code to do something. By setting ndups large, we can make - this an off-page test. - - Test the DB_GET_BOTH functionality by retrieving each dup in the file - explicitly. Test the DB_GET_BOTH_RANGE functionality by retrieving - the unique key prefix (cursor only). Finally test the failure case. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test033 - DB_GET_BOTH without comparison function - - Use the first 10,000 entries from the dictionary. Insert each with - self as key and data; add duplicate records for each. After all are - entered, retrieve all and verify output using DB_GET_BOTH (on DB and - DBC handles) and DB_GET_BOTH_RANGE (on a DBC handle) on existent and - nonexistent keys. - - XXX - This does not work for rbtree. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test034 - test032 with off-page duplicates - DB_GET_BOTH, DB_GET_BOTH_RANGE functionality with off-page duplicates. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test035 - Test033 with off-page duplicates - DB_GET_BOTH functionality with off-page duplicates. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test036 - Test KEYFIRST and KEYLAST when the key doesn't exist - Put nentries key/data pairs (from the dictionary) using a cursor - and KEYFIRST and KEYLAST (this tests the case where use use cursor - put for non-existent keys). - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test037 - Test DB_RMW - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test038 - DB_GET_BOTH, DB_GET_BOTH_RANGE on deleted items - - Use the first 10,000 entries from the dictionary. Insert each with - self as key and "ndups" duplicates. For the data field, prepend the - letters of the alphabet in a random order so we force the duplicate - sorting code to do something. By setting ndups large, we can make - this an off-page test - - Test the DB_GET_BOTH and DB_GET_BOTH_RANGE functionality by retrieving - each dup in the file explicitly. Then remove each duplicate and try - the retrieval again. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test039 - DB_GET_BOTH/DB_GET_BOTH_RANGE on deleted items without comparison - function. - - Use the first 10,000 entries from the dictionary. Insert each with - self as key and "ndups" duplicates. For the data field, prepend the - letters of the alphabet in a random order so we force the duplicate - sorting code to do something. By setting ndups large, we can make - this an off-page test. - - Test the DB_GET_BOTH and DB_GET_BOTH_RANGE functionality by retrieving - each dup in the file explicitly. Then remove each duplicate and try - the retrieval again. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test040 - Test038 with off-page duplicates - DB_GET_BOTH functionality with off-page duplicates. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test041 - Test039 with off-page duplicates - DB_GET_BOTH functionality with off-page duplicates. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test042 - Concurrent Data Store test (CDB) - - Multiprocess DB test; verify that locking is working for the - concurrent access method product. - - Use the first "nentries" words from the dictionary. Insert each with - self as key and a fixed, medium length data string. Then fire off - multiple processes that bang on the database. Each one should try to - read and write random keys. When they rewrite, they'll append their - pid to the data string (sometimes doing a rewrite sometimes doing a - partial put). Some will use cursors to traverse through a few keys - before finding one to write. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test043 - Recno renumbering and implicit creation test - Test the Record number implicit creation and renumbering options. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test044 - Small system integration tests - Test proper functioning of the checkpoint daemon, - recovery, transactions, etc. - - System integration DB test: verify that locking, recovery, checkpoint, - and all the other utilities basically work. - - The test consists of $nprocs processes operating on $nfiles files. A - transaction consists of adding the same key/data pair to some random - number of these files. We generate a bimodal distribution in key size - with 70% of the keys being small (1-10 characters) and the remaining - 30% of the keys being large (uniform distribution about mean $key_avg). - If we generate a key, we first check to make sure that the key is not - already in the dataset. If it is, we do a lookup. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test045 - Small random tester - Runs a number of random add/delete/retrieve operations. - Tests both successful conditions and error conditions. - - Run the random db tester on the specified access method. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test046 - Overwrite test of small/big key/data with cursor checks. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test047 - DBcursor->c_get get test with SET_RANGE option. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test048 - Cursor stability across Btree splits. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test049 - Cursor operations on uninitialized cursors. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test050 - Overwrite test of small/big key/data with cursor checks for Recno. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test051 - Fixed-length record Recno test. - 0. Test various flags (legal and illegal) to open - 1. Test partial puts where dlen != size (should fail) - 2. Partial puts for existent record -- replaces at beg, mid, and - end of record, as well as full replace - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test052 - Renumbering record Recno test. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test053 - Test of the DB_REVSPLITOFF flag in the Btree and Btree-w-recnum - methods. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test054 - Cursor maintenance during key/data deletion. - - This test checks for cursor maintenance in the presence of deletes. - There are N different scenarios to tests: - 1. No duplicates. Cursor A deletes a key, do a GET for the key. - 2. No duplicates. Cursor is positioned right before key K, Delete K, - do a next on the cursor. - 3. No duplicates. Cursor is positioned on key K, do a regular delete - of K, do a current get on K. - 4. Repeat 3 but do a next instead of current. - 5. Duplicates. Cursor A is on the first item of a duplicate set, A - does a delete. Then we do a non-cursor get. - 6. Duplicates. Cursor A is in a duplicate set and deletes the item. - do a delete of the entire Key. Test cursor current. - 7. Continue last test and try cursor next. - 8. Duplicates. Cursor A is in a duplicate set and deletes the item. - Cursor B is in the same duplicate set and deletes a different item. - Verify that the cursor is in the right place. - 9. Cursors A and B are in the place in the same duplicate set. A - deletes its item. Do current on B. - 10. Continue 8 and do a next on B. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test055 - Basic cursor operations. - This test checks basic cursor operations. - There are N different scenarios to tests: - 1. (no dups) Set cursor, retrieve current. - 2. (no dups) Set cursor, retrieve next. - 3. (no dups) Set cursor, retrieve prev. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test056 - Cursor maintenance during deletes. - Check if deleting a key when a cursor is on a duplicate of that - key works. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test057 - Cursor maintenance during key deletes. - Check if we handle the case where we delete a key with the cursor on - it and then add the same key. The cursor should not get the new item - returned, but the item shouldn't disappear. - Run test tests, one where the overwriting put is done with a put and - one where it's done with a cursor put. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test058 - Verify that deleting and reading duplicates results in correct ordering. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test059 - Cursor ops work with a partial length of 0. - Make sure that we handle retrieves of zero-length data items correctly. - The following ops, should allow a partial data retrieve of 0-length. - db_get - db_cget FIRST, NEXT, LAST, PREV, CURRENT, SET, SET_RANGE - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test060 - Test of the DB_EXCL flag to DB->open(). - 1) Attempt to open and create a nonexistent database; verify success. - 2) Attempt to reopen it; verify failure. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test061 - Test of txn abort and commit for in-memory databases. - a) Put + abort: verify absence of data - b) Put + commit: verify presence of data - c) Overwrite + abort: verify that data is unchanged - d) Overwrite + commit: verify that data has changed - e) Delete + abort: verify that data is still present - f) Delete + commit: verify that data has been deleted - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test062 - Test of partial puts (using DB_CURRENT) onto duplicate pages. - Insert the first 200 words into the dictionary 200 times each with - self as key and :self as data. Use partial puts to - append self again to data; verify correctness. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test063 - Test of the DB_RDONLY flag to DB->open - Attempt to both DB->put and DBC->c_put into a database - that has been opened DB_RDONLY, and check for failure. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test064 - Test of DB->get_type - Create a database of type specified by method. - Make sure DB->get_type returns the right thing with both a normal - and DB_UNKNOWN open. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test065 - Test of DB->stat(DB_FASTSTAT) - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test066 - Test of cursor overwrites of DB_CURRENT w/ duplicates. - - Make sure a cursor put to DB_CURRENT acts as an overwrite in a - database with duplicates. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test067 - Test of DB_CURRENT partial puts onto almost empty duplicate - pages, with and without DB_DUP_SORT. - - Test of DB_CURRENT partial puts on almost-empty duplicate pages. - This test was written to address the following issue, #2 in the - list of issues relating to bug #0820: - - 2. DBcursor->put, DB_CURRENT flag, off-page duplicates, hash and btree: - In Btree, the DB_CURRENT overwrite of off-page duplicate records - first deletes the record and then puts the new one -- this could - be a problem if the removal of the record causes a reverse split. - Suggested solution is to acquire a cursor to lock down the current - record, put a new record after that record, and then delete using - the held cursor. - - It also tests the following, #5 in the same list of issues: - 5. DBcursor->put, DB_AFTER/DB_BEFORE/DB_CURRENT flags, DB_DBT_PARTIAL - set, duplicate comparison routine specified. - The partial change does not change how data items sort, but the - record to be put isn't built yet, and that record supplied is the - one that's checked for ordering compatibility. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test068 - Test of DB_BEFORE and DB_AFTER with partial puts. - Make sure DB_BEFORE and DB_AFTER work properly with partial puts, and - check that they return EINVAL if DB_DUPSORT is set or if DB_DUP is not. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test069 - Test of DB_CURRENT partial puts without duplicates-- test067 w/ - small ndups to ensure that partial puts to DB_CURRENT work - correctly in the absence of duplicate pages. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test070 - Test of DB_CONSUME (Four consumers, 1000 items.) - - Fork off six processes, four consumers and two producers. - The producers will each put 20000 records into a queue; - the consumers will each get 10000. - Then, verify that no record was lost or retrieved twice. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test071 - Test of DB_CONSUME (One consumer, 10000 items.) - This is DB Test 70, with one consumer, one producers, and 10000 items. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test072 - Test of cursor stability when duplicates are moved off-page. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test073 - Test of cursor stability on duplicate pages. - - Does the following: - a. Initialize things by DB->putting ndups dups and - setting a reference cursor to point to each. - b. c_put ndups dups (and correspondingly expanding - the set of reference cursors) after the last one, making sure - after each step that all the reference cursors still point to - the right item. - c. Ditto, but before the first one. - d. Ditto, but after each one in sequence first to last. - e. Ditto, but after each one in sequence from last to first. - occur relative to the new datum) - f. Ditto for the two sequence tests, only doing a - DBC->c_put(DB_CURRENT) of a larger datum instead of adding a - new one. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test074 - Test of DB_NEXT_NODUP. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test075 - Test of DB->rename(). - (formerly test of DB_TRUNCATE cached page invalidation [#1487]) - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test076 - Test creation of many small databases in a single environment. [#1528]. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test077 - Test of DB_GET_RECNO [#1206]. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test078 - Test of DBC->c_count(). [#303] - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test079 - Test of deletes in large trees. (test006 w/ sm. pagesize). - - Check that delete operations work in large btrees. 10000 entries - and a pagesize of 512 push this out to a four-level btree, with a - small fraction of the entries going on overflow pages. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test080 - Test of DB->remove() - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test081 - Test off-page duplicates and overflow pages together with - very large keys (key/data as file contents). - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test082 - Test of DB_PREV_NODUP (uses test074). - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test083 - Test of DB->key_range. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test084 - Basic sanity test (test001) with large (64K) pages. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test085 - Test of cursor behavior when a cursor is pointing to a deleted - btree key which then has duplicates added. [#2473] - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test086 - Test of cursor stability across btree splits/rsplits with - subtransaction aborts (a variant of test048). [#2373] - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test087 - Test of cursor stability when converting to and modifying - off-page duplicate pages with subtransaction aborts. [#2373] - - Does the following: - a. Initialize things by DB->putting ndups dups and - setting a reference cursor to point to each. Do each put twice, - first aborting, then committing, so we're sure to abort the move - to off-page dups at some point. - b. c_put ndups dups (and correspondingly expanding - the set of reference cursors) after the last one, making sure - after each step that all the reference cursors still point to - the right item. - c. Ditto, but before the first one. - d. Ditto, but after each one in sequence first to last. - e. Ditto, but after each one in sequence from last to first. - occur relative to the new datum) - f. Ditto for the two sequence tests, only doing a - DBC->c_put(DB_CURRENT) of a larger datum instead of adding a - new one. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test088 - Test of cursor stability across btree splits with very - deep trees (a variant of test048). [#2514] - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test089 - Concurrent Data Store test (CDB) - - Enhanced CDB testing to test off-page dups, cursor dups and - cursor operations like c_del then c_get. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test090 - Test for functionality near the end of the queue using test001. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test091 - Test of DB_CONSUME_WAIT. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test092 - Test of DB_DIRTY_READ [#3395] - - We set up a database with nentries in it. We then open the - database read-only twice. One with dirty read and one without. - We open the database for writing and update some entries in it. - Then read those new entries via db->get (clean and dirty), and - via cursors (clean and dirty). - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test093 - Test using set_bt_compare. - - 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. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test094 - Test using set_dup_compare. - - 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. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test095 - Bulk get test. [#2934] - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test096 - Db->truncate test. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test097 - Open up a large set of database files simultaneously. - Adjust for local file descriptor resource limits. - Then use the first 1000 entries from the dictionary. - Insert each with self as key and a fixed, medium length data string; - retrieve each. After all are entered, retrieve all; compare output - to original. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test098 - Test of DB_GET_RECNO and secondary indices. Open a primary and - a secondary, and do a normal cursor get followed by a get_recno. - (This is a smoke test for "Bug #1" in [#5811].) - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test099 - - Test of DB->get and DBC->c_get with set_recno and get_recno. - - Populate a small btree -recnum database. - After all are entered, retrieve each using -recno with DB->get. - Open a cursor and do the same for DBC->c_get with set_recno. - Verify that set_recno sets the record number position properly. - Verify that get_recno returns the correct record numbers. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test100 - Test for functionality near the end of the queue - using test025 (DB_APPEND). - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -test101 - Test for functionality near the end of the queue - using test070 (DB_CONSUME). - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -txn001 - Begin, commit, abort testing. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -txn002 - Verify that read-only transactions do not write log records. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -txn003 - Test abort/commit/prepare of txns with outstanding child txns. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -txn004 - Test of wraparound txnids (txn001) - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -txn005 - Test transaction ID wraparound and recovery. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -txn008 - Test of wraparound txnids (txn002) - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -txn009 - Test of wraparound txnids (txn003) From 8229d282f7767efe4c88294acdb65507fef4079e Mon Sep 17 00:00:00 2001 From: "bar@bar.mysql.r18.ru" <> Date: Wed, 6 Nov 2002 12:01:38 +0400 Subject: [PATCH 4/9] Extensions to support this: SHOW CREATE DATABASE [IF NOT EXISTS] dbname Version dependant parts are displayed in appropriative comments: CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ucs` /*!40100 DEFAULT CHARACTER SET ucs2*/ --- client/mysqldump.c | 2 +- sql/mysql_priv.h | 2 +- sql/sql_db.cc | 17 ++++++++++++----- sql/sql_parse.cc | 2 +- sql/sql_yacc.yy | 13 ++++++++++--- 5 files changed, 25 insertions(+), 11 deletions(-) diff --git a/client/mysqldump.c b/client/mysqldump.c index 04232474944..9470786705d 100644 --- a/client/mysqldump.c +++ b/client/mysqldump.c @@ -1252,7 +1252,7 @@ static int init_dumping(char *database) MYSQL_ROW row; MYSQL_RES *dbinfo; - sprintf(qbuf,"SHOW CREATE DATABASE %s",database); + sprintf(qbuf,"SHOW CREATE DATABASE IF NOT EXISTS %s",database); if (mysql_query(sock, qbuf) || !(dbinfo = mysql_store_result(sock))) { diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index 7788056138c..c61621bf91d 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -496,7 +496,7 @@ int mysqld_show_logs(THD *thd); void mysqld_list_fields(THD *thd,TABLE_LIST *table, const char *wild); int mysqld_dump_create_info(THD *thd, TABLE *table, int fd = -1); int mysqld_show_create(THD *thd, TABLE_LIST *table_list); -int mysqld_show_create_db(THD *thd, const char *dbname); +int mysqld_show_create_db(THD *thd, const char *dbname, HA_CREATE_INFO *create); void mysqld_list_processes(THD *thd,const char *user,bool verbose); int mysqld_show_status(THD *thd); diff --git a/sql/sql_db.cc b/sql/sql_db.cc index 25a69f7e51b..b80e25c9f40 100644 --- a/sql/sql_db.cc +++ b/sql/sql_db.cc @@ -597,7 +597,7 @@ bool mysql_change_db(THD *thd, const char *name) } -int mysqld_show_create_db(THD *thd, const char *dbname) +int mysqld_show_create_db(THD *thd, const char *dbname, HA_CREATE_INFO *create_info) { int length; char path[FN_REFLEN], *to; @@ -605,6 +605,8 @@ int mysqld_show_create_db(THD *thd, const char *dbname) bool found_libchar; HA_CREATE_INFO create; CONVERT *convert=thd->variables.convert_set; + uint create_options = create_info ? create_info->options : 0; + DBUG_ENTER("mysql_show_create_db"); if (check_db_name(dbname)) @@ -660,12 +662,17 @@ int mysqld_show_create_db(THD *thd, const char *dbname) String *packet = &thd->packet; packet->length(0); net_store_data(packet, convert, dbname); - to= strxmov(path, "CREATE DATABASE `", dbname, "`", NullS); + to= strxmov(path, "CREATE DATABASE ", NullS); + if (create_options & HA_LEX_CREATE_IF_NOT_EXISTS) + to= strxmov(to,"/*!32312 IF NOT EXISTS*/ ", NullS); + to=strxmov(to,"`",dbname,"`", NullS); + if (create.table_charset) - to= strxmov(to," DEFAULT CHARACTER SET ", create.table_charset->name, - NullS); + to= strxmov(to," /*!40100 DEFAULT CHARACTER SET ", + create.table_charset->name,"*/",NullS); + net_store_data(packet, convert, path, (uint) (to-path)); - + if (my_net_write(&thd->net,(char*) packet->ptr(), packet->length())) DBUG_RETURN(1); diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 10b05a0550d..57325ef19cf 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -2462,7 +2462,7 @@ mysql_execute_command(THD *thd) send_error(thd,ER_LOCK_OR_ACTIVE_TRANSACTION); goto error; } - res=mysqld_show_create_db(thd,lex->name); + res=mysqld_show_create_db(thd,lex->name,&lex->create_info); break; } case SQLCOM_CREATE_FUNCTION: diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index b1cbe0ccf2b..6235d93c18f 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -2987,7 +2987,13 @@ opt_table_sym: /* Show things */ -show: SHOW { Lex->wild=0;} show_param; +show: SHOW + { + LEX *lex=Lex; + lex->wild=0; + bzero((char*) &lex->create_info,sizeof(lex->create_info)); + } + show_param; show_param: DATABASES wild @@ -3100,10 +3106,11 @@ show_param: lex->grant_user=$3; lex->grant_user->password.str=NullS; } - | CREATE DATABASE ident + | CREATE DATABASE opt_if_not_exists ident { Lex->sql_command=SQLCOM_SHOW_CREATE_DB; - Lex->name=$3.str; + Lex->create_info.options=$3; + Lex->name=$4.str; } | CREATE TABLE_SYM table_ident { From 01da261574e3ba326c3ed8f8f2660d894d7ced11 Mon Sep 17 00:00:00 2001 From: "vva@genie.(none)" <> Date: Wed, 6 Nov 2002 13:03:38 +0400 Subject: [PATCH 5/9] new version of sql/gen_lex_hash.cc --- sql/gen_lex_hash.cc | 790 +++++++++++++++++++------------------------- 1 file changed, 336 insertions(+), 454 deletions(-) diff --git a/sql/gen_lex_hash.cc b/sql/gen_lex_hash.cc index 4da5496c201..0d92397b616 100644 --- a/sql/gen_lex_hash.cc +++ b/sql/gen_lex_hash.cc @@ -14,11 +14,68 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +/* + +The idea of presented algorithm see in +"The Art of Computer Programming" by Donald E. Knuth +Volume 3 "Sorting and searching" +(chapter 6.3 "Digital searching" - name and number of chapter + is back translation from Russian edition :)) + +as illustration of data structures, imagine next table: + +static SYMBOL symbols[] = { + { "ADD", SYM(ADD),0,0}, + { "AND", SYM(AND),0,0}, + { "DAY", SYM(DAY_SYM),0,0}, +}; + +for this structure, presented program generate next searching-structure: + ++-----------+-+-+-+ +| len |1|2|3| ++-----------+-+-+-+ +|first_char |0|0|a| +|last_char |0|0|d| +|link |0|0|+| + | + V + +----------+-+-+-+--+ + | 1 char|a|b|c|d | + +----------+-+-+-+--+ + |first_char|b|0|0|0 | + |last_char |n|0|0|-1| + |link |+|0|0|+ | + | | + | V + | symbols[2] ( "DAY" ) + V ++----------+--+-+-+-+-+-+-+-+-+-+--+ +| 2 char|d |e|f|j|h|i|j|k|l|m|n | ++----------+--+-+-+-+-+-+-+-+-+-+--+ +|first_char|0 |0|0|0|0|0|0|0|0|0|0 | +|last_char |-1|0|0|0|0|0|0|0|0|0|-1| +|link |+ |0|0|0|0|0|0|0|0|0|+ | + | | + V V + symbols[0] ( "ADD" ) symbols[1] ( "AND" ) + +for optimization, link is the 16-bit index in 'symbols' or 'sql_functions' +or search-array.. + +So, we can read full search-structure as 32-bit word + +TODO: +1. use instead to_upper_lex, special array + (substitute chars) without skip codes.. +2. try use reverse order of comparing.. + +*/ #define NO_YACC_SYMBOLS -#include -#include -#include +#include "my_global.h" +#include "my_sys.h" +#include "m_string.h" #ifndef __GNU_LIBRARY__ #define __GNU_LIBRARY__ // Skip warnings in getopt.h #endif @@ -26,348 +83,248 @@ #include "mysql_version.h" #include "lex.h" -my_bool opt_search; -int opt_verbose; -ulong opt_count; - -#define max_allowed_array 16000 // Don't generate bigger arrays than this -#define max_symbol 32767 // Use this for 'not found' -#define how_much_for_plus 8 // 2-8 -#define type_count 1 // 1-5 -#define char_table_count 5 -#define total_symbols (sizeof(symbols)/sizeof(SYMBOL) +\ - sizeof(sql_functions)/sizeof(SYMBOL)) - -#define how_much_and INT_MAX24 - -/* - The following only have to work with characters in the set - used by SQL commands -*/ - -#undef tolower -#define tolower(a) ((a) >= 'A' && (a) <= 'Z') ? ((a)- 'A' + 'a') : (a) - -static uint how_long_symbols,function_plus,function_mod,function_type; -static uint char_table[256]; -static uchar unique_length[256]; -static uchar bits[how_much_and/8+1]; -static uint primes[max_allowed_array+1]; -static ulong hash_results[type_count][how_much_for_plus+1][total_symbols]; -static ulong start_value=0; -static uint best_type; -static ulong best_t1,best_t2, best_start_value; - static struct my_option my_long_options[] = { {"help", '?', "Display help and exit", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"count", 'c', "Try count times to find a optimal hash table", - (gptr*) &opt_count, (gptr*) &opt_count, 0, GET_ULONG, REQUIRED_ARG, - 100000, 0, 0, 0, 0, 0}, - {"search", 'S', "Search after good rnd1 and rnd2 values", - (gptr*) &opt_search, (gptr*) &opt_search, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, - 0, 0}, - {"verbose", 'v', "Write some information while the program executes", - (gptr*) &opt_verbose, (gptr*) &opt_verbose, 0, GET_INT, NO_ARG, 0, 0, 0, - 0, 0, 0}, {"version", 'V', "Output version information and exit", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, - { 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0} }; -struct rand_struct { - unsigned long seed1,seed2,max_value; - double max_value_dbl; +struct hash_lex_struct +{ + char first_char; + char last_char; + union{ + hash_lex_struct *char_tails; + int iresult; + }; + int ithis; +}; + +hash_lex_struct *get_hash_struct_by_len(hash_lex_struct **root_by_len, + int len, int *max_len) +{ + if (*max_lenfirst_char= 0; + *max_len= len; + } + return (*root_by_len)+(len-1); +} + +void insert_into_hash(hash_lex_struct *root, const char *name, + int len_from_begin, int index, int function) +{ + hash_lex_struct *end, *cur, *tails; + + if (!root->first_char){ + root->first_char= -1; + root->iresult= index; + return; + } + + if (root->first_char==-1){ + int index2= root->iresult; + const char *name2= + (index2<0 ? sql_functions[-index2-1] : symbols[index2]).name + len_from_begin; + root->first_char= name2[0]; + root->last_char= root->first_char; + tails= (hash_lex_struct*)malloc(sizeof(hash_lex_struct)); + root->char_tails= tails; + tails->first_char= -1; + tails->iresult= index2; + } + + size_t real_size= (root->last_char-root->first_char+1); + + if (root->first_char>(*name)){ + size_t new_size= root->last_char-(*name)+1; + if (new_sizechar_tails; + tails= (hash_lex_struct*)realloc((char*)tails, + sizeof(hash_lex_struct)*new_size); + root->char_tails= tails; + memmove(tails+(new_size-real_size),tails,real_size*sizeof(hash_lex_struct)); + end= tails + new_size - real_size; + for (cur= tails; curfirst_char= 0; + root->first_char= (*name); + } + + if (root->last_char<(*name)){ + size_t new_size= (*name)-root->first_char+1; + if (new_sizechar_tails; + tails= (hash_lex_struct*)realloc((char*)tails, + sizeof(hash_lex_struct)*new_size); + root->char_tails= tails; + end= tails + new_size; + for (cur= tails+real_size; curfirst_char= 0; + root->last_char= (*name); + } + + insert_into_hash (root->char_tails+(*name)-root->first_char, + name+1,len_from_begin+1,index,function); +} + +hash_lex_struct *root_by_len= 0; +int max_len=0; + +hash_lex_struct *root_by_len2= 0; +int max_len2=0; + +void insert_symbols() +{ + size_t i= 0; + SYMBOL *cur; + for (cur= symbols; ilength,&max_len); + insert_into_hash(root,cur->name,0,i,0); + } +} + +void insert_sql_functions() +{ + size_t i= 0; + SYMBOL *cur; + for (cur= sql_functions; ilength,&max_len); + insert_into_hash(root,cur->name,0,-i-1,1); + } +} + +void generate_find_structs() +{ + root_by_len= 0; + max_len=0; + size_t i; + + SYMBOL *cur, *end= symbols + array_elements(symbols); + for (cur= symbols; cur < end; cur++) + cur->length=(uchar) strlen(cur->name); + end= sql_functions + array_elements(sql_functions); + for (cur= sql_functions; curlength=(uchar) strlen(cur->name); + + insert_symbols(); + + root_by_len2= root_by_len; + max_len2= max_len; + + root_by_len= 0; + max_len= 0; + + insert_symbols(); + insert_sql_functions(); +} + +char *hash_map= 0; +int size_hash_map= 0; + +void add_struct_to_map(hash_lex_struct *st) +{ + st->ithis= size_hash_map/4; + size_hash_map+= 4; + hash_map= (char*)realloc((char*)hash_map,size_hash_map); + hash_map[size_hash_map-4]= st->first_char==-1 ? 0 : st->first_char; + hash_map[size_hash_map-3]= + st->first_char==-1 || st->first_char==0 ? 0 : st->last_char; + if (st->first_char==-1) + { + hash_map[size_hash_map-2]= ((unsigned int)(int16)st->iresult)&255; + hash_map[size_hash_map-1]= ((unsigned int)(int16)st->iresult)>>8; + } + else if (st->first_char==0) + { + hash_map[size_hash_map-2]= ((unsigned int)(int16)array_elements(symbols))&255; + hash_map[size_hash_map-1]= ((unsigned int)(int16)array_elements(symbols))>>8; + } }; -void randominit(struct rand_struct *rand_st,ulong seed1, ulong seed2) -{ /* For mysql 3.21.# */ - rand_st->max_value= 0x3FFFFFFFL; - rand_st->max_value_dbl=(double) rand_st->max_value; - rand_st->seed1=seed1%rand_st->max_value ; - rand_st->seed2=seed2%rand_st->max_value; +void add_structs_to_map(hash_lex_struct *st, int len) +{ + hash_lex_struct *cur, *end= st+len; + for (cur= st; curfirst_char && cur->first_char!=-1) + add_structs_to_map(cur->char_tails,cur->last_char-cur->first_char+1); } -double rnd(struct rand_struct *rand_st) +void set_links(hash_lex_struct *st, int len) { - rand_st->seed1=(rand_st->seed1*3+rand_st->seed2) % rand_st->max_value; - rand_st->seed2=(rand_st->seed1+rand_st->seed2+33) % rand_st->max_value; - return (((double) rand_st->seed1)/rand_st->max_value_dbl); + hash_lex_struct *cur, *end= st+len; + for (cur= st; curfirst_char!=0 && cur->first_char!=-1){ + int ilink= cur->char_tails->ithis; + hash_map[cur->ithis*4+2]= ilink%256; + hash_map[cur->ithis*4+3]= ilink/256; + set_links(cur->char_tails,cur->last_char-cur->first_char+1); + } } - -static void make_char_table(ulong t1,ulong t2,int type) +void print_hash_map(const char *name) { - uint i; - struct rand_struct rand_st; - randominit(&rand_st,t1,t2); - - for (i=0 ; i < 256 ; i++) - { - switch (type) { - case 0: char_table[i]= i + (i << 8); break; - case 1: char_table[i]= i + ((i ^255 ) << 8); break; - case 2: char_table[i]= i; break; - case 3: char_table[i]= i + ((uint) (rnd(&rand_st)*255) << 8); break; - case 4: char_table[i]= (uint) (rnd(&rand_st)*255) + (i << 8); break; + printf("uchar %s[%d]= {\n",name,size_hash_map); + char *cur; + int i; + for (i=0, cur= hash_map; i 0) - { - switch (type) { - case 0: - nr= (nr ^ (char_table[(uchar) *s] + (nr << add))); - break; - case 1: - nr= (nr + (char_table[(uchar) *s] + (nr << add))); - break; - case 2: - nr= (nr ^ (char_table[(uchar) *s] ^ (nr << add))); - break; - case 3: - nr= (char_table[(uchar) *s] ^ (nr << add)); - break; - case 4: - nr+= nr+nr+((nr & 63)+pos)*((ulong) char_table[(uchar) *s]); - pos+=add; - break; - } - } - return nr & INT_MAX24; -} - -static int search(bool write_warning) -{ - uint size_symbols = sizeof(symbols)/sizeof(SYMBOL); - uint size_functions = sizeof(sql_functions)/sizeof(SYMBOL); - uint size=size_symbols + size_functions; - uint i=0,found,*prime,type; - int igra[max_allowed_array],test_count=INT_MAX; - uint possible_plus[how_much_for_plus*type_count+type_count]; - - how_long_symbols = sizeof(symbols)/sizeof(SYMBOL); - - bzero((char*) possible_plus,sizeof(possible_plus)); - found=0; - - /* Check first which function_plus are possible */ - for (type=0 ; type < type_count ; type ++) - { - for (function_plus = 1; - function_plus <= how_much_for_plus; - function_plus++) - { - bzero((char*) bits,sizeof(bits)); - for (i=0; i < size; i++) - { - ulong order= tab_index_function ((i < how_long_symbols) ? - symbols[i].name : - sql_functions[i-how_long_symbols].name, - function_plus, type); - hash_results[type][function_plus][i]=order; - uint pos=order/8; - uint bit=order & 7; - if (bits[pos] & (1 << bit)) - break; - bits[pos]|=1 << bit; - } - if (i == size) - { - possible_plus[found++]=function_plus; - } - } - possible_plus[found++]=0; // End marker - } - if (found == type_count) - { - if (write_warning) - fprintf(stderr,"\ -The hash function didn't return a unique value for any parameter\n\ -You have to change gen_lex_code.cc, function 'tab_index_function' to\n\ -generate unique values for some parameter. When you have succeeded in this,\n\ -you have to change 'main' to print out the new function\n"); - return(1); - } - - if (opt_verbose > 1) - fprintf (stderr,"Info: Possible add values: %d\n",found-type_count); - - for (prime=primes; (function_mod=*prime) ; prime++) - { - uint *plus_ptr=possible_plus; - for (type=0 ; type < type_count ; type++ ) - { - while ((function_plus= *plus_ptr++)) - { - ulong *order_pos= &hash_results[type][function_plus][0]; - if (test_count++ == INT_MAX) - { - test_count=1; - bzero((char*) igra,sizeof(igra)); - } - for (i=0; i= 1) { - fprintf(stderr,"%s: Too many arguments\n", my_progname); usage(0); - exit(1); + exit(1); } return(0); } -static uint max_prefix(const char *name) -{ - uint i; - uint max_length=1; - for (i=0 ; i < sizeof(symbols)/sizeof(SYMBOL) ; i++) - { - const char *str=symbols[i].name; - if (str != name) - { - const char *str2=name; - uint length; - while (*str && *str == *str2) - { - str++; - str2++; - } - length=(uint) (str2 - name)+1; - if (length > max_length) - max_length=length; - } - } - for (i=0 ; i < sizeof(sql_functions)/sizeof(SYMBOL) ; i++) - { - const char *str=sql_functions[i].name; - if (str != name) - { - const char *str2=name; - uint length; - while (*str && *str == *str2) - { - str++; - str2++; - } - length=(uint) (str2 - name)+1; - if (length > max_length) - max_length=length; - } - } - return max_length; -} - - -static void make_max_length_table(void) -{ - uint i; - for (i=0 ; i < sizeof(symbols)/sizeof(SYMBOL) ; i++) - { - uint length=max_prefix(symbols[i].name); - if (length > unique_length[(uchar) symbols[i].name[0]]) - { - unique_length[(uchar) symbols[i].name[0]]=length; - unique_length[(uchar) tolower(symbols[i].name[0])]=length; - } - } - for (i=0 ; i < sizeof(sql_functions)/sizeof(SYMBOL) ; i++) - { - uint length=max_prefix(sql_functions[i].name); - if (length > unique_length[(uchar) sql_functions[i].name[0]]) - { - unique_length[(uchar) sql_functions[i].name[0]]=length; - unique_length[(uchar) tolower(sql_functions[i].name[0])]=length; - } - } -} - - int main(int argc,char **argv) { - struct rand_struct rand_st; - static uint best_mod,best_add,best_functype; - int error; - MY_INIT(argv[0]); - start_value=2925024L; best_t1=654916L; best_t2=1723390L; best_type=3; /* mode=4943 add=1 type: 0 */ + if (get_options(argc,(char **) argv)) exit(1); - make_max_length_table(); - make_char_table(best_t1,best_t2,best_type); - make_prime_array(sizeof(symbols)/sizeof(SYMBOL) + - sizeof(sql_functions)/sizeof(SYMBOL)); - - if ((error=search(1)) > 0 || error && !opt_search) - exit(1); // This should work - best_mod=function_mod; best_add=function_plus; best_functype=function_type; - - if (opt_search) - { - time_t start_time=time((time_t*) 0); - randominit(&rand_st,start_time,start_time/2); // Some random values - printf("start_value=%ldL; best_t1=%ldL; best_t2=%ldL; best_type=%d; /* mode=%d add=%d type: %d */\n", - start_value, best_t1,best_t2,best_type,best_mod,best_add, - best_functype); - best_start_value=start_value; - for (uint i=1 ; i <= opt_count ; i++) - { - if (i % 10 == 0) - { - putchar('.'); - fflush(stdout); - } - ulong t1=(ulong) (rnd(&rand_st)*INT_MAX24); - ulong t2=(ulong) (rnd(&rand_st)*INT_MAX24); - uint type=(int) (rnd(&rand_st)*char_table_count); - start_value=(ulong) (rnd(&rand_st)*INT_MAX24); - make_char_table(t1,t2,type); - if (!search(0)) - { - best_mod=function_mod; best_add=function_plus; - best_functype=function_type; - best_t1=t1; best_t2=t2; best_type=type; - best_start_value=start_value; - printf("\nstart_value=%ldL; best_t1=%ldL; best_t2=%ldL; best_type=%d; /* mode=%d add=%d type: %d */\n", - best_start_value,best_t1,best_t2,best_type,best_mod,best_add, - best_functype); - } - if (opt_verbose && (i % 20000) == 0) - printf("\nstart_value=%ldL; best_t1=%ldL; best_t2=%ldL; best_type=%d; /* mode=%d add=%d type: %d */\n", - best_start_value,best_t1,best_t2,best_type,best_mod,best_add, - best_functype); - } - } - - function_mod=best_mod; function_plus=best_add; - make_char_table(best_t1,best_t2,best_type); - printf("/* Copyright (C) 2001 MySQL AB\n\ This program is free software; you can redistribute it and/or modify\n\ it under the terms of the GNU General Public License as published by\n\ @@ -533,38 +369,84 @@ int main(int argc,char **argv) GNU General Public License for more details.\n\n\ You should have received a copy of the GNU General Public License\n\ along with this program; if not, write to the Free Software\n\ - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */\n\n"); + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307\ + USA */\n\n"); -printf("/* This code is generated by gen_lex_hash.cc that seeks for a perfect\nhash function */\n\n"); + printf("/* This code is generated by gen_lex_hash.cc that seeks for\ + a perfect\nhash function */\n\n"); printf("#include \"lex.h\"\n\n"); - print_arrays(); + generate_find_structs(); + print_find_structs(); - printf("/* start_value=%ldL; best_t1=%ldL; best_t2=%ldL; best_type=%d; */ /* mode=%d add=%d type: %d */\n\n", - best_start_value, best_t1, best_t2, best_type, - best_mod, best_add, best_functype); + printf("\nunsigned int sql_functions_max_len=%d;\n",max_len); + printf("\nunsigned int symbols_max_len=%d;\n\n",max_len2); - printf("inline SYMBOL *get_hash_symbol(const char *s,unsigned int length,bool function)\n\ + printf +( +"inline SYMBOL *get_hash_symbol(const char *s,\n\ + unsigned int len,bool function)\n\ {\n\ - ulong idx = %lu+char_table[(uchar) *s];\n\ - SYMBOL *sim;\n\ - const char *start=s;\n\ - int i=unique_length[(uchar) *s++];\n\ - if (i > (int) length) i=(int) length;\n\ - while (--i > 0)\n\ - idx= (idx ^ (char_table[(uchar) *s++] + (idx << %d)));\n\ - idx=my_function_table[(idx & %d) %% %d];\n\ - if (idx >= %d)\n\ - {\n\ - if (!function || idx >= %d) return (SYMBOL*) 0;\n\ - sim=sql_functions + (idx - %d);\n\ + register uchar *hash_map;\n\ + register const char *cur_str= s;\n\ + if (function){\n\ + if (len>sql_functions_max_len) return 0;\n\ + hash_map= sql_functions_map;\n\ + register uint32 cur_struct= uint4korr(hash_map+((len-1)*4));\n\ +\n\ + for(;;){\n\ + register uchar first_char= (uchar)cur_struct;\n\ +\n\ + if (first_char==0){\n\ + register int16 ires= (int16)(cur_struct>>16);\n\ + if (ires==array_elements(symbols)) return 0;\n\ + register SYMBOL *res;\n\ + if (ires>=0) \n\ + res= symbols+ires;\n\ + else\n\ + res= sql_functions-ires-1;\n\ + register uint count= cur_str-s;\n\ + return lex_casecmp(cur_str,res->name+count,len-count) ? 0 : res;\n\ + }\n\ +\n\ + register uchar cur_char= (uchar)to_upper_lex[(uchar)*cur_str];\n\ + if (cur_char>=8;\n\ + if (cur_char>(uchar)cur_struct) return 0;\n\ +\n\ + cur_struct>>=8;\n\ + cur_struct= uint4korr(hash_map+\n\ + (((uint16)cur_struct + cur_char - first_char)*4));\n\ + cur_str++;\n\ + }\n\ + }else{\n\ + if (len>symbols_max_len) return 0;\n\ + hash_map= symbols_map;\n\ + register uint32 cur_struct= uint4korr(hash_map+((len-1)*4));\n\ +\n\ + for(;;){\n\ + register uchar first_char= (uchar)cur_struct;\n\ +\n\ + if (first_char==0){\n\ + register int16 ires= (int16)(cur_struct>>16);\n\ + if (ires==array_elements(symbols)) return 0;\n\ + register SYMBOL *res= symbols+ires;\n\ + register uint count= cur_str-s;\n\ + return lex_casecmp(cur_str,res->name+count,len-count)!=0 ? 0 : res;\n\ + }\n\ +\n\ + register uchar cur_char= (uchar)to_upper_lex[(uchar)*cur_str];\n\ + if (cur_char>=8;\n\ + if (cur_char>(uchar)cur_struct) return 0;\n\ +\n\ + cur_struct>>=8;\n\ + cur_struct= uint4korr(hash_map+\n\ + (((uint16)cur_struct + cur_char - first_char)*4));\n\ + cur_str++;\n\ + }\n\ }\n\ - else\n\ - sim=symbols + idx;\n\ - if ((length != sim->length) || lex_casecmp(start,sim->name,length))\n\ - return (SYMBOL *)0;\n\ - return sim;\n\ -}\n",(ulong) start_value,(int) function_plus,(int) how_much_and,function_mod,how_long_symbols,max_symbol,how_long_symbols); - exit(0); - return 0; +}\n" +); } + From 9a9e7ce0f4e9f9e60e6f8eb5b5d345c018893635 Mon Sep 17 00:00:00 2001 From: "bar@bar.mysql.r18.ru" <> Date: Wed, 6 Nov 2002 15:49:53 +0400 Subject: [PATCH 6/9] Item->thd_charset() - returns a default charset which should be used to compose strings appeared without charset context, for example, in convertion from numer into string type. --- sql/field.cc | 4 ++-- sql/item.cc | 19 ++++++++++++------- sql/item.h | 1 + sql/item_func.cc | 34 +++++++++++++++++----------------- sql/item_strfunc.cc | 2 +- sql/item_subselect.cc | 2 +- sql/item_sum.cc | 16 ++++++++-------- sql/item_timefunc.h | 18 +++++++++--------- sql/sql_analyse.cc | 4 ++-- 9 files changed, 53 insertions(+), 47 deletions(-) diff --git a/sql/field.cc b/sql/field.cc index d8742d487f9..a219a23ec70 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -4316,14 +4316,14 @@ int Field_blob::store(const char *from,uint len,CHARSET_INFO *cs) int Field_blob::store(double nr) { - value.set(nr,2,my_thd_charset); + value.set(nr,2,current_thd->thd_charset); return Field_blob::store(value.ptr(),(uint) value.length(), value.charset()); } int Field_blob::store(longlong nr) { - value.set(nr,my_thd_charset); + value.set(nr,current_thd->thd_charset); return Field_blob::store(value.ptr(), (uint) value.length(), value.charset()); } diff --git a/sql/item.cc b/sql/item.cc index 037e57b2b8a..d97f8dc4b71 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -117,6 +117,11 @@ bool Item::get_time(TIME *ltime) return 0; } +CHARSET_INFO * Item::thd_charset() const +{ + return current_thd->thd_charset; +} + Item_field::Item_field(Field *f) :Item_ident(NullS,f->table_name,f->field_name) { set_field(f); @@ -234,7 +239,7 @@ table_map Item_field::used_tables() const String *Item_int::val_str(String *str) { - str->set(value, my_thd_charset); + str->set(value, thd_charset()); return str; } @@ -242,7 +247,7 @@ void Item_int::print(String *str) { if (!name) { - str_value.set(value, my_thd_charset); + str_value.set(value, thd_charset()); name=str_value.c_ptr(); } str->append(name); @@ -250,7 +255,7 @@ void Item_int::print(String *str) String *Item_uint::val_str(String *str) { - str->set((ulonglong) value, my_thd_charset); + str->set((ulonglong) value, thd_charset()); return str; } @@ -258,7 +263,7 @@ void Item_uint::print(String *str) { if (!name) { - str_value.set((ulonglong) value, my_thd_charset); + str_value.set((ulonglong) value, thd_charset()); name=str_value.c_ptr(); } str->append(name); @@ -267,7 +272,7 @@ void Item_uint::print(String *str) String *Item_real::val_str(String *str) { - str->set(value,decimals,my_thd_charset); + str->set(value,decimals,thd_charset()); return str; } @@ -384,10 +389,10 @@ String *Item_param::val_str(String* str) { switch (item_result_type) { case INT_RESULT: - str->set(int_value, my_thd_charset); + str->set(int_value, thd_charset()); return str; case REAL_RESULT: - str->set(real_value, 2, my_thd_charset); + str->set(real_value, 2, thd_charset()); return str; default: return (String*) &str_value; diff --git a/sql/item.h b/sql/item.h index fc36148e443..c7c66102b43 100644 --- a/sql/item.h +++ b/sql/item.h @@ -84,6 +84,7 @@ public: virtual bool get_date(TIME *ltime,bool fuzzydate); virtual bool get_time(TIME *ltime); virtual bool is_null() { return 0; }; + virtual CHARSET_INFO *thd_charset() const; virtual CHARSET_INFO *charset() const { return str_value.charset(); }; virtual bool binary() const { return str_value.charset()->state & MY_CS_BINSORT ? 1 : 0 ; } virtual void set_charset(CHARSET_INFO *cs) { str_value.set_charset(cs); } diff --git a/sql/item_func.cc b/sql/item_func.cc index 8b2b2fc83a3..6cb98d4ed90 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -243,7 +243,7 @@ String *Item_real_func::val_str(String *str) if (null_value) return 0; /* purecov: inspected */ else - str->set(nr,decimals,my_thd_charset); + str->set(nr,decimals,thd_charset()); return str; } @@ -256,9 +256,9 @@ String *Item_num_func::val_str(String *str) if (null_value) return 0; /* purecov: inspected */ else if (!unsigned_flag) - str->set(nr,my_thd_charset); + str->set(nr,thd_charset()); else - str->set((ulonglong) nr,my_thd_charset); + str->set((ulonglong) nr,thd_charset()); } else { @@ -266,7 +266,7 @@ String *Item_num_func::val_str(String *str) if (null_value) return 0; /* purecov: inspected */ else - str->set(nr,decimals,my_thd_charset); + str->set(nr,decimals,thd_charset()); } return str; } @@ -286,9 +286,9 @@ String *Item_int_func::val_str(String *str) if (null_value) return 0; else if (!unsigned_flag) - str->set(nr,my_thd_charset); + str->set(nr,thd_charset()); else - str->set((ulonglong) nr,my_thd_charset); + str->set((ulonglong) nr,thd_charset()); return str; } @@ -315,9 +315,9 @@ String *Item_num_op::val_str(String *str) if (null_value) return 0; /* purecov: inspected */ else if (!unsigned_flag) - str->set(nr,my_thd_charset); + str->set(nr,thd_charset()); else - str->set((ulonglong) nr,my_thd_charset); + str->set((ulonglong) nr,thd_charset()); } else { @@ -325,7 +325,7 @@ String *Item_num_op::val_str(String *str) if (null_value) return 0; /* purecov: inspected */ else - str->set(nr,decimals,my_thd_charset); + str->set(nr,decimals,thd_charset()); } return str; } @@ -813,9 +813,9 @@ String *Item_func_min_max::val_str(String *str) if (null_value) return 0; else if (!unsigned_flag) - str->set(nr,my_thd_charset); + str->set(nr,thd_charset()); else - str->set((ulonglong) nr,my_thd_charset); + str->set((ulonglong) nr,thd_charset()); return str; } case REAL_RESULT: @@ -824,7 +824,7 @@ String *Item_func_min_max::val_str(String *str) if (null_value) return 0; /* purecov: inspected */ else - str->set(nr,decimals,my_thd_charset); + str->set(nr,decimals,thd_charset()); return str; } case STRING_RESULT: @@ -1447,7 +1447,7 @@ String *Item_func_udf_float::val_str(String *str) if (null_value) return 0; /* purecov: inspected */ else - str->set(nr,decimals,my_thd_charset); + str->set(nr,decimals,thd_charset()); return str; } @@ -1468,9 +1468,9 @@ String *Item_func_udf_int::val_str(String *str) if (null_value) return 0; else if (!unsigned_flag) - str->set(nr,my_thd_charset); + str->set(nr,thd_charset()); else - str->set((ulonglong) nr,my_thd_charset); + str->set((ulonglong) nr,thd_charset()); return str; } @@ -2034,10 +2034,10 @@ Item_func_get_user_var::val_str(String *str) return NULL; switch (entry->type) { case REAL_RESULT: - str->set(*(double*) entry->value,decimals,my_thd_charset); + str->set(*(double*) entry->value,decimals,thd_charset()); break; case INT_RESULT: - str->set(*(longlong*) entry->value,my_thd_charset); + str->set(*(longlong*) entry->value,thd_charset()); break; case STRING_RESULT: if (str->copy(entry->value, entry->length-1)) diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc index 20b01c9f1e8..40e9315d786 100644 --- a/sql/item_strfunc.cc +++ b/sql/item_strfunc.cc @@ -1469,7 +1469,7 @@ String *Item_func_format::val_str(String *str) if ((null_value=args[0]->null_value)) return 0; /* purecov: inspected */ dec= decimals ? decimals+1 : 0; - str->set(nr,decimals,my_thd_charset); + str->set(nr,decimals,thd_charset()); str_length=str->length(); if (nr < 0) str_length--; // Don't count sign diff --git a/sql/item_subselect.cc b/sql/item_subselect.cc index f45f386fe46..703173b191c 100644 --- a/sql/item_subselect.cc +++ b/sql/item_subselect.cc @@ -200,7 +200,7 @@ String *Item_exists_subselect::val_str(String *str) assign_null(); return 0; } - str->set(value,my_thd_charset); + str->set(value,thd_charset()); return str; } diff --git a/sql/item_sum.cc b/sql/item_sum.cc index 22b5e47fab5..e28e878e57f 100644 --- a/sql/item_sum.cc +++ b/sql/item_sum.cc @@ -93,7 +93,7 @@ Item_sum_num::val_str(String *str) double nr=val(); if (null_value) return 0; - str->set(nr,decimals,my_thd_charset); + str->set(nr,decimals,thd_charset()); return str; } @@ -359,13 +359,13 @@ Item_sum_hybrid::val_str(String *str) case STRING_RESULT: return &value; case REAL_RESULT: - str->set(sum,decimals,my_thd_charset); + str->set(sum,decimals,thd_charset()); break; case INT_RESULT: if (unsigned_flag) - str->set((ulonglong) sum_int,my_thd_charset); + str->set((ulonglong) sum_int,thd_charset()); else - str->set((longlong) sum_int,my_thd_charset); + str->set((longlong) sum_int,thd_charset()); break; } return str; // Keep compiler happy @@ -810,7 +810,7 @@ String *Item_avg_field::val_str(String *str) double nr=Item_avg_field::val(); if (null_value) return 0; - str->set(nr,decimals,my_thd_charset); + str->set(nr,decimals,thd_charset()); return str; } @@ -847,7 +847,7 @@ String *Item_std_field::val_str(String *str) double nr=val(); if (null_value) return 0; - str->set(nr,decimals,my_thd_charset); + str->set(nr,decimals,thd_charset()); return str; } @@ -1177,7 +1177,7 @@ String *Item_sum_udf_float::val_str(String *str) if (null_value) return 0; /* purecov: inspected */ else - str->set(nr,decimals,my_thd_charset); + str->set(nr,decimals,thd_charset()); return str; } @@ -1196,7 +1196,7 @@ String *Item_sum_udf_int::val_str(String *str) if (null_value) return 0; else - str->set(nr,my_thd_charset); + str->set(nr,thd_charset()); return str; } diff --git a/sql/item_timefunc.h b/sql/item_timefunc.h index fab8ea9fa9c..de2860d24ef 100644 --- a/sql/item_timefunc.h +++ b/sql/item_timefunc.h @@ -69,7 +69,7 @@ public: double val() { return (double) Item_func_month::val_int(); } String *val_str(String *str) { - str->set(val_int(), my_thd_charset); + str->set(val_int(), thd_charset()); return null_value ? 0 : str; } const char *func_name() const { return "month"; } @@ -177,7 +177,7 @@ public: longlong val_int(); double val() { return (double) val_int(); } String *val_str(String *str) { - str->set(val_int(), my_thd_charset); + str->set(val_int(), thd_charset()); return null_value ? 0 : str; } const char *func_name() const { return "weekday"; } @@ -243,7 +243,7 @@ public: } Field *tmp_table_field(TABLE *t_arg) { - return (!t_arg) ? result_field : new Field_date(maybe_null, name, t_arg, my_thd_charset); + return (!t_arg) ? result_field : new Field_date(maybe_null, name, t_arg, thd_charset()); } }; @@ -261,7 +261,7 @@ public: Field *tmp_table_field(TABLE *t_arg) { return (!t_arg) ? result_field : new Field_datetime(maybe_null, name, - t_arg, my_thd_charset); + t_arg, thd_charset()); } }; @@ -288,7 +288,7 @@ public: Field *tmp_table_field(TABLE *t_arg) { return (!t_arg) ? result_field : - new Field_time(maybe_null, name, t_arg, my_thd_charset); + new Field_time(maybe_null, name, t_arg, thd_charset()); } }; @@ -381,7 +381,7 @@ public: Field *tmp_table_field(TABLE *t_arg) { return (!t_arg) ? result_field : - new Field_time(maybe_null, name, t_arg, my_thd_charset); + new Field_time(maybe_null, name, t_arg, thd_charset()); } }; @@ -446,7 +446,7 @@ public: Field *tmp_table_field(TABLE *t_arg) { return (!t_arg) ? result_field : - new Field_date(maybe_null, name, t_arg, my_thd_charset); + new Field_date(maybe_null, name, t_arg, thd_charset()); } }; @@ -462,7 +462,7 @@ public: Field *tmp_table_field(TABLE *t_arg) { return (!t_arg) ? result_field : - new Field_time(maybe_null, name, t_arg, my_thd_charset); + new Field_time(maybe_null, name, t_arg, thd_charset()); } }; @@ -478,6 +478,6 @@ public: Field *tmp_table_field(TABLE *t_arg) { return (!t_arg) ? result_field : new Field_datetime(maybe_null, name, - t_arg, my_thd_charset); + t_arg, thd_charset()); } }; diff --git a/sql/sql_analyse.cc b/sql/sql_analyse.cc index d1ecdd029d5..5c735ab35d5 100644 --- a/sql/sql_analyse.cc +++ b/sql/sql_analyse.cc @@ -896,14 +896,14 @@ int collect_real(double *element, element_count count __attribute__((unused)), TREE_INFO *info) { char buff[MAX_FIELD_WIDTH]; - String s(buff, sizeof(buff),default_charset_info); + String s(buff, sizeof(buff),current_thd->thd_charset); if (info->found) info->str->append(','); else info->found = 1; info->str->append('\''); - s.set(*element, info->item->decimals, my_thd_charset); + s.set(*element, info->item->decimals, current_thd->thd_charset); info->str->append(s); info->str->append('\''); return 0; From 86b633379cdee7707b5dd69a3658e7ba1afa0946 Mon Sep 17 00:00:00 2001 From: "bar@bar.mysql.r18.ru" <> Date: Wed, 6 Nov 2002 17:01:12 +0400 Subject: [PATCH 7/9] Some charset code clean-ups --- sql/field.h | 7 ++++--- sql/field_conv.cc | 6 ++---- sql/filesort.cc | 7 +++---- sql/ha_heap.cc | 2 +- sql/ha_myisam.cc | 3 +-- sql/item.cc | 18 ++++++++---------- sql/item.h | 12 ++++++------ sql/item_strfunc.cc | 2 +- sql/item_timefunc.cc | 38 +++++++++++++++++++------------------- sql/opt_range.cc | 2 +- sql/sql_prepare.cc | 4 ++-- sql/sql_select.cc | 4 +--- sql/table.cc | 3 +-- 13 files changed, 50 insertions(+), 58 deletions(-) diff --git a/sql/field.h b/sql/field.h index 6505b2c8462..685b2c95d1f 100644 --- a/sql/field.h +++ b/sql/field.h @@ -198,7 +198,8 @@ public: uint fill_cache_field(struct st_cache_field *copy); virtual bool get_date(TIME *ltime,bool fuzzydate); virtual bool get_time(TIME *ltime); - virtual CHARSET_INFO *charset(void) { return my_charset_bin; } + virtual CHARSET_INFO *charset(void) const { return my_charset_bin; } + virtual void set_charset(CHARSET_INFO *charset) { } friend bool reopen_table(THD *,struct st_table *,bool); friend int cre_myisam(my_string name, register TABLE *form, uint options, ulonglong auto_increment_value); @@ -260,9 +261,9 @@ public: uint decimals() const { return NOT_FIXED_DEC; } void make_field(Send_field *); uint size_of() const { return sizeof(*this); } - CHARSET_INFO *charset(void) { return field_charset; } + CHARSET_INFO *charset(void) const { return field_charset; } - inline void set_charset(CHARSET_INFO *charset) { field_charset=charset; } + void set_charset(CHARSET_INFO *charset) { field_charset=charset; } bool binary() const { return field_charset->state & MY_CS_BINSORT ? 1 : 0; } inline int cmp_image(char *buff,uint length) { diff --git a/sql/field_conv.cc b/sql/field_conv.cc index efb7401779c..ab71f324732 100644 --- a/sql/field_conv.cc +++ b/sql/field_conv.cc @@ -525,8 +525,7 @@ void field_conv(Field *to,Field *from) if (!blob->value.is_alloced() && from->real_type() != FIELD_TYPE_STRING) blob->value.copy(); - blob->store(blob->value.ptr(),blob->value.length(), - to->binary()?default_charset_info:((Field_str*)to)->charset()); + blob->store(blob->value.ptr(),blob->value.length(),to->charset()); return; } if ((from->result_type() == STRING_RESULT && @@ -538,8 +537,7 @@ void field_conv(Field *to,Field *from) char buff[MAX_FIELD_WIDTH]; String result(buff,sizeof(buff),default_charset_info); from->val_str(&result,&result); - to->store(result.c_ptr_quick(),result.length(), - to->binary()?default_charset_info:((Field_str*)to)->charset()); + to->store(result.c_ptr_quick(),result.length(),to->charset()); // QQ: what to do if "from" and "to" are of dirrent charsets? } else if (from->result_type() == REAL_RESULT) diff --git a/sql/filesort.cc b/sql/filesort.cc index 13c48b745cd..53af60b0370 100644 --- a/sql/filesort.cc +++ b/sql/filesort.cc @@ -75,7 +75,7 @@ ha_rows filesort(THD *thd, TABLE *table, SORT_FIELD *sortorder, uint s_length, uchar **sort_keys; IO_CACHE tempfile, buffpek_pointers, *selected_records_file, *outfile; SORTPARAM param; - CHARSET_INFO *charset=table->table_charset; + CHARSET_INFO *charset=my_charset_bin; DBUG_ENTER("filesort"); DBUG_EXECUTE("info",TEST_filesort(sortorder,s_length);); #ifdef SKIP_DBUG_IN_FILESORT @@ -85,8 +85,7 @@ ha_rows filesort(THD *thd, TABLE *table, SORT_FIELD *sortorder, uint s_length, // BAR TODO: this is not absolutely correct, but OK for now for(i=0;ifields;i++) if (!table->field[i]->binary()) - charset=((Field_str*)(table->field[i]))->charset(); - charset=charset?charset:default_charset_info; + charset=table->field[i]->charset(); // /BAR TODO outfile= table->io_cache; @@ -930,7 +929,7 @@ sortlength(SORT_FIELD *sortorder, uint s_length) #ifdef USE_STRCOLL if (!sortorder->field->binary()) { - CHARSET_INFO *cs=((Field_str*)(sortorder->field))->charset(); + CHARSET_INFO *cs=sortorder->field->charset(); if (use_strnxfrm(cs)) sortorder->length= sortorder->length*cs->strxfrm_multiply; } diff --git a/sql/ha_heap.cc b/sql/ha_heap.cc index 6cfd3c881cc..c06421617dd 100644 --- a/sql/ha_heap.cc +++ b/sql/ha_heap.cc @@ -291,7 +291,7 @@ int ha_heap::create(const char *name, TABLE *table, seg->start= (uint) key_part->offset; seg->length= (uint) key_part->length; seg->flag = 0; - seg->charset= field->binary() ? NULL : ((Field_str*)field)->charset(); + seg->charset= field->charset(); if (field->null_ptr) { seg->null_bit= field->null_bit; diff --git a/sql/ha_myisam.cc b/sql/ha_myisam.cc index 64dbcfe2056..c7f0ccf69ee 100644 --- a/sql/ha_myisam.cc +++ b/sql/ha_myisam.cc @@ -1078,8 +1078,7 @@ int ha_myisam::create(const char *name, register TABLE *table, keydef[i].seg[j].start= pos->key_part[j].offset; keydef[i].seg[j].length= pos->key_part[j].length; keydef[i].seg[j].bit_start=keydef[i].seg[j].bit_end=0; - keydef[i].seg[j].language = field->binary() ? MY_CHARSET_CURRENT : - ((Field_str*)field)->charset()->number; + keydef[i].seg[j].language = field->charset()->number; if (field->null_ptr) { diff --git a/sql/item.cc b/sql/item.cc index d97f8dc4b71..9c70dad045c 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -313,15 +313,15 @@ void Item_param::set_double(double value) } -void Item_param::set_value(const char *str, uint length) +void Item_param::set_value(const char *str, uint length, CHARSET_INFO *cs) { - str_value.set(str,length,default_charset_info); + str_value.set(str,length,cs); item_result_type = STRING_RESULT; item_type = STRING_ITEM; } -void Item_param::set_longdata(const char *str, ulong length) +void Item_param::set_longdata(const char *str, ulong length, CHARSET_INFO *cs) { /* TODO: Fix this for binary handling by making use of buffer_type.. @@ -346,10 +346,8 @@ int Item_param::save_in_field(Field *field) double nr=val(); return (field->store(nr)) ? -1 : 0; } - String *result; - CHARSET_INFO *cs=default_charset_info; //fix this - result=val_str(&str_value); - return (field->store(result->ptr(),result->length(),cs)) ? -1 : 0; + String *result=val_str(&str_value); + return (field->store(result->ptr(),result->length(),field->charset())) ? -1 : 0; } @@ -658,7 +656,7 @@ int Item::save_in_field(Field *field) field->result_type() == STRING_RESULT) { String *result; - CHARSET_INFO *cs=field->binary()?my_charset_bin:((Field_str*)field)->charset(); + CHARSET_INFO *cs=field->charset(); char buff[MAX_FIELD_WIDTH]; // Alloc buffer for small columns str_value.set_quick(buff,sizeof(buff),cs); result=val_str(&str_value); @@ -690,7 +688,7 @@ int Item::save_in_field(Field *field) int Item_string::save_in_field(Field *field) { String *result; - CHARSET_INFO *cs=field->binary()?my_charset_bin:((Field_str*)field)->charset(); + CHARSET_INFO *cs=field->charset(); result=val_str(&str_value); if (null_value) return set_field_to_null(field); @@ -763,7 +761,7 @@ longlong Item_varbinary::val_int() int Item_varbinary::save_in_field(Field *field) { int error; - CHARSET_INFO *cs=field->binary()?default_charset_info:((Field_str*)field)->charset(); + CHARSET_INFO *cs=field->charset(); field->set_notnull(); if (field->result_type() == STRING_RESULT) { diff --git a/sql/item.h b/sql/item.h index c7c66102b43..fb6bed75d51 100644 --- a/sql/item.h +++ b/sql/item.h @@ -196,14 +196,14 @@ public: void set_null(); void set_int(longlong i); void set_double(double i); - void set_value(const char *str, uint length); - void set_long_str(const char *str, ulong length); - void set_long_binary(const char *str, ulong length); - void set_longdata(const char *str, ulong length); - void set_long_end(); + void set_value(const char *str, uint length, CHARSET_INFO *cs); + void set_long_str(const char *str, ulong length, CHARSET_INFO *cs); + void set_long_binary(const char *str, ulong length, CHARSET_INFO *cs); + void set_longdata(const char *str, ulong length, CHARSET_INFO *cs); + void set_long_end(); void reset() {} enum Item_result result_type () const - { return item_result_type; } + { return item_result_type; } Item *new_item() { return new Item_param(name); } }; diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc index 40e9315d786..f930afe14a2 100644 --- a/sql/item_strfunc.cc +++ b/sql/item_strfunc.cc @@ -1637,7 +1637,7 @@ String *Item_func_char::val_str(String *str) int32 num=(int32) args[i]->val_int(); if (!args[i]->null_value) #ifdef USE_MB - if (use_mb(default_charset_info)) + if (use_mb(charset())) { if (num&0xFF000000L) { str->append((char)(num>>24)); diff --git a/sql/item_timefunc.cc b/sql/item_timefunc.cc index b42b78c9c91..e81fecabe96 100644 --- a/sql/item_timefunc.cc +++ b/sql/item_timefunc.cc @@ -31,28 +31,28 @@ static String month_names[] = { - String("January", default_charset_info), - String("February", default_charset_info), - String("March", default_charset_info), - String("April", default_charset_info), - String("May", default_charset_info), - String("June", default_charset_info), - String("July", default_charset_info), - String("August", default_charset_info), - String("September", default_charset_info), - String("October", default_charset_info), - String("November", default_charset_info), - String("December", default_charset_info) + String("January", my_charset_latin1), + String("February", my_charset_latin1), + String("March", my_charset_latin1), + String("April", my_charset_latin1), + String("May", my_charset_latin1), + String("June", my_charset_latin1), + String("July", my_charset_latin1), + String("August", my_charset_latin1), + String("September", my_charset_latin1), + String("October", my_charset_latin1), + String("November", my_charset_latin1), + String("December", my_charset_latin1) }; static String day_names[] = { - String("Monday", default_charset_info), - String("Tuesday", default_charset_info), - String("Wednesday", default_charset_info), - String("Thursday", default_charset_info), - String("Friday", default_charset_info), - String("Saturday", default_charset_info), - String("Sunday", default_charset_info) + String("Monday", my_charset_latin1), + String("Tuesday", my_charset_latin1), + String("Wednesday", my_charset_latin1), + String("Thursday", my_charset_latin1), + String("Friday", my_charset_latin1), + String("Saturday", my_charset_latin1), + String("Sunday", my_charset_latin1) }; /* diff --git a/sql/opt_range.cc b/sql/opt_range.cc index 39e6b83221d..9a644553f26 100644 --- a/sql/opt_range.cc +++ b/sql/opt_range.cc @@ -976,7 +976,7 @@ get_mm_leaf(PARAM *param, Field *field, KEY_PART *key_part, &min_length,&max_length); else { - CHARSET_INFO *charset=((Field_str*)(field))->charset(); + CHARSET_INFO *charset=field->charset(); #ifdef USE_STRCOLL if (use_strnxfrm(charset)) like_error= my_like_range(charset, diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc index 2cf51f5d72e..08377a10501 100644 --- a/sql/sql_prepare.cc +++ b/sql/sql_prepare.cc @@ -271,7 +271,7 @@ static uchar* setup_param_field(Item_param *item_param, default: { ulong len=get_param_length(&pos); - item_param->set_value((const char*)pos,len); + item_param->set_value((const char*)pos,len,current_thd->thd_charset); pos+=len; } } @@ -829,7 +829,7 @@ void mysql_stmt_get_longdata(THD *thd, char *pos, ulong packet_length) sprintf(stmt->last_error, ER(ER_WRONG_ARGUMENTS), "get_longdata"); DBUG_VOID_RETURN; } - stmt->param[param_number].set_longdata(pos, packet_length-9); + stmt->param[param_number].set_longdata(pos, packet_length-9, current_thd->thd_charset); stmt->long_data_used= 1; DBUG_VOID_RETURN; } diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 93d48e3e1e0..20d9c1ca208 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -4231,9 +4231,7 @@ static bool create_myisam_tmp_table(TABLE *table,TMP_TABLE_PARAM *param, { Field *field=keyinfo->key_part[i].field; seg->flag= 0; - seg->language= field->binary() ? MY_CHARSET_CURRENT : - ((Field_str*)field)->charset()->number; - + seg->language= field->charset()->number; seg->length= keyinfo->key_part[i].length; seg->start= keyinfo->key_part[i].offset; if (field->flags & BLOB_FLAG) diff --git a/sql/table.cc b/sql/table.cc index 6e2df849700..bad453f2cad 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -392,8 +392,7 @@ int openfrm(const char *name, const char *alias, uint db_stat, uint prgflag, outparam->fieldnames.type_names[i], outparam); reg_field->comment=comment; - if (!reg_field->binary()) - ((Field_str*) reg_field)->set_charset(charset); + reg_field->set_charset(charset); if (!(reg_field->flags & NOT_NULL_FLAG)) { if ((null_bit<<=1) == 256) From 2434be61f8bdf32af2f42f8aa0d758e27b1fc98b Mon Sep 17 00:00:00 2001 From: "bar@bar.mysql.r18.ru" <> Date: Wed, 6 Nov 2002 17:43:22 +0400 Subject: [PATCH 8/9] String->copy() now has a charset arg --- sql/field.cc | 2 +- sql/field.h | 2 +- sql/item_func.cc | 5 ++--- sql/item_strfunc.cc | 12 +++++++----- sql/item_sum.cc | 2 +- sql/item_timefunc.cc | 4 ++-- sql/procedure.h | 2 +- sql/sql_string.cc | 7 ++++--- sql/sql_string.h | 2 +- 9 files changed, 20 insertions(+), 18 deletions(-) diff --git a/sql/field.cc b/sql/field.cc index a219a23ec70..73ef4439bc9 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -4302,7 +4302,7 @@ int Field_blob::store(const char *from,uint len,CHARSET_INFO *cs) } } #endif /* USE_TIS620 */ - value.copy(from,len); + value.copy(from,len,charset()); from=value.ptr(); #ifdef USE_TIS620 my_free(th_ptr,MYF(MY_ALLOW_ZERO_PTR)); diff --git a/sql/field.h b/sql/field.h index 685b2c95d1f..8c4c48968c4 100644 --- a/sql/field.h +++ b/sql/field.h @@ -887,7 +887,7 @@ public: inline bool copy() { char *tmp; get_ptr(&tmp); - if (value.copy(tmp,get_length())) + if (value.copy(tmp,get_length(),charset())) { Field_blob::reset(); return 1; diff --git a/sql/item_func.cc b/sql/item_func.cc index 6cb98d4ed90..543a96107dc 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -1568,7 +1568,7 @@ void item_user_lock_release(ULL *ull) char buf[256]; const char *command="DO RELEASE_LOCK(\""; String tmp(buf,sizeof(buf), system_charset_info); - tmp.copy(command, strlen(command)); + tmp.copy(command, strlen(command), tmp.charset()); tmp.append(ull->key,ull->key_length); tmp.append("\")"); Query_log_event qev(current_thd,tmp.ptr(), tmp.length()); @@ -2040,12 +2040,11 @@ Item_func_get_user_var::val_str(String *str) str->set(*(longlong*) entry->value,thd_charset()); break; case STRING_RESULT: - if (str->copy(entry->value, entry->length-1)) + if (str->copy(entry->value, entry->length-1, entry->var_charset)) { null_value=1; return NULL; } - str->set_charset(entry->var_charset); break; } return str; diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc index f930afe14a2..6f121ecdc06 100644 --- a/sql/item_strfunc.cc +++ b/sql/item_strfunc.cc @@ -1373,7 +1373,7 @@ String *Item_func_database::val_str(String *str) String *Item_func_user::val_str(String *str) { THD *thd=current_thd; - if (str->copy((const char*) thd->user,(uint) strlen(thd->user)) || + if (str->copy((const char*) thd->user,(uint) strlen(thd->user), system_charset_info) || str->append('@') || str->append(thd->host ? thd->host : thd->ip ? thd->ip : "")) return &empty_string; @@ -1899,7 +1899,7 @@ String *Item_func_conv::val_str(String *str) else dec= (longlong) strtoull(res->c_ptr(),&endptr,from_base); ptr= longlong2str(dec,ans,to_base); - if (str->copy(ans,(uint32) (ptr-ans))) + if (str->copy(ans,(uint32) (ptr-ans), thd_charset())) return &empty_string; return str; } @@ -2120,7 +2120,7 @@ String *Item_func_charset::val_str(String *str) if ((null_value=(args[0]->null_value || !res->charset()))) return 0; - str->copy(res->charset()->name,strlen(res->charset()->name)); + str->copy(res->charset()->name,strlen(res->charset()->name),default_charset_info); return str; } @@ -2135,7 +2135,7 @@ String *Item_func_hex::val_str(String *str) if ((null_value= args[0]->null_value)) return 0; ptr= longlong2str(dec,ans,16); - if (str->copy(ans,(uint32) (ptr-ans))) + if (str->copy(ans,(uint32) (ptr-ans),default_charset_info)) return &empty_string; // End of memory return str; } @@ -2454,7 +2454,9 @@ String *Item_func_geometry_type::val_str(String *str) if ((null_value=(args[0]->null_value || geom.create_from_wkb(wkt->ptr(),wkt->length())))) return 0; - str->copy(geom.get_class_info()->m_name,strlen(geom.get_class_info()->m_name)); + str->copy(geom.get_class_info()->m_name, + strlen(geom.get_class_info()->m_name), + default_charset_info); return str; } diff --git a/sql/item_sum.cc b/sql/item_sum.cc index e28e878e57f..db4c45fc412 100644 --- a/sql/item_sum.cc +++ b/sql/item_sum.cc @@ -106,7 +106,7 @@ Item_sum_int::val_str(String *str) return 0; char buff[21]; uint length= (uint) (longlong10_to_str(nr,buff,-10)-buff); - str->copy(buff,length); + str->copy(buff,length,thd_charset()); return str; } diff --git a/sql/item_timefunc.cc b/sql/item_timefunc.cc index e81fecabe96..8a1bd0be291 100644 --- a/sql/item_timefunc.cc +++ b/sql/item_timefunc.cc @@ -396,7 +396,7 @@ String *Item_date::val_str(String *str) return (String*) 0; if (!value) // zero daynr { - str->copy("0000-00-00",10); + str->copy("0000-00-00",10,my_charset_latin1); return str; } if (str->alloc(11)) @@ -547,7 +547,7 @@ String *Item_func_sec_to_time::val_str(String *str) uint sec= (uint) ((ulonglong) seconds % 3600); length= my_sprintf(buff,(buff,"%s%02lu:%02u:%02u",sign,(long) (seconds/3600), sec/60, sec % 60)); - str->copy(buff, length); + str->copy(buff, length, my_charset_latin1); return str; } diff --git a/sql/procedure.h b/sql/procedure.h index 3792d823b12..3434079a8fb 100644 --- a/sql/procedure.h +++ b/sql/procedure.h @@ -94,7 +94,7 @@ public: enum_field_types field_type() const { return FIELD_TYPE_STRING; } void set(double nr) { str_value.set(nr, 2, my_thd_charset); } void set(longlong nr) { str_value.set(nr, my_thd_charset); } - void set(const char *str, uint length) { str_value.copy(str,length); } + void set(const char *str, uint length) { str_value.copy(str,length, my_thd_charset); } double val() { return atof(str_value.ptr()); } longlong val_int() { return strtoll(str_value.ptr(),NULL,10); } String *val_str(String*) diff --git a/sql/sql_string.cc b/sql/sql_string.cc index 1276020e3c3..f0f31004544 100644 --- a/sql/sql_string.cc +++ b/sql/sql_string.cc @@ -117,7 +117,7 @@ bool String::set(double num,uint decimals, CHARSET_INFO *cs) if (decimals >= NOT_FIXED_DEC) { sprintf(buff,"%.14g",num); // Enough for a DATETIME - return copy(buff, (uint32) strlen(buff)); + return copy(buff, (uint32) strlen(buff), my_charset_latin1); } #ifdef HAVE_FCONVERT int decpt,sign; @@ -182,7 +182,7 @@ end: #else sprintf(buff,"%.*f",(int) decimals,num); #endif - return copy(buff,(uint32) strlen(buff)); + return copy(buff,(uint32) strlen(buff), my_charset_latin1); #endif } @@ -208,13 +208,14 @@ bool String::copy(const String &str) return FALSE; } -bool String::copy(const char *str,uint32 arg_length) +bool String::copy(const char *str,uint32 arg_length, CHARSET_INFO *cs) { if (alloc(arg_length)) return TRUE; if ((str_length=arg_length)) memcpy(Ptr,str,arg_length); Ptr[arg_length]=0; + str_charset=cs; return FALSE; } diff --git a/sql/sql_string.h b/sql/sql_string.h index c881cb22c5c..4ac4308f113 100644 --- a/sql/sql_string.h +++ b/sql/sql_string.h @@ -178,7 +178,7 @@ public: bool copy(); // Alloc string if not alloced bool copy(const String &s); // Allocate new string - bool copy(const char *s,uint32 arg_length); // Allocate new string + bool copy(const char *s,uint32 arg_length, CHARSET_INFO *cs); // Allocate new string bool append(const String &s); bool append(const char *s,uint32 arg_length=0); bool append(IO_CACHE* file, uint32 arg_length); From e34e82d156e7b541fe3926f4c9e63a75bff93404 Mon Sep 17 00:00:00 2001 From: "lenz@mysql.com" <> Date: Wed, 6 Nov 2002 15:01:03 +0100 Subject: [PATCH 9/9] - configure.in: replaced AM_PROG_LIBTOOL with AC_PROG_LIBTOOL, since the old macro name is deprecated (according to the libtool 1.4.2 docs). --- configure.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.in b/configure.in index f55ed69b348..5de157a49c9 100644 --- a/configure.in +++ b/configure.in @@ -161,7 +161,7 @@ fi AC_PROG_RANLIB # We use libtool #AC_LIBTOOL_WIN32_DLL -AM_PROG_LIBTOOL +AC_PROG_LIBTOOL #AC_LIBTOOL_DLOPEN AC_LIBTOOL_WIN32_DLL AC_DISABLE_FAST_INSTALL AC_DISABLE_SHARED AC_DISABLE_STATIC