summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpeter@mysql.com <>2002-11-05 21:31:03 +0300
committerpeter@mysql.com <>2002-11-05 21:31:03 +0300
commit8bcace70434836acfe66a6ad5ff93c7a7afdd1eb (patch)
treef8daa8b127bb4bf13e3f4de2b7a731345058335c
parentecedc7ac35009143b202f813e4c8df2e41ab558a (diff)
parent529146269dea329a8a3d89783cc3c612fa86c4d6 (diff)
downloadmariadb-git-8bcace70434836acfe66a6ad5ff93c7a7afdd1eb.tar.gz
Merge mysql.com:/home/pz/mysql/mysql-4.1-root
into mysql.com:/home/pz/mysql/mysql-4.1
-rw-r--r--bdb/dbinc_auto/crypto_ext.h37
-rw-r--r--bdb/dbinc_auto/int_def.in1328
-rwxr-xr-xbdb/dist/s_tags10
-rw-r--r--bdb/test/TESTS1437
-rw-r--r--client/mysqldump.c22
-rw-r--r--sql-bench/crash-me.sh37
-rw-r--r--sql-bench/test-insert.sh51
-rw-r--r--sql/item.cc53
-rw-r--r--sql/item_subselect.cc18
-rw-r--r--sql/item_sum.cc5
-rw-r--r--sql/log_event.cc6
-rw-r--r--sql/mini_client.cc1
-rw-r--r--sql/mysql_priv.h19
-rw-r--r--sql/sql_base.cc23
-rw-r--r--sql/sql_cache.cc6
-rw-r--r--sql/sql_class.h6
-rw-r--r--sql/sql_delete.cc7
-rw-r--r--sql/sql_derived.cc4
-rw-r--r--sql/sql_insert.cc2
-rw-r--r--sql/sql_lex.cc172
-rw-r--r--sql/sql_lex.h92
-rw-r--r--sql/sql_parse.cc47
-rw-r--r--sql/sql_prepare.cc4
-rw-r--r--sql/sql_repl.cc4
-rw-r--r--sql/sql_select.cc28
-rw-r--r--sql/sql_union.cc27
-rw-r--r--sql/sql_update.cc6
-rw-r--r--sql/sql_yacc.yy349
28 files changed, 683 insertions, 3118 deletions
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_<whatever>
- 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 <random letter>: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)
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);
}
}
diff --git a/sql-bench/crash-me.sh b/sql-bench/crash-me.sh
index d66e8f47d6a..02e3072a3f9 100644
--- a/sql-bench/crash-me.sh
+++ b/sql-bench/crash-me.sh
@@ -2009,6 +2009,43 @@ find_limit("number of columns in group by","columns_in_group_by",
["drop table crash_q $drop_attr"],
$max_order_by));
+
+
+# Safe arithmetic test
+
+$prompt="safe decimal arithmetic";
+$key="safe_decimal_arithmetic";
+if (!defined($limits{$key}))
+{
+ print "$prompt=";
+ save_incomplete($limit,$prompt);
+ if (!safe_query($server->create("crash_me_a",["a decimal(10,2)","b decimal(10,2)"])))
+ {
+ print DBI->errstr();
+ die "Can't create table 'crash_me_a' $DBI::errstr\n";
+ };
+
+ if (!safe_query(["insert into crash_me_a (a,b) values (11.4,18.9)"]))
+ {
+ die "Can't insert into table 'crash_me_a' a record: $DBI::errstr\n";
+ };
+
+ $arithmetic_safe = 'no';
+ $arithmetic_safe = 'yes'
+ if ( (safe_query_result('select count(*) from crash_me_a where a+b=30.3',1,0) == 0)
+ and (safe_query_result('select count(*) from crash_me_a where a+b-30.3 = 0',1,0) == 0)
+ and (safe_query_result('select count(*) from crash_me_a where a+b-30.3 < 0',0,0) == 0)
+ and (safe_query_result('select count(*) from crash_me_a where a+b-30.3 > 0',0,0) == 0) );
+ save_config_data($key,$arithmetic_safe,$prompt);
+ print "$arithmetic_safe\n";
+ assert("drop table crash_me_a $drop_attr");
+}
+ else
+{
+ print "$prompt=$limits{$key} (cached)\n";
+}
+
+
#
# End of test
#
diff --git a/sql-bench/test-insert.sh b/sql-bench/test-insert.sh
index 085d7cce7f3..93bc2840b3b 100644
--- a/sql-bench/test-insert.sh
+++ b/sql-bench/test-insert.sh
@@ -281,6 +281,57 @@ if ($limits->{'unique_index'})
select_test:
+# ----------------- prepared+executed/prepared*executed tests
+
+print "Test of prepared+execute/once prepared many execute selects\n";
+$loop_time=new Benchmark;
+
+for ($i=1 ; $i <= $opt_loop_count ; $i++)
+{
+ my ($key_value)=$random[$i];
+ my ($query)= "select * from bench1 where id=$key_value";
+ print "$query\n" if ($opt_debug);
+ $sth = $dbh->prepare($query);
+ if (! $sth)
+ {
+ die "error in prepare select with id = $key_value : $DBI::errstr";
+ };
+ if (! $sth->execute)
+ {
+ die "cannot execute prepare select with id = $key_value : $DBI::errstr";
+ }
+ while ($sth->fetchrow_arrayref) { };
+ $sth->finish;
+};
+$end_time=new Benchmark;
+print "Time for prepared_select ($opt_loop_count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+$loop_time=new Benchmark;
+$query= "select * from bench1 where id=?";
+$sth = $dbh->prepare($query);
+if (! $sth)
+{
+ die "cannot prepare select: $DBI::errstr";
+};
+
+for ($i=1 ; $i <= $opt_loop_count ; $i++)
+{
+ my ($key_value)=$random[$i];
+ $sth->bind_param(1,$key_value);
+ print "$query , id = $key_value\n" if ($opt_debug);
+ if (! $sth->execute)
+ {
+ die "cannot execute prepare select with id = $key_value : $DBI::errstr";
+ }
+ while ($sth->fetchrow_arrayref) { };
+};
+$sth->finish;
+$end_time=new Benchmark;
+print "Time for once_prepared_select ($opt_loop_count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+
print "Retrieving data from the table\n";
$loop_time=new Benchmark;
$error=0;
diff --git a/sql/item.cc b/sql/item.cc
index 7673aaf097e..037e57b2b8a 100644
--- a/sql/item.cc
+++ b/sql/item.cc
@@ -441,12 +441,11 @@ bool Item_field::fix_fields(THD *thd, TABLE_LIST *tables, Item **ref)
cause error ER_NON_UNIQ_ERROR in find_field_in_tables.
*/
SELECT_LEX *last= 0;
- for (SELECT_LEX *sl= thd->lex.select->outer_select();
+ for (SELECT_LEX *sl= thd->lex.current_select->outer_select();
sl;
sl= sl->outer_select())
if ((tmp= find_field_in_tables(thd, this,
- (TABLE_LIST*)
- (last= sl)->table_list.first,
+ (last= sl)->get_table_list(),
0)) != not_found_field)
break;
if (!tmp)
@@ -464,20 +463,7 @@ bool Item_field::fix_fields(THD *thd, TABLE_LIST *tables, Item **ref)
Mark all selects from resolved to 1 before select where was
found table as depended (of select where was found table)
*/
- for (SELECT_LEX *s= thd->lex.select;
- s &&s != last;
- s= s->outer_select())
- if( !s->depended )
- {
- // Select is depended of outer select
- s->depended= s->master_unit()->depended= 1;
- //Tables will be reopened many times
- for (TABLE_LIST *tbl=
- (TABLE_LIST*)s->table_list.first;
- tbl;
- tbl= tbl->next)
- tbl->shared= 1;
- }
+ thd->lex.current_select->mark_as_dependent(last);
}
}
else if (!tmp)
@@ -822,9 +808,11 @@ bool Item_ref::fix_fields(THD *thd,TABLE_LIST *tables, Item **reference)
{
if (!ref)
{
- SELECT_LEX *sl=thd->lex.select->outer_select();
- if ((ref= find_item_in_list(this, thd->lex.select->item_list,
- (sl ? REPORT_EXCEPT_NOT_FOUND : REPORT_ALL_ERRORS))) ==
+ SELECT_LEX *sl= thd->lex.current_select->outer_select();
+ if ((ref= find_item_in_list(this,
+ *(thd->lex.current_select->get_item_list()),
+ (sl ? REPORT_EXCEPT_NOT_FOUND :
+ REPORT_ALL_ERRORS))) ==
(Item **)not_found_item)
{
/*
@@ -850,31 +838,16 @@ bool Item_ref::fix_fields(THD *thd,TABLE_LIST *tables, Item **reference)
else if (ref == (Item **)not_found_item)
{
// Call to report error
- find_item_in_list(this, thd->lex.select->item_list, REPORT_ALL_ERRORS);
- ref=0;
+ find_item_in_list(this,
+ *(thd->lex.current_select->get_item_list()),
+ REPORT_ALL_ERRORS);
+ ref= 0;
return 1;
}
else
{
depended_from= last;
- /*
- Mark all selects from resolved to 1 before select where was
- found table as depended (of select where was found table)
- */
- for (SELECT_LEX *s= thd->lex.select;
- s &&s != last;
- s= s->outer_select())
- if( !s->depended )
- {
- // Select is depended of outer select
- s->depended= s->master_unit()->depended= 1;
- //Tables will be reopened many times
- for (TABLE_LIST *tbl=
- (TABLE_LIST*)s->table_list.first;
- tbl;
- tbl= tbl->next)
- tbl->shared= 1;
- }
+ thd->lex.current_select->mark_as_dependent(last);
}
}
else if (!ref)
diff --git a/sql/item_subselect.cc b/sql/item_subselect.cc
index 82310710a9d..f45f386fe46 100644
--- a/sql/item_subselect.cc
+++ b/sql/item_subselect.cc
@@ -252,8 +252,8 @@ int subselect_single_select_engine::prepare()
if (prepared)
return 0;
prepared= 1;
- SELECT_LEX *save_select= thd->lex.select;
- thd->lex.select= select_lex;
+ SELECT_LEX_NODE *save_select= thd->lex.current_select;
+ thd->lex.current_select= select_lex;
if(join->prepare((TABLE_LIST*) select_lex->table_list.first,
select_lex->where,
(ORDER*) select_lex->order_list.first,
@@ -262,7 +262,7 @@ int subselect_single_select_engine::prepare()
(ORDER*) 0, select_lex,
select_lex->master_unit(), 0))
return 1;
- thd->lex.select= save_select;
+ thd->lex.current_select= save_select;
return 0;
}
@@ -310,7 +310,7 @@ int subselect_single_select_engine::exec()
DBUG_RETURN(join->error?join->error:1);
}
}
- if (select_lex->depended && executed)
+ if (select_lex->dependent && executed)
{
if (join->reinit())
DBUG_RETURN(1);
@@ -319,10 +319,10 @@ int subselect_single_select_engine::exec()
}
if (!executed)
{
- SELECT_LEX *save_select= join->thd->lex.select;
- join->thd->lex.select= select_lex;
+ SELECT_LEX_NODE *save_select= join->thd->lex.current_select;
+ join->thd->lex.current_select= select_lex;
join->exec();
- join->thd->lex.select= save_select;
+ join->thd->lex.current_select= save_select;
executed= 1;
DBUG_RETURN(join->error||thd->fatal_error);
}
@@ -346,10 +346,10 @@ uint subselect_union_engine::cols()
bool subselect_single_select_engine::depended()
{
- return select_lex->depended;
+ return select_lex->dependent;
}
bool subselect_union_engine::depended()
{
- return unit->depended;
+ return unit->dependent;
}
diff --git a/sql/item_sum.cc b/sql/item_sum.cc
index ae1a86845bf..22b5e47fab5 100644
--- a/sql/item_sum.cc
+++ b/sql/item_sum.cc
@@ -943,7 +943,10 @@ bool Item_sum_count_distinct::fix_fields(THD *thd, TABLE_LIST *tables,
bool Item_sum_count_distinct::setup(THD *thd)
{
List<Item> list;
- SELECT_LEX *select_lex= current_lex->select;
+ SELECT_LEX *select_lex= current_lex->current_select->select_lex();
+ if (select_lex->linkage == GLOBAL_OPTIONS_TYPE)
+ return 1;
+
/* Create a table with an unique key over all parameters */
for (uint i=0; i < arg_count ; i++)
{
diff --git a/sql/log_event.cc b/sql/log_event.cc
index 014cdcb4961..c168c951c8f 100644
--- a/sql/log_event.cc
+++ b/sql/log_event.cc
@@ -841,9 +841,9 @@ int Query_log_event::exec_event(struct st_relay_log_info* rli)
VOID(pthread_mutex_lock(&LOCK_thread_count));
thd->query_id = query_id++;
VOID(pthread_mutex_unlock(&LOCK_thread_count));
- thd->query_error = 0; // clear error
- thd->net.last_errno = 0;
- thd->net.last_error[0] = 0;
+ thd->query_error= 0; // clear error
+ thd->clear_error();
+
thd->slave_proxy_id = thread_id; // for temp tables
/*
diff --git a/sql/mini_client.cc b/sql/mini_client.cc
index d678e76c5ed..aa84a52eb0b 100644
--- a/sql/mini_client.cc
+++ b/sql/mini_client.cc
@@ -451,6 +451,7 @@ mc_simple_command(MYSQL *mysql,enum enum_server_command command,
mysql->net.last_error[0]=0;
mysql->net.last_errno=0;
+ mysql->net.report_error=0;
mysql->info=0;
mysql->affected_rows= ~(my_ulonglong) 0;
net_clear(net); /* Clear receive buffer */
diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h
index c3311da864c..c10a79be729 100644
--- a/sql/mysql_priv.h
+++ b/sql/mysql_priv.h
@@ -540,11 +540,6 @@ bool add_field_to_list(char *field_name, enum enum_field_types type,
char *change, TYPELIB *interval,CHARSET_INFO *cs);
void store_position_for_column(const char *name);
bool add_to_list(SQL_LIST &list,Item *group,bool asc=0);
-TABLE_LIST *add_table_to_list(Table_ident *table,LEX_STRING *alias,
- bool updating,
- thr_lock_type flags=TL_UNLOCK,
- List<String> *use_index=0,
- List<String> *ignore_index=0);
void add_join_on(TABLE_LIST *b,Item *expr);
void add_join_natural(TABLE_LIST *a,TABLE_LIST *b);
bool add_proc_to_list(Item *item);
@@ -565,8 +560,8 @@ int setup_fields(THD *thd,TABLE_LIST *tables,List<Item> &item,
bool set_query_id,List<Item> *sum_func_list,
bool allow_sum_func);
int setup_conds(THD *thd,TABLE_LIST *tables,COND **conds);
-int setup_ftfuncs(THD *thd);
-int init_ftfuncs(THD *thd, bool no_order);
+int setup_ftfuncs(SELECT_LEX* select);
+int init_ftfuncs(THD *thd, SELECT_LEX* select, bool no_order);
void wait_for_refresh(THD *thd);
int open_tables(THD *thd,TABLE_LIST *tables);
int open_and_lock_tables(THD *thd,TABLE_LIST *tables);
@@ -853,19 +848,19 @@ Item *get_system_var(enum_var_type var_type, const char *var_name, uint length,
inline bool add_item_to_list(Item *item)
{
- return current_lex->select->item_list.push_back(item);
+ return current_lex->current_select->add_item_to_list(item);
}
inline bool add_value_to_list(Item *value)
{
return current_lex->value_list.push_back(value);
}
-inline bool add_order_to_list(Item *item,bool asc)
+inline bool add_order_to_list(Item *item, bool asc)
{
- return add_to_list(current_lex->select->order_list,item,asc);
+ return current_lex->current_select->add_order_to_list(item, asc);
}
-inline bool add_group_to_list(Item *item,bool asc)
+inline bool add_group_to_list(Item *item, bool asc)
{
- return add_to_list(current_lex->select->group_list,item,asc);
+ return current_lex->current_select->add_group_to_list(item, asc);
}
inline void mark_as_null_row(TABLE *table)
{
diff --git a/sql/sql_base.cc b/sql/sql_base.cc
index d9818053e89..77253d49ed0 100644
--- a/sql/sql_base.cc
+++ b/sql/sql_base.cc
@@ -1464,9 +1464,8 @@ static int open_unireg_entry(THD *thd, TABLE *entry, const char *db,
}
}
pthread_mutex_unlock(&LOCK_open);
- thd->net.last_error[0]=0; // Clear error message
- thd->net.last_errno=0;
- error=0;
+ thd->clear_error(); // Clear error message
+ error= 0;
if (openfrm(path,alias,
(uint) (HA_OPEN_KEYFILE | HA_OPEN_RNDFILE | HA_GET_INDEX |
HA_TRY_READ_ONLY),
@@ -1476,8 +1475,7 @@ static int open_unireg_entry(THD *thd, TABLE *entry, const char *db,
(entry->file->is_crashed() && entry->file->check_and_repair(thd)))
{
/* Give right error message */
- thd->net.last_error[0]=0;
- thd->net.last_errno=0;
+ thd->clear_error();
my_error(ER_NOT_KEYFILE, MYF(0), name, my_errno);
sql_print_error("Error: Couldn't repair table: %s.%s",db,name);
if (entry->file)
@@ -1486,8 +1484,7 @@ static int open_unireg_entry(THD *thd, TABLE *entry, const char *db,
}
else
{
- thd->net.last_error[0]=0; // Clear error message
- thd->net.last_errno=0;
+ thd->clear_error(); // Clear error message
}
pthread_mutex_lock(&LOCK_open);
unlock_table_name(thd,&table_list);
@@ -2451,10 +2448,10 @@ bool remove_table_from_cache(THD *thd, const char *db, const char *table_name,
DBUG_RETURN(result);
}
-int setup_ftfuncs(THD *thd)
+int setup_ftfuncs(SELECT_LEX *select_lex)
{
- List_iterator<Item_func_match> li(*(thd->lex.select->ftfunc_list)),
- lj(*(thd->lex.select->ftfunc_list));
+ List_iterator<Item_func_match> li(*(select_lex->ftfunc_list)),
+ lj(*(select_lex->ftfunc_list));
Item_func_match *ftf, *ftf2;
while ((ftf=li++))
@@ -2473,11 +2470,11 @@ int setup_ftfuncs(THD *thd)
}
-int init_ftfuncs(THD *thd, bool no_order)
+int init_ftfuncs(THD *thd, SELECT_LEX *select_lex, bool no_order)
{
- if (thd->lex.select->ftfunc_list->elements)
+ if (select_lex->ftfunc_list->elements)
{
- List_iterator<Item_func_match> li(*(thd->lex.select->ftfunc_list));
+ List_iterator<Item_func_match> li(*(select_lex->ftfunc_list));
Item_func_match *ifm;
DBUG_PRINT("info",("Performing FULLTEXT search"));
thd->proc_info="FULLTEXT initialization";
diff --git a/sql/sql_cache.cc b/sql/sql_cache.cc
index 5bdefbaaa30..2f236da2aa3 100644
--- a/sql/sql_cache.cc
+++ b/sql/sql_cache.cc
@@ -2444,14 +2444,14 @@ TABLE_COUNTER_TYPE Query_cache::is_cacheable(THD *thd, uint32 query_len,
if (lex->sql_command == SQLCOM_SELECT &&
(thd->variables.query_cache_type == 1 ||
- (thd->variables.query_cache_type == 2 && (lex->select->options &
+ (thd->variables.query_cache_type == 2 && (lex->select_lex.options &
OPTION_TO_QUERY_CACHE))) &&
thd->safe_to_cache_query)
{
my_bool has_transactions = 0;
DBUG_PRINT("qcache", ("options %lx %lx, type %u",
OPTION_TO_QUERY_CACHE,
- lex->select->options,
+ lex->select_lex.options,
(int) thd->variables.query_cache_type));
for (; tables_used; tables_used= tables_used->next)
@@ -2498,7 +2498,7 @@ TABLE_COUNTER_TYPE Query_cache::is_cacheable(THD *thd, uint32 query_len,
("not interesting query: %d or not cacheable, options %lx %lx, type %u",
(int) lex->sql_command,
OPTION_TO_QUERY_CACHE,
- lex->select->options,
+ lex->select_lex.options,
(int) thd->variables.query_cache_type));
DBUG_RETURN(0);
}
diff --git a/sql/sql_class.h b/sql/sql_class.h
index d46826c928d..71f1625309f 100644
--- a/sql/sql_class.h
+++ b/sql/sql_class.h
@@ -625,6 +625,12 @@ public:
void add_changed_table(const char *key, long key_length);
CHANGED_TABLE_LIST * changed_table_dup(const char *key, long key_length);
int send_explain_fields(select_result *result);
+ inline void clear_error()
+ {
+ net.last_error[0]= 0;
+ net.last_errno= 0;
+ net.report_error= 0;
+ }
};
/*
diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc
index cb1a9db70cd..64945fa2d4d 100644
--- a/sql/sql_delete.cc
+++ b/sql/sql_delete.cc
@@ -52,7 +52,8 @@ int mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds, ORDER *order,
table->file->info(HA_STATUS_VARIABLE | HA_STATUS_NO_LOCK);
thd->proc_info="init";
table->map=1;
- if (setup_conds(thd,table_list,&conds) || setup_ftfuncs(thd))
+ if (setup_conds(thd,table_list,&conds) ||
+ setup_ftfuncs(&thd->lex.select_lex))
DBUG_RETURN(-1);
/* Test if the user wants to delete all rows */
@@ -129,7 +130,7 @@ int mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds, ORDER *order,
init_read_record(&info,thd,table,select,1,1);
deleted=0L;
- init_ftfuncs(thd,1);
+ init_ftfuncs(thd, &thd->lex.select_lex, 1);
thd->proc_info="updating";
while (!(error=info.read_record(&info)) && !thd->killed)
{
@@ -284,7 +285,7 @@ multi_delete::initialize_tables(JOIN *join)
table->file->ref_length,
MEM_STRIP_BUF_SIZE);
}
- init_ftfuncs(thd,1);
+ init_ftfuncs(thd, thd->lex.current_select->select_lex(), 1);
}
diff --git a/sql/sql_derived.cc b/sql/sql_derived.cc
index 9cc83a3835a..1335618b90d 100644
--- a/sql/sql_derived.cc
+++ b/sql/sql_derived.cc
@@ -57,8 +57,8 @@ int mysql_derived(THD *thd, LEX *lex, SELECT_LEX_UNIT *unit, TABLE_LIST *t,
{
if (cursor->derived)
{
- res=mysql_derived(thd, lex, (SELECT_LEX_UNIT *)cursor->derived,
- cursor, 0);
+ res= mysql_derived(thd, lex, (SELECT_LEX_UNIT *)cursor->derived,
+ cursor, 0);
if (res) DBUG_RETURN(res);
}
}
diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc
index d15d9a407d6..0a1b4435fff 100644
--- a/sql/sql_insert.cc
+++ b/sql/sql_insert.cc
@@ -1180,7 +1180,7 @@ bool delayed_insert::handle_inserts(void)
table->file->extra(HA_EXTRA_IGNORE_DUP_KEY);
using_ignore=1;
}
- thd.net.last_errno = 0; // reset error for binlog
+ thd.clear_error(); // reset error for binlog
if (write_record(table,&info))
{
info.error_count++; // Ignore errors
diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc
index 52f1be6bddf..5327801bf9c 100644
--- a/sql/sql_lex.cc
+++ b/sql/sql_lex.cc
@@ -21,6 +21,7 @@
#include "item_create.h"
#include <m_ctype.h>
#include <hash.h>
+#include <assert.h>
LEX_STRING tmp_table_alias= {(char*) "tmp-table",8};
@@ -147,7 +148,7 @@ LEX *lex_start(THD *thd, uchar *buf,uint length)
lex->select_lex.in_sum_expr=0;
lex->select_lex.expr_list.empty();
lex->select_lex.ftfunc_list_alloc.empty();
- lex->select_lex.ftfunc_list= &lex->select->ftfunc_list_alloc;
+ lex->select_lex.ftfunc_list= &lex->select_lex.ftfunc_list_alloc;
lex->convert_set= (lex->thd= thd)->variables.convert_set;
lex->yacc_yyss=lex->yacc_yyvs=0;
lex->ignore_space=test(thd->sql_mode & MODE_IGNORE_SPACE);
@@ -934,7 +935,8 @@ void st_select_lex_node::init_select()
order_list.first= 0;
order_list.next= (byte**) &order_list.first;
select_limit= HA_POS_ERROR;
- offset_limit= 0;
+ offset_limit= 0;
+ create_refs= dependent= 0;
}
void st_select_lex_unit::init_query()
@@ -974,7 +976,7 @@ void st_select_lex::init_select()
ftfunc_list_alloc.empty();
ftfunc_list= &ftfunc_list_alloc;
linkage= UNSPECIFIED_TYPE;
- depended= having_fix_field= 0;
+ having_fix_field= 0;
}
/*
@@ -1042,6 +1044,91 @@ 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(0);
+ DBUG_RETURN(0);
+}
+
+bool st_select_lex_node::add_item_to_list(Item *item)
+{
+ return 1;
+}
+
+bool st_select_lex_node::add_group_to_list(Item *item, bool asc)
+{
+ return 1;
+}
+
+bool st_select_lex_node::add_order_to_list(Item *item, bool asc)
+{
+ return add_to_list(order_list,item,asc);
+}
+
+bool st_select_lex_node::add_ftfunc_to_list(Item_func_match *func)
+{
+ return 1;
+}
+
+/*
+ st_select_lex_node::mark_as_dependent mark all st_select_lex struct from
+ this to 'last' as dependent
+
+ SYNOPSIS
+ last - pointer to last st_select_lex struct, before wich all
+ st_select_lex have to be marked as dependent
+
+ NOTE
+ 'last' should be reachable from this st_select_lex_node
+
+*/
+
+void st_select_lex_node::mark_as_dependent(SELECT_LEX *last)
+{
+ /*
+ Mark all selects from resolved to 1 before select where was
+ found table as depended (of select where was found table)
+ */
+ for (SELECT_LEX_NODE *s= this;
+ s &&s != last;
+ s= s->outer_select())
+ if( !s->dependent )
+ {
+ // Select is dependent of outer select
+ s->dependent= 1;
+ if (s->linkage != GLOBAL_OPTIONS_TYPE)
+ {
+ //s is st_select_lex*
+
+ s->master_unit()->dependent= 1;
+ //Tables will be reopened many times
+ for (TABLE_LIST *tbl=
+ s->get_table_list();
+ tbl;
+ tbl= tbl->next)
+ tbl->shared= 1;
+ }
+ }
+}
+
+bool st_select_lex_node::set_braces(bool value) { return 1; }
+bool st_select_lex_node::inc_in_sum_expr() { return 1; }
+uint st_select_lex_node::get_in_sum_expr() { return 0; }
+TABLE_LIST* st_select_lex_node::get_table_list() { return 0; }
+List<Item>* st_select_lex_node::get_item_list() { return 0; }
+List<String>* st_select_lex_node::get_use_index() { return 0; }
+List<String>* st_select_lex_node::get_ignore_index() { return 0; }
+TABLE_LIST *st_select_lex_node::add_table_to_list(Table_ident *table,
+ LEX_STRING *alias,
+ bool updating,
+ thr_lock_type flags,
+ List<String> *use_index,
+ List<String> *ignore_index)
+{
+ return 0;
+}
+
/*
This is used for UNION & subselect to create a new table list of all used
tables.
@@ -1118,3 +1205,82 @@ bool st_select_lex_unit::create_total_list_n_last_return(THD *thd, st_lex *lex,
*result= new_table_list;
return 0;
}
+
+st_select_lex_unit* st_select_lex_unit::master_unit()
+{
+ return this;
+}
+
+st_select_lex* st_select_lex_unit::outer_select()
+{
+ return (st_select_lex*) master;
+}
+
+st_select_lex* st_select_lex::select_lex()
+{
+ return this;
+}
+
+bool st_select_lex::add_item_to_list(Item *item)
+{
+ return item_list.push_back(item);
+}
+
+bool st_select_lex::add_group_to_list(Item *item, bool asc)
+{
+ return add_to_list(group_list, item, asc);
+}
+
+bool st_select_lex::add_ftfunc_to_list(Item_func_match *func)
+{
+ return !func || ftfunc_list->push_back(func); // end of memory?
+}
+
+st_select_lex_unit* st_select_lex::master_unit()
+{
+ return (st_select_lex_unit*) master;
+}
+
+st_select_lex* st_select_lex::outer_select()
+{
+ return (st_select_lex*) master->get_master();
+}
+
+bool st_select_lex::set_braces(bool value)
+{
+ braces= value;
+ return 0;
+}
+
+bool st_select_lex::inc_in_sum_expr()
+{
+ in_sum_expr++;
+ return 0;
+}
+
+uint st_select_lex::get_in_sum_expr()
+{
+ return in_sum_expr;
+}
+
+TABLE_LIST* st_select_lex::get_table_list()
+{
+ return (TABLE_LIST*) table_list.first;
+}
+
+List<Item>* st_select_lex::get_item_list()
+{
+ return &item_list;
+}
+
+List<String>* st_select_lex::get_use_index()
+{
+ return use_index_ptr;
+}
+
+List<String>* st_select_lex::get_ignore_index()
+{
+ return ignore_index_ptr;
+}
+
+// There are st_select_lex::add_table_to_list in sql_parse.cc
diff --git a/sql/sql_lex.h b/sql/sql_lex.h
index 50bff7c7f63..ea944ef34c8 100644
--- a/sql/sql_lex.h
+++ b/sql/sql_lex.h
@@ -186,6 +186,8 @@ enum olap_type
Base class for st_select_lex (SELECT_LEX) &
st_select_lex_unit (SELECT_LEX_UNIT)
*/
+class st_select_lex;
+class st_select_lex_unit;
class st_select_lex_node {
protected:
st_select_lex_node *next, **prev, /* neighbor list */
@@ -195,23 +197,60 @@ public:
ulong options;
enum sub_select_type linkage;
SQL_LIST order_list; /* ORDER clause */
+ List<List_item> expr_list;
+ List<List_item> when_list; /* WHEN clause (expression) */
ha_rows select_limit, offset_limit; /* LIMIT clause parameters */
- void init_query();
- void init_select();
+ bool create_refs;
+ bool dependent; /* dependent from outer select subselect */
+
+ static void *operator new(size_t size)
+ {
+ return (void*) sql_calloc((uint) size);
+ }
+ static void operator delete(void *ptr,size_t size) {}
+ virtual ~st_select_lex_node() {}
+ inline st_select_lex_node* get_master() { return master; }
+ virtual void init_query();
+ virtual void init_select();
void include_down(st_select_lex_node *upper);
void include_neighbour(st_select_lex_node *before);
void include_global(st_select_lex_node **plink);
void exclude();
+
+ virtual st_select_lex* select_lex();
+ virtual bool add_item_to_list(Item *item);
+ bool add_order_to_list(Item *item, bool asc);
+ virtual bool add_group_to_list(Item *item, bool asc);
+ virtual bool add_ftfunc_to_list(Item_func_match *func);
+
+ virtual st_select_lex_unit* master_unit()= 0;
+ virtual st_select_lex* outer_select()= 0;
+
+ virtual bool set_braces(bool value);
+ virtual bool inc_in_sum_expr();
+ virtual uint get_in_sum_expr();
+ virtual TABLE_LIST* get_table_list();
+ virtual List<Item>* get_item_list();
+ virtual List<String>* get_use_index();
+ virtual List<String>* get_ignore_index();
+ virtual TABLE_LIST *add_table_to_list(Table_ident *table,
+ LEX_STRING *alias,
+ bool updating,
+ thr_lock_type flags= TL_UNLOCK,
+ List<String> *use_index= 0,
+ List<String> *ignore_index= 0);
+
+ void mark_as_dependent(st_select_lex *last);
private:
void fast_exclude();
};
+typedef class st_select_lex_node SELECT_LEX_NODE;
/*
SELECT_LEX_UNIT - unit of selects (UNION, INTERSECT, ...) group
SELECT_LEXs
*/
struct st_lex;
-class st_select_lex;
class THD;
class select_result;
class JOIN;
@@ -238,14 +277,14 @@ public:
st_select_lex_node *global_parameters;
/* LIMIT clause runtime counters */
ha_rows select_limit_cnt, offset_limit_cnt;
- bool depended; /* depended from outer select subselect */
/* not NULL if union used in subselect, point to subselect item */
Item_subselect *item;
uint union_option;
void init_query();
bool create_total_list(THD *thd, st_lex *lex, TABLE_LIST **result);
- st_select_lex* outer_select() { return (st_select_lex*) master; }
+ st_select_lex_unit* master_unit();
+ st_select_lex* outer_select();
st_select_lex* first_select() { return (st_select_lex*) slave; }
st_select_lex_unit* next_unit() { return (st_select_lex_unit*) next; }
@@ -270,8 +309,6 @@ public:
char *db, *db1, *table1, *db2, *table2; /* For outer join using .. */
Item *where, *having; /* WHERE & HAVING clauses */
enum olap_type olap;
- List<List_item> expr_list;
- List<List_item> when_list; /* WHEN clause */
SQL_LIST table_list, group_list; /* FROM & GROUP BY clauses */
List<Item> item_list; /* list of fields & expressions */
List<String> interval_list, use_index, *use_index_ptr,
@@ -286,23 +323,18 @@ public:
const char *type; /* type of select for EXPLAIN */
uint in_sum_expr;
uint select_number; /* number of select (used for EXPLAIN) */
- bool create_refs;
bool braces; /* SELECT ... UNION (SELECT ... ) <- this braces */
- bool depended; /* depended from outer select subselect */
/* TRUE when having fix field called in processing of this SELECT */
bool having_fix_field;
void init_query();
void init_select();
- st_select_lex_unit* master_unit() { return (st_select_lex_unit*) master; }
+ st_select_lex_unit* master_unit();
st_select_lex_unit* first_inner_unit()
{
return (st_select_lex_unit*) slave;
}
- st_select_lex* outer_select()
- {
- return (st_select_lex*) master_unit()->outer_select();
- }
+ st_select_lex* outer_select();
st_select_lex* next_select() { return (st_select_lex*) next; }
st_select_lex* next_select_in_list()
{
@@ -313,6 +345,32 @@ public:
return &link_next;
}
+ bool set_braces(bool value);
+ bool inc_in_sum_expr();
+ uint get_in_sum_expr();
+
+ st_select_lex* select_lex();
+ bool add_item_to_list(Item *item);
+ bool add_group_to_list(Item *item, bool asc);
+ bool add_ftfunc_to_list(Item_func_match *func);
+
+ TABLE_LIST* get_table_list();
+ List<Item>* get_item_list();
+ List<String>* get_use_index();
+ List<String>* get_ignore_index();
+ TABLE_LIST* add_table_to_list(Table_ident *table,
+ LEX_STRING *alias,
+ bool updating,
+ thr_lock_type flags= TL_UNLOCK,
+ List<String> *use_index= 0,
+ List<String> *ignore_index= 0);
+ inline void init_order()
+ {
+ order_list.elements= 0;
+ order_list.first= 0;
+ order_list.next= (byte**) &order_list.first;
+ }
+
friend void mysql_init_query(THD *thd);
};
typedef class st_select_lex SELECT_LEX;
@@ -325,9 +383,9 @@ typedef struct st_lex
uint yylineno,yytoklen; /* Simulate lex */
LEX_YYSTYPE yylval;
SELECT_LEX_UNIT unit; /* most upper unit */
- SELECT_LEX select_lex, /* first SELECT_LEX */
- /* current SELECT_LEX in parsing */
- *select;
+ SELECT_LEX select_lex; /* first SELECT_LEX */
+ /* current SELECT_LEX in parsing */
+ SELECT_LEX_NODE *current_select;
uchar *ptr,*tok_start,*tok_end,*end_of_query;
char *length,*dec,*change,*name;
char *backup_dir; /* For RESTORE/BACKUP */
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index d6e7b1193e0..e6ebc3abf4a 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -860,8 +860,7 @@ bool do_command(THD *thd)
old_timeout=net->read_timeout;
// Wait max for 8 hours
net->read_timeout=(uint) thd->variables.net_wait_timeout;
- net->last_error[0]=0; // Clear error message
- net->last_errno=0;
+ thd->clear_error(); // Clear error message
net_new_transaction(net);
if ((packet_length=my_net_read(net)) == packet_error)
@@ -2915,9 +2914,9 @@ mysql_init_query(THD *thd)
thd->select_number= thd->lex.select_lex.select_number= 1;
thd->lex.value_list.empty();
thd->free_list= 0;
- thd->lex.select= &thd->lex.select_lex;
+ thd->lex.current_select= &thd->lex.select_lex;
thd->lex.olap=thd->lex.describe=0;
- thd->lex.select->olap= UNSPECIFIED_OLAP_TYPE;
+ thd->lex.select_lex.olap= UNSPECIFIED_OLAP_TYPE;
thd->fatal_error= 0; // Safety
thd->total_warn_count=0; // Warnings for this query
thd->last_insert_id_used= thd->query_start_used= thd->insert_id_used=0;
@@ -2931,7 +2930,8 @@ mysql_init_query(THD *thd)
void
mysql_init_select(LEX *lex)
{
- SELECT_LEX *select_lex= lex->select;
+ SELECT_LEX *select_lex= lex->current_select->select_lex();
+ DBUG_ASSERT(select_lex->linkage != GLOBAL_OPTIONS_TYPE);
select_lex->init_select();
select_lex->master_unit()->select_limit= select_lex->select_limit=
lex->thd->variables.select_limit;
@@ -2945,7 +2945,7 @@ mysql_init_select(LEX *lex)
bool
mysql_new_select(LEX *lex, bool move_down)
{
- SELECT_LEX *select_lex = (SELECT_LEX *) lex->thd->calloc(sizeof(SELECT_LEX));
+ SELECT_LEX *select_lex = new SELECT_LEX();
select_lex->select_number= ++lex->thd->select_number;
if (!select_lex)
return 1;
@@ -2954,21 +2954,22 @@ mysql_new_select(LEX *lex, bool move_down)
if (move_down)
{
/* first select_lex of subselect or derived table */
- SELECT_LEX_UNIT *unit=
- (SELECT_LEX_UNIT *) lex->thd->calloc(sizeof(SELECT_LEX_UNIT));
+ SELECT_LEX_UNIT *unit= new SELECT_LEX_UNIT();
if (!unit)
return 1;
unit->init_query();
unit->init_select();
- unit->include_down(lex->select);
+ unit->include_down(lex->current_select);
select_lex->include_down(unit);
}
else
- select_lex->include_neighbour(lex->select);
+ select_lex->include_neighbour(lex->current_select);
select_lex->master_unit()->global_parameters= select_lex;
- select_lex->include_global(lex->select->next_select_in_list_addr());
- lex->select= select_lex;
+ DBUG_ASSERT(lex->current_select->linkage != GLOBAL_OPTIONS_TYPE);
+ select_lex->include_global(lex->current_select->select_lex()->
+ next_select_in_list_addr());
+ lex->current_select= select_lex;
return 0;
}
@@ -3004,10 +3005,10 @@ void mysql_init_multi_delete(LEX *lex)
{
lex->sql_command= SQLCOM_DELETE_MULTI;
mysql_init_select(lex);
- lex->select->select_limit= lex->select->master_unit()->select_limit_cnt=
+ lex->select_lex.select_limit= lex->unit.select_limit_cnt=
HA_POS_ERROR;
lex->auxilliary_table_list= lex->select_lex.table_list;
- lex->select->init_query();
+ lex->select_lex.init_query();
}
@@ -3417,12 +3418,12 @@ bool add_to_list(SQL_LIST &list,Item *item,bool asc)
}
-TABLE_LIST *add_table_to_list(Table_ident *table, LEX_STRING *alias,
- bool updating,
- thr_lock_type flags,
- List<String> *use_index,
- List<String> *ignore_index
- )
+TABLE_LIST *st_select_lex::add_table_to_list(Table_ident *table,
+ LEX_STRING *alias,
+ bool updating,
+ thr_lock_type flags,
+ List<String> *use_index,
+ List<String> *ignore_index)
{
register TABLE_LIST *ptr;
THD *thd=current_thd;
@@ -3484,7 +3485,7 @@ TABLE_LIST *add_table_to_list(Table_ident *table, LEX_STRING *alias,
/* check that used name is unique */
if (flags != TL_IGNORE)
{
- for (TABLE_LIST *tables=(TABLE_LIST*) thd->lex.select->table_list.first ;
+ for (TABLE_LIST *tables=(TABLE_LIST*) table_list.first ;
tables ;
tables=tables->next)
{
@@ -3495,7 +3496,7 @@ TABLE_LIST *add_table_to_list(Table_ident *table, LEX_STRING *alias,
}
}
}
- link_in_list(&thd->lex.select->table_list,(byte*) ptr,(byte**) &ptr->next);
+ link_in_list(&table_list, (byte*) ptr, (byte**) &ptr->next);
DBUG_RETURN(ptr);
}
@@ -3698,7 +3699,7 @@ static bool append_file_to_dir(THD *thd, char **filename_ptr, char *table_name)
bool check_simple_select()
{
THD *thd= current_thd;
- if (thd->lex.select != &thd->lex.select_lex)
+ if (thd->lex.current_select != &thd->lex.select_lex)
{
char command[80];
strmake(command, thd->lex.yylval->symbol.str,
diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc
index bd115f0fc1e..2cf51f5d72e 100644
--- a/sql/sql_prepare.cc
+++ b/sql/sql_prepare.cc
@@ -497,7 +497,7 @@ static bool mysql_test_select_fields(PREP_STMT *stmt, TABLE_LIST *tables,
if (having->with_sum_func)
having->split_sum_func(all_fields);
}
- if (setup_ftfuncs(thd))
+ if (setup_ftfuncs(&thd->lex.select_lex))
DBUG_RETURN(1);
/*
@@ -543,7 +543,7 @@ static bool send_prepare_results(PREP_STMT *stmt)
stmt->free_list= thd->free_list; // Save items used in stmt
thd->free_list= 0;
- SELECT_LEX *select_lex = lex->select;
+ SELECT_LEX *select_lex = &lex->select_lex;
TABLE_LIST *tables=(TABLE_LIST*) select_lex->table_list.first;
switch (sql_command) {
diff --git a/sql/sql_repl.cc b/sql/sql_repl.cc
index 32b7c3be025..93545d10268 100644
--- a/sql/sql_repl.cc
+++ b/sql/sql_repl.cc
@@ -949,8 +949,8 @@ int show_binlog_events(THD* thd)
LOG_INFO linfo;
Log_event* ev;
- limit_start = thd->lex.select->offset_limit;
- limit_end = thd->lex.select->select_limit + limit_start;
+ limit_start = thd->lex.current_select->offset_limit;
+ limit_end = thd->lex.current_select->select_limit + limit_start;
name= search_file_name;
if (log_file_name)
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index 8acb5fa5635..93d48e3e1e0 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -38,7 +38,8 @@ static bool make_join_statistics(JOIN *join,TABLE_LIST *tables,COND *conds,
DYNAMIC_ARRAY *keyuse);
static bool update_ref_and_keys(THD *thd, DYNAMIC_ARRAY *keyuse,
JOIN_TAB *join_tab,
- uint tables,COND *conds,table_map table_map);
+ uint tables, COND *conds,
+ table_map table_map, SELECT_LEX *select_lex);
static int sort_keyuse(KEYUSE *a,KEYUSE *b);
static void set_position(JOIN *join,uint index,JOIN_TAB *table,KEYUSE *key);
static bool create_ref_for_key(JOIN *join, JOIN_TAB *j, KEYUSE *org_keyuse,
@@ -250,7 +251,7 @@ JOIN::prepare(TABLE_LIST *tables_init,
if (having->with_sum_func)
having->split_sum_func(all_fields);
}
- if (setup_ftfuncs(thd)) /* should be after having->fix_fields */
+ if (setup_ftfuncs(select_lex)) /* should be after having->fix_fields */
DBUG_RETURN(-1);
/*
Check if one one uses a not constant column with group functions
@@ -420,7 +421,7 @@ JOIN::optimize()
thd->fatal_error)
DBUG_RETURN(-1);
- if (select_lex->depended)
+ if (select_lex->dependent)
{
/*
Just remove all const-table optimization in case of depended query
@@ -559,7 +560,7 @@ JOIN::optimize()
make_join_readinfo(this,
(select_options & (SELECT_DESCRIBE |
SELECT_NO_JOIN_CACHE)) |
- (thd->lex.select->ftfunc_list->elements ?
+ (select_lex->ftfunc_list->elements ?
SELECT_NO_JOIN_CACHE : 0));
/*
@@ -720,7 +721,7 @@ JOIN::exec()
}
/* Perform FULLTEXT search before all regular searches */
- init_ftfuncs(thd,test(order));
+ init_ftfuncs(thd, select_lex, test(order));
/* Create a tmp table if distinct or if the sort is too complicated */
if (need_tmp)
@@ -1239,8 +1240,8 @@ make_join_statistics(JOIN *join,TABLE_LIST *tables,COND *conds,
}
if (conds || outer_join)
- if (update_ref_and_keys(join->thd,keyuse_array,stat,join->tables,
- conds,~outer_join))
+ if (update_ref_and_keys(join->thd, keyuse_array, stat, join->tables,
+ conds, ~outer_join, join->select_lex))
DBUG_RETURN(1);
/* Read tables with 0 or 1 rows (system tables) */
@@ -1800,7 +1801,8 @@ sort_keyuse(KEYUSE *a,KEYUSE *b)
static bool
update_ref_and_keys(THD *thd, DYNAMIC_ARRAY *keyuse,JOIN_TAB *join_tab,
- uint tables, COND *cond, table_map normal_tables)
+ uint tables, COND *cond, table_map normal_tables,
+ SELECT_LEX *select_lex)
{
uint and_level,i,found_eq_constant;
@@ -1828,7 +1830,7 @@ update_ref_and_keys(THD *thd, DYNAMIC_ARRAY *keyuse,JOIN_TAB *join_tab,
add_key_part(keyuse,field);
}
- if (thd->lex.select->ftfunc_list->elements)
+ if (select_lex->ftfunc_list->elements)
{
add_ft_keys(keyuse,join_tab,cond,normal_tables);
}
@@ -2930,7 +2932,7 @@ join_free(JOIN *join)
end_read_record(&tab->read_record);
}
//TODO: is enough join_free at the end of mysql_select?
- if (!join->select_lex->depended)
+ if (!join->select_lex->dependent)
join->table=0;
}
/*
@@ -7460,9 +7462,9 @@ int mysql_explain_union(THD *thd, SELECT_LEX_UNIT *unit, select_result *result)
((sl->next_select_in_list())?"PRIMARY":
"SIMPLE"):
((sl == first)?
- ((sl->depended)?"DEPENDENT SUBSELECT":
+ ((sl->dependent)?"DEPENDENT SUBSELECT":
"SUBSELECT"):
- ((sl->depended)?"DEPENDENT UNION":
+ ((sl->dependent)?"DEPENDENT UNION":
"UNION"))),
result);
if (res)
@@ -7480,7 +7482,7 @@ int mysql_explain_select(THD *thd, SELECT_LEX *select_lex, char const *type,
DBUG_ENTER("mysql_explain_select");
DBUG_PRINT("info", ("Select 0x%lx, type %s", (ulong)select_lex, type))
select_lex->type= type;
- thd->lex.select= select_lex;
+ thd->lex.current_select= select_lex;
SELECT_LEX_UNIT *unit= select_lex->master_unit();
int res= mysql_select(thd,(TABLE_LIST*) select_lex->table_list.first,
select_lex->item_list,
diff --git a/sql/sql_union.cc b/sql/sql_union.cc
index 899dceab9bc..53f89747ce7 100644
--- a/sql/sql_union.cc
+++ b/sql/sql_union.cc
@@ -115,7 +115,8 @@ int st_select_lex_unit::prepare(THD *thd, select_result *result)
TMP_TABLE_PARAM tmp_table_param;
this->thd= thd;
this->result= result;
- SELECT_LEX *lex_select_save= thd->lex.select, *sl;
+ SELECT_LEX_NODE *lex_select_save= thd->lex.current_select;
+ SELECT_LEX *sl;
/* Global option */
if (((void*)(global_parameters)) == ((void*)this))
@@ -169,7 +170,7 @@ int st_select_lex_unit::prepare(THD *thd, select_result *result)
sl->options | thd->options | SELECT_NO_UNLOCK,
union_result);
joins.push_back(new JOIN_P(join));
- thd->lex.select=sl;
+ thd->lex.current_select= sl;
offset_limit_cnt= sl->offset_limit;
select_limit_cnt= sl->select_limit+sl->offset_limit;
if (select_limit_cnt < sl->select_limit)
@@ -188,29 +189,29 @@ int st_select_lex_unit::prepare(THD *thd, select_result *result)
if (res | thd->fatal_error)
goto err;
}
- thd->lex.select= lex_select_save;
+ thd->lex.current_select= lex_select_save;
DBUG_RETURN(res | thd->fatal_error);
err:
- thd->lex.select= lex_select_save;
+ thd->lex.current_select= lex_select_save;
DBUG_RETURN(-1);
}
int st_select_lex_unit::exec()
{
DBUG_ENTER("st_select_lex_unit::exec");
- SELECT_LEX *lex_select_save= thd->lex.select;
+ SELECT_LEX_NODE *lex_select_save= thd->lex.current_select;
- if (executed && !depended)
+ if (executed && !dependent)
DBUG_RETURN(0);
executed= 1;
- if (depended || !item || !item->assigned())
+ if (dependent || !item || !item->assigned())
{
if (optimized && item && item->assigned())
item->assigned(0); // We will reinit & rexecute unit
for (SELECT_LEX *sl= first_select(); sl; sl= sl->next_select())
{
- thd->lex.select=sl;
+ thd->lex.current_select= sl;
offset_limit_cnt= sl->offset_limit;
select_limit_cnt= sl->select_limit+sl->offset_limit;
if (select_limit_cnt < sl->select_limit)
@@ -230,7 +231,7 @@ int st_select_lex_unit::exec()
}
if (res)
{
- thd->lex.select= lex_select_save;
+ thd->lex.current_select= lex_select_save;
DBUG_RETURN(res);
}
}
@@ -239,12 +240,14 @@ int st_select_lex_unit::exec()
if (union_result->flush())
{
- thd->lex.select= lex_select_save;
+ thd->lex.current_select= lex_select_save;
DBUG_RETURN(1);
}
/* Send result to 'result' */
- thd->lex.select = first_select();
+
+ // to correct ORDER BY reference resolving
+ thd->lex.current_select = first_select();
res =-1;
{
/* Create a list of fields in the temporary table */
@@ -283,7 +286,7 @@ int st_select_lex_unit::exec()
}
}
thd->lex.select_lex.ftfunc_list= &thd->lex.select_lex.ftfunc_list_alloc;
- thd->lex.select= lex_select_save;
+ thd->lex.current_select= lex_select_save;
DBUG_RETURN(res);
}
diff --git a/sql/sql_update.cc b/sql/sql_update.cc
index e8d4af94640..be69935a49c 100644
--- a/sql/sql_update.cc
+++ b/sql/sql_update.cc
@@ -78,7 +78,7 @@ int mysql_update(THD *thd,
want_privilege=table->grant.want_privilege;
table->grant.want_privilege=(SELECT_ACL & ~table->grant.privilege);
if (setup_tables(table_list) || setup_conds(thd,table_list,&conds)
- || setup_ftfuncs(thd))
+ || setup_ftfuncs(&thd->lex.select_lex))
DBUG_RETURN(-1); /* purecov: inspected */
old_used_keys=table->used_keys; // Keys used in WHERE
@@ -142,7 +142,7 @@ int mysql_update(THD *thd,
DBUG_RETURN(1);
}
}
- init_ftfuncs(thd,1);
+ init_ftfuncs(thd, &thd->lex.select_lex, 1);
/* Check if we are modifying a key that we are used to search with */
if (select && select->quick)
used_key_is_modified= (!select->quick->unique_key_range() &&
@@ -508,7 +508,7 @@ multi_update::prepare(List<Item> &values, SELECT_LEX_UNIT *u)
counter++;
}
}
- init_ftfuncs(thd,1);
+ init_ftfuncs(thd, thd->lex.current_select->select_lex(), 1);
error = 0; // Timestamps do not need to be restored, so far ...
DBUG_RETURN(0);
}
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy
index 50d3f643973..0fe6b864914 100644
--- a/sql/sql_yacc.yy
+++ b/sql/sql_yacc.yy
@@ -21,7 +21,7 @@
#define YYINITDEPTH 100
#define YYMAXDEPTH 3200 /* Because of 64K stack */
#define Lex current_lex
-#define Select Lex->select
+#define Select Lex->current_select
#include "mysql_priv.h"
#include "slave.h"
#include "sql_acl.h"
@@ -581,7 +581,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize);
key_part
%type <table_list>
- join_table_list join_table
+ join_table_list join_table
%type <udf>
UDF_CHAR_FUNC UDF_FLOAT_FUNC UDF_INT_FUNC
@@ -784,9 +784,11 @@ create:
THD *thd=current_thd;
LEX *lex=Lex;
lex->sql_command= SQLCOM_CREATE_TABLE;
- if (!add_table_to_list($5,
- ($2 & HA_LEX_CREATE_TMP_TABLE ?
- &tmp_table_alias : (LEX_STRING*) 0),1))
+ if (!lex->select_lex.add_table_to_list($5,
+ ($2 &
+ HA_LEX_CREATE_TMP_TABLE ?
+ &tmp_table_alias :
+ (LEX_STRING*) 0),1))
YYABORT;
lex->create_list.empty();
lex->key_list.empty();
@@ -803,7 +805,7 @@ create:
{
LEX *lex=Lex;
lex->sql_command= SQLCOM_CREATE_INDEX;
- if (!add_table_to_list($7,NULL,1))
+ if (!lex->current_select->add_table_to_list($7,NULL,1))
YYABORT;
lex->create_list.empty();
lex->key_list.empty();
@@ -913,12 +915,12 @@ create_table_option:
{
/* Move the union list to the merge_list */
LEX *lex=Lex;
- TABLE_LIST *table_list= (TABLE_LIST*) lex->select->table_list.first;
- lex->create_info.merge_list= lex->select->table_list;
+ TABLE_LIST *table_list= lex->select_lex.get_table_list();
+ lex->create_info.merge_list= lex->select_lex.table_list;
lex->create_info.merge_list.elements--;
lex->create_info.merge_list.first= (byte*) (table_list->next);
- lex->select->table_list.elements=1;
- lex->select->table_list.next= (byte**) &(table_list->next);
+ lex->select_lex.table_list.elements=1;
+ lex->select_lex.table_list.next= (byte**) &(table_list->next);
table_list->next=0;
lex->create_info.used_fields|= HA_CREATE_USED_UNION;
}
@@ -1302,10 +1304,10 @@ alter:
ALTER opt_ignore TABLE_SYM table_ident
{
THD *thd=current_thd;
- LEX *lex=Lex;
+ LEX *lex=&thd->lex;
lex->sql_command = SQLCOM_ALTER_TABLE;
lex->name=0;
- if (!add_table_to_list($4, NULL,1))
+ if (!lex->select_lex.add_table_to_list($4, NULL,1))
YYABORT;
lex->drop_primary=0;
lex->create_list.empty();
@@ -1313,10 +1315,8 @@ alter:
lex->col_list.empty();
lex->drop_list.empty();
lex->alter_list.empty();
- lex->select->order_list.elements=0;
- lex->select->order_list.first=0;
- lex->select->order_list.next= (byte**) &lex->select->order_list.first;
- lex->select->db=lex->name=0;
+ lex->select_lex.init_order();
+ lex->select_lex.db=lex->name=0;
bzero((char*) &lex->create_info,sizeof(lex->create_info));
lex->create_info.db_type= DB_TYPE_DEFAULT;
lex->create_info.table_charset=thd->db_charset?thd->db_charset:default_charset_info;
@@ -1405,7 +1405,7 @@ alter_list_item:
| RENAME opt_to table_ident
{
LEX *lex=Lex;
- lex->select->db=$3->db.str;
+ lex->select_lex.db=$3->db.str;
lex->name= $3->table.str;
}
| create_table_options_space_separated { Lex->simple_alter=0; }
@@ -1557,9 +1557,11 @@ table_to_table_list:
table_to_table:
table_ident TO_SYM table_ident
- { if (!add_table_to_list($1,NULL,1,TL_IGNORE) ||
- !add_table_to_list($3,NULL,1,TL_IGNORE))
- YYABORT;
+ {
+ SELECT_LEX_NODE *sl= Lex->current_select;
+ if (!sl->add_table_to_list($1,NULL,1,TL_IGNORE) ||
+ !sl->add_table_to_list($3,NULL,1,TL_IGNORE))
+ YYABORT;
};
/*
@@ -1571,12 +1573,26 @@ select:
select_init { Lex->sql_command=SQLCOM_SELECT; };
select_init:
- SELECT_SYM select_part2 { Select->braces=false; } union
+ SELECT_SYM select_part2
+ {
+ LEX *lex= Lex;
+ if (lex->current_select->set_braces(false))
+ {
+ send_error(lex->thd, ER_SYNTAX_ERROR);
+ YYABORT;
+ }
+ }
+ union
|
'(' SELECT_SYM select_part2 ')'
{
- SELECT_LEX * sel=Select;
- sel->braces=true;
+ LEX *lex= Lex;
+ SELECT_LEX_NODE * sel= lex->current_select;
+ if (sel->set_braces(true))
+ {
+ send_error(lex->thd, ER_SYNTAX_ERROR);
+ YYABORT;
+ }
/* select in braces, can't contain global parameters */
sel->master_unit()->global_parameters=
sel->master_unit();
@@ -1857,10 +1873,10 @@ simple_expr:
| singleval_subselect { $$= $1; }
| '{' ident expr '}' { $$= $3; }
| MATCH ident_list_arg AGAINST '(' expr ')'
- { Select->ftfunc_list->push_back((Item_func_match *)
+ { Select->add_ftfunc_to_list((Item_func_match *)
($$=new Item_func_match_nl(*$2,$5))); }
| MATCH ident_list_arg AGAINST '(' expr IN_SYM BOOLEAN_SYM MODE_SYM ')'
- { Select->ftfunc_list->push_back((Item_func_match *)
+ { Select->add_ftfunc_to_list((Item_func_match *)
($$=new Item_func_match_bool(*$2,$5))); }
| BINARY expr %prec NEG { $$= new Item_func_set_collation($2,my_charset_bin); }
| CAST_SYM '(' expr AS cast_type ')' { $$= create_func_cast($3, $5); }
@@ -2186,10 +2202,17 @@ sum_expr:
{ $$=new Item_sum_sum($3); };
in_sum_expr:
- { Select->in_sum_expr++; }
+ {
+ LEX *lex= Lex;
+ if (lex->current_select->inc_in_sum_expr())
+ {
+ send_error(lex->thd, ER_SYNTAX_ERROR);
+ YYABORT;
+ }
+ }
expr
{
- Select->in_sum_expr--;
+ Select->select_lex()->in_sum_expr--;
$$=$2;
};
@@ -2241,13 +2264,13 @@ when_list:
when_list2:
expr THEN_SYM expr
{
- SELECT_LEX *sel=Select;
+ SELECT_LEX_NODE *sel=Select;
sel->when_list.head()->push_back($1);
sel->when_list.head()->push_back($3);
}
| when_list2 WHEN_SYM expr THEN_SYM expr
{
- SELECT_LEX *sel=Select;
+ SELECT_LEX_NODE *sel=Select;
sel->when_list.head()->push_back($3);
sel->when_list.head()->push_back($5);
};
@@ -2266,7 +2289,7 @@ join_table_list:
{ add_join_on($4,$6); $$=$4; }
| join_table_list INNER_SYM JOIN_SYM join_table_list
{
- SELECT_LEX *sel=Select;
+ SELECT_LEX *sel= Select->select_lex();
sel->db1=$1->db; sel->table1=$1->alias;
sel->db2=$4->db; sel->table2=$4->alias;
}
@@ -2276,7 +2299,7 @@ join_table_list:
{ add_join_on($5,$7); $5->outer_join|=JOIN_TYPE_LEFT; $$=$5; }
| join_table_list LEFT opt_outer JOIN_SYM join_table_list
{
- SELECT_LEX *sel=Select;
+ SELECT_LEX *sel= Select->select_lex();
sel->db1=$1->db; sel->table1=$1->alias;
sel->db2=$5->db; sel->table2=$5->alias;
}
@@ -2288,7 +2311,7 @@ join_table_list:
{ add_join_on($1,$7); $1->outer_join|=JOIN_TYPE_RIGHT; $$=$1; }
| join_table_list RIGHT opt_outer JOIN_SYM join_table_list
{
- SELECT_LEX *sel=Select;
+ SELECT_LEX *sel= Select->select_lex();
sel->db1=$1->db; sel->table1=$1->alias;
sel->db2=$5->db; sel->table2=$5->alias;
}
@@ -2306,14 +2329,15 @@ normal_join:
join_table:
{
- SELECT_LEX *sel=Select;
+ SELECT_LEX *sel= Select->select_lex();
sel->use_index_ptr=sel->ignore_index_ptr=0;
}
table_ident opt_table_alias opt_key_definition
{
- SELECT_LEX *sel=Select;
- if (!($$=add_table_to_list($2,$3,0,TL_UNLOCK, sel->use_index_ptr,
- sel->ignore_index_ptr)))
+ SELECT_LEX_NODE *sel=Select;
+ if (!($$= sel->add_table_to_list($2, $3, 0, TL_UNLOCK,
+ sel->get_use_index(),
+ sel->get_ignore_index())))
YYABORT;
}
| '{' ident join_table LEFT OUTER JOIN_SYM join_table ON expr '}'
@@ -2321,10 +2345,10 @@ join_table:
| '(' SELECT_SYM select_part3 ')' opt_table_alias
{
LEX *lex=Lex;
- SELECT_LEX_UNIT *unit= lex->select->master_unit();
- lex->select= unit->outer_select();
- if (!($$= add_table_to_list(new Table_ident(unit),
- $5,0,TL_UNLOCK)))
+ SELECT_LEX_UNIT *unit= lex->current_select->master_unit();
+ lex->current_select= unit->outer_select();
+ if (!($$= lex->current_select->
+ add_table_to_list(new Table_ident(unit), $5, 0, TL_UNLOCK)))
YYABORT;
};
@@ -2332,11 +2356,11 @@ select_part3:
{
LEX *lex= Lex;
lex->derived_tables= true;
- if (lex->select->linkage == GLOBAL_OPTIONS_TYPE ||
+ if (lex->current_select->linkage == GLOBAL_OPTIONS_TYPE ||
mysql_new_select(lex, 1))
YYABORT;
mysql_init_select(lex);
- lex->select->linkage= DERIVED_TABLE_TYPE;
+ lex->current_select->linkage= DERIVED_TABLE_TYPE;
}
select_options select_item_list select_intoto;
@@ -2352,39 +2376,49 @@ opt_key_definition:
/* empty */ {}
| USE_SYM key_usage_list
{
- SELECT_LEX *sel=Select;
+ SELECT_LEX *sel= Select->select_lex();
sel->use_index= *$2;
sel->use_index_ptr= &sel->use_index;
}
| IGNORE_SYM key_usage_list
{
- SELECT_LEX *sel=Select;
+ SELECT_LEX *sel= Select->select_lex();
sel->ignore_index= *$2;
sel->ignore_index_ptr= &sel->ignore_index;
};
key_usage_list:
- key_or_index { Select->interval_list.empty(); } '(' key_usage_list2 ')'
- { $$= &Select->interval_list; };
+ key_or_index { Select->select_lex()->interval_list.empty(); }
+ '(' key_usage_list2 ')'
+ { $$= &Select->select_lex()->interval_list; };
key_usage_list2:
key_usage_list2 ',' ident
- { Select->interval_list.push_back(new String((const char*) $3.str,$3.length,default_charset_info)); }
+ { Select->select_lex()->
+ interval_list.push_back(new String((const char*) $3.str, $3.length,
+ default_charset_info)); }
| ident
- { Select->interval_list.push_back(new String((const char*) $1.str,$1.length,default_charset_info)); }
+ { Select->select_lex()->
+ interval_list.push_back(new String((const char*) $1.str, $1.length,
+ default_charset_info)); }
| PRIMARY_SYM
- { Select->interval_list.push_back(new String("PRIMARY",7,default_charset_info)); };
+ { Select->select_lex()->
+ interval_list.push_back(new String("PRIMARY", 7,
+ default_charset_info)); };
using_list:
ident
{
- SELECT_LEX *sel=Select;
- if (!($$= new Item_func_eq(new Item_field(sel->db1,sel->table1, $1.str), new Item_field(sel->db2,sel->table2,$1.str))))
+ SELECT_LEX *sel= Select->select_lex();
+ if (!($$= new Item_func_eq(new Item_field(sel->db1, sel->table1,
+ $1.str),
+ new Item_field(sel->db2, sel->table2,
+ $1.str))))
YYABORT;
}
| using_list ',' ident
{
- SELECT_LEX *sel=Select;
+ SELECT_LEX *sel= Select->select_lex();
if (!($$= new Item_cond_and(new Item_func_eq(new Item_field(sel->db1,sel->table1,$3.str), new Item_field(sel->db2,sel->table2,$3.str)), $1)))
YYABORT;
};
@@ -2416,14 +2450,14 @@ opt_table_alias:
where_clause:
- /* empty */ { Select->where= 0; }
- | WHERE expr { Select->where= $2; };
+ /* empty */ { Select->select_lex()->where= 0; }
+ | WHERE expr { Select->select_lex()->where= $2; };
having_clause:
/* empty */
- | HAVING { Select->create_refs=1; } expr
+ | HAVING { Select->select_lex()->create_refs= 1; } expr
{
- SELECT_LEX *sel=Select;
+ SELECT_LEX *sel= Select->select_lex();
sel->having= $3; sel->create_refs=0;
};
@@ -2452,15 +2486,27 @@ olap_opt:
{
LEX *lex=Lex;
lex->olap = true;
- lex->select->olap= CUBE_TYPE;
+ if (lex->current_select->linkage == GLOBAL_OPTIONS_TYPE)
+ {
+ net_printf(lex->thd, ER_WRONG_USAGE, "WITH CUBE",
+ "global union parameters");
+ YYABORT;
+ }
+ lex->current_select->select_lex()->olap= CUBE_TYPE;
net_printf(lex->thd, ER_NOT_SUPPORTED_YET, "CUBE");
YYABORT; /* To be deleted in 4.1 */
}
| WITH ROLLUP_SYM
{
- LEX *lex=Lex;
- lex->olap = true;
- lex->select->olap= ROLLUP_TYPE;
+ LEX *lex= Lex;
+ lex->olap= true;
+ if (lex->current_select->linkage == GLOBAL_OPTIONS_TYPE)
+ {
+ net_printf(lex->thd, ER_WRONG_USAGE, "WITH ROLLUP",
+ "global union parameters");
+ YYABORT;
+ }
+ lex->current_select->select_lex()->olap= ROLLUP_TYPE;
net_printf(lex->thd, ER_NOT_SUPPORTED_YET, "ROLLUP");
YYABORT; /* To be deleted in 4.1 */
}
@@ -2483,8 +2529,9 @@ order_clause:
net_printf(lex->thd, ER_WRONG_USAGE, "UPDATE", "ORDER BY");
YYABORT;
}
- if (lex->select->linkage != GLOBAL_OPTIONS_TYPE &&
- lex->select->olap != UNSPECIFIED_OLAP_TYPE)
+ if (lex->current_select->linkage != GLOBAL_OPTIONS_TYPE &&
+ lex->current_select->select_lex()->olap !=
+ UNSPECIFIED_OLAP_TYPE)
{
net_printf(lex->thd, ER_WRONG_USAGE,
"CUBE/ROLLUP",
@@ -2509,29 +2556,31 @@ limit_clause:
/* empty */ {}
| LIMIT ULONG_NUM
{
- LEX *lex=Lex;
- if (lex->select->linkage != GLOBAL_OPTIONS_TYPE &&
- lex->select->olap != UNSPECIFIED_OLAP_TYPE)
+ LEX *lex= Lex;
+ if (lex->current_select->linkage != GLOBAL_OPTIONS_TYPE &&
+ lex->current_select->select_lex()->olap !=
+ UNSPECIFIED_OLAP_TYPE)
{
net_printf(lex->thd, ER_WRONG_USAGE, "CUBE/ROLLUP",
"LIMIT");
YYABORT;
}
- SELECT_LEX *sel=Select;
+ SELECT_LEX_NODE *sel= Select;
sel->select_limit= $2;
sel->offset_limit= 0L;
}
| LIMIT ULONG_NUM ',' ULONG_NUM
{
LEX *lex=Lex;
- if (lex->select->linkage != GLOBAL_OPTIONS_TYPE &&
- lex->select->olap != UNSPECIFIED_OLAP_TYPE)
+ if (lex->current_select->linkage != GLOBAL_OPTIONS_TYPE &&
+ lex->current_select->select_lex()->olap !=
+ UNSPECIFIED_OLAP_TYPE)
{
net_printf(lex->thd, ER_WRONG_USAGE, "CUBE/ROLLUP",
"LIMIT");
YYABORT;
}
- SELECT_LEX *sel=lex->select;
+ SELECT_LEX_NODE *sel= lex->current_select;
sel->select_limit= $4;
sel->offset_limit= $2;
};
@@ -2545,7 +2594,7 @@ delete_limit_clause:
net_printf(lex->thd, ER_WRONG_USAGE, "DELETE", "LIMIT");
YYABORT;
}
- lex->select->select_limit= HA_POS_ERROR;
+ lex->current_select->select_limit= HA_POS_ERROR;
}
| LIMIT ulonglong_num
{ Select->select_limit= (ha_rows) $2; };
@@ -2679,7 +2728,7 @@ drop:
lex->drop_list.empty();
lex->drop_list.push_back(new Alter_drop(Alter_drop::KEY,
$3.str));
- if (!add_table_to_list($5,NULL, 1))
+ if (!lex->current_select->add_table_to_list($5,NULL, 1))
YYABORT;
}
| DROP DATABASE if_exists ident
@@ -2703,7 +2752,7 @@ table_list:
table_name:
table_ident
- { if (!add_table_to_list($1,NULL,1)) YYABORT; };
+ { if (!Select->add_table_to_list($1, NULL, 1)) YYABORT; };
if_exists:
/* empty */ { $$=0; }
@@ -2848,11 +2897,9 @@ expr_or_default:
update:
UPDATE_SYM
{
- LEX *lex=Lex;
- lex->sql_command = SQLCOM_UPDATE;
- lex->select->order_list.elements=0;
- lex->select->order_list.first=0;
- lex->select->order_list.next= (byte**) &lex->select->order_list.first;
+ LEX *lex= Lex;
+ lex->sql_command= SQLCOM_UPDATE;
+ lex->select_lex.init_order();
}
opt_low_priority opt_ignore join_table_list SET update_list where_clause opt_order_clause delete_limit_clause;
@@ -2877,12 +2924,11 @@ opt_low_priority:
delete:
DELETE_SYM
{
- LEX *lex=Lex;
- lex->sql_command= SQLCOM_DELETE; lex->select->options=0;
+ LEX *lex= Lex;
+ lex->sql_command= SQLCOM_DELETE;
+ lex->select_lex.options= 0;
lex->lock_option= lex->thd->update_lock_default;
- lex->select->order_list.elements=0;
- lex->select->order_list.first=0;
- lex->select->order_list.next= (byte**) &lex->select->order_list.first;
+ lex->select_lex.init_order();
}
opt_delete_options single_multi {};
@@ -2902,12 +2948,14 @@ table_wild_list:
table_wild_one:
ident opt_wild
{
- if (!add_table_to_list(new Table_ident($1),NULL,1,TL_WRITE))
+ if (!Select->add_table_to_list(new Table_ident($1), NULL, 1,
+ TL_WRITE))
YYABORT;
}
| ident '.' ident opt_wild
{
- if (!add_table_to_list(new Table_ident($1,$3,0),NULL,1,TL_WRITE))
+ if (!Select->add_table_to_list(new Table_ident($1, $3, 0), NULL,
+ 1, TL_WRITE))
YYABORT;
};
@@ -2927,13 +2975,11 @@ opt_delete_option:
truncate:
TRUNCATE_SYM opt_table_sym table_name
{
- LEX* lex = Lex;
+ LEX* lex= Lex;
lex->sql_command= SQLCOM_TRUNCATE;
- lex->select->options=0;
- lex->select->order_list.elements=0;
- lex->select->order_list.first=0;
- lex->select->order_list.next= (byte**) &lex->select->order_list.first;
- lex->lock_option= current_thd->update_lock_default; };
+ lex->select_lex.options= 0;
+ lex->select_lex.init_order();
+ lex->lock_option= lex->thd->update_lock_default; };
opt_table_sym:
/* empty */
@@ -2948,30 +2994,31 @@ show_param:
{ Lex->sql_command= SQLCOM_SHOW_DATABASES; }
| TABLES opt_db wild
{
- LEX *lex=Lex;
+ LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_TABLES;
- lex->select->db= $2; lex->select->options=0;
+ lex->select_lex.db= $2;
+ lex->select_lex.options= 0;
}
| TABLE_SYM STATUS_SYM opt_db wild
{
- LEX *lex=Lex;
+ LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_TABLES;
- lex->select->options|= SELECT_DESCRIBE;
- lex->select->db= $3;
+ lex->select_lex.options|= SELECT_DESCRIBE;
+ lex->select_lex.db= $3;
}
| OPEN_SYM TABLES opt_db wild
{
- LEX *lex=Lex;
+ LEX *lex= Lex;
lex->sql_command= SQLCOM_SHOW_OPEN_TABLES;
- lex->select->db= $3;
- lex->select->options=0;
+ lex->select_lex.db= $3;
+ lex->select_lex.options= 0;
}
| opt_full COLUMNS from_or_in table_ident opt_db wild
{
Lex->sql_command= SQLCOM_SHOW_FIELDS;
if ($5)
$4->change_db($5);
- if (!add_table_to_list($4,NULL,0))
+ if (!Select->add_table_to_list($4, NULL, 0))
YYABORT;
}
| NEW_SYM MASTER_SYM FOR_SYM SLAVE WITH MASTER_LOG_FILE_SYM EQ
@@ -2994,17 +3041,17 @@ show_param:
}
| BINLOG_SYM EVENTS_SYM binlog_in binlog_from
{
- LEX *lex=Lex;
- lex->sql_command = SQLCOM_SHOW_BINLOG_EVENTS;
- lex->select->select_limit= lex->thd->variables.select_limit;
- lex->select->offset_limit= 0L;
+ LEX *lex= Lex;
+ lex->sql_command= SQLCOM_SHOW_BINLOG_EVENTS;
+ lex->select_lex.select_limit= lex->thd->variables.select_limit;
+ lex->select_lex.offset_limit= 0L;
} limit_clause
| keys_or_index FROM table_ident opt_db
{
Lex->sql_command= SQLCOM_SHOW_KEYS;
if ($4)
$3->change_db($4);
- if (!add_table_to_list($3,NULL,0))
+ if (!Select->add_table_to_list($3, NULL, 0))
YYABORT;
}
| COLUMN_SYM TYPES_SYM
@@ -3061,7 +3108,7 @@ show_param:
| CREATE TABLE_SYM table_ident
{
Lex->sql_command = SQLCOM_SHOW_CREATE;
- if(!add_table_to_list($3, NULL,0))
+ if(!Select->add_table_to_list($3, NULL,0))
YYABORT;
}
| MASTER_SYM STATUS_SYM
@@ -3106,7 +3153,7 @@ describe:
lex->wild=0;
lex->verbose=0;
lex->sql_command=SQLCOM_SHOW_FIELDS;
- if (!add_table_to_list($2, NULL,0))
+ if (!Select->add_table_to_list($2, NULL,0))
YYABORT;
}
opt_describe_column
@@ -3207,7 +3254,8 @@ kill:
use: USE_SYM ident
{
LEX *lex=Lex;
- lex->sql_command=SQLCOM_CHANGE_DB; lex->select->db= $2.str;
+ lex->sql_command=SQLCOM_CHANGE_DB;
+ lex->select_lex.db= $2.str;
};
/* import, export of files */
@@ -3224,14 +3272,14 @@ load: LOAD DATA_SYM load_data_lock opt_local INFILE TEXT_STRING
opt_duplicate INTO TABLE_SYM table_ident opt_field_term opt_line_term
opt_ignore_lines opt_field_spec
{
- if (!add_table_to_list($11,NULL,1))
+ if (!Select->add_table_to_list($11, NULL, 1))
YYABORT;
}
|
LOAD TABLE_SYM table_ident FROM MASTER_SYM
{
Lex->sql_command = SQLCOM_LOAD_MASTER_TABLE;
- if (!add_table_to_list($3,NULL,1))
+ if (!Select->add_table_to_list($3, NULL, 1))
YYABORT;
}
@@ -3356,23 +3404,23 @@ order_ident:
simple_ident:
ident
{
- SELECT_LEX *sel=Select;
- $$ = !sel->create_refs || sel->in_sum_expr > 0 ? (Item*) new Item_field(NullS,NullS,$1.str) : (Item*) new Item_ref(NullS,NullS,$1.str);
+ SELECT_LEX_NODE *sel=Select;
+ $$ = !sel->create_refs || sel->get_in_sum_expr() > 0 ? (Item*) new Item_field(NullS,NullS,$1.str) : (Item*) new Item_ref(NullS,NullS,$1.str);
}
| ident '.' ident
{
- SELECT_LEX *sel=Select;
- $$ = !sel->create_refs || sel->in_sum_expr > 0 ? (Item*) new Item_field(NullS,$1.str,$3.str) : (Item*) new Item_ref(NullS,$1.str,$3.str);
+ SELECT_LEX_NODE *sel=Select;
+ $$ = !sel->create_refs || sel->get_in_sum_expr() > 0 ? (Item*) new Item_field(NullS,$1.str,$3.str) : (Item*) new Item_ref(NullS,$1.str,$3.str);
}
| '.' ident '.' ident
{
- SELECT_LEX *sel=Select;
- $$ = !sel->create_refs || sel->in_sum_expr > 0 ? (Item*) new Item_field(NullS,$2.str,$4.str) : (Item*) new Item_ref(NullS,$2.str,$4.str);
+ SELECT_LEX_NODE *sel=Select;
+ $$ = !sel->create_refs || sel->get_in_sum_expr() > 0 ? (Item*) new Item_field(NullS,$2.str,$4.str) : (Item*) new Item_ref(NullS,$2.str,$4.str);
}
| ident '.' ident '.' ident
{
- SELECT_LEX *sel=Select;
- $$ = !sel->create_refs || sel->in_sum_expr > 0 ? (Item*) new Item_field((current_thd->client_capabilities & CLIENT_NO_SCHEMA ? NullS :$1.str),$3.str,$5.str) : (Item*) new Item_ref((current_thd->client_capabilities & CLIENT_NO_SCHEMA ? NullS :$1.str),$3.str,$5.str);
+ SELECT_LEX_NODE *sel=Select;
+ $$ = !sel->create_refs || sel->get_in_sum_expr() > 0 ? (Item*) new Item_field((current_thd->client_capabilities & CLIENT_NO_SCHEMA ? NullS :$1.str),$3.str,$5.str) : (Item*) new Item_ref((current_thd->client_capabilities & CLIENT_NO_SCHEMA ? NullS :$1.str),$3.str,$5.str);
};
@@ -3724,7 +3772,10 @@ table_lock_list:
table_lock:
table_ident opt_table_alias lock_option
- { if (!add_table_to_list($1,$2,0,(thr_lock_type) $3)) YYABORT; }
+ {
+ if (!Select->add_table_to_list($1, $2, 0, (thr_lock_type) $3))
+ YYABORT;
+ }
;
lock_option:
@@ -3746,14 +3797,16 @@ unlock:
handler:
HANDLER_SYM table_ident OPEN_SYM opt_table_alias
{
- Lex->sql_command = SQLCOM_HA_OPEN;
- if (!add_table_to_list($2,$4,0))
+ LEX *lex= Lex;
+ lex->sql_command = SQLCOM_HA_OPEN;
+ if (!lex->current_select->add_table_to_list($2, $4, 0))
YYABORT;
}
| HANDLER_SYM table_ident CLOSE_SYM
{
- Lex->sql_command = SQLCOM_HA_CLOSE;
- if (!add_table_to_list($2,0,0))
+ LEX *lex= Lex;
+ lex->sql_command = SQLCOM_HA_CLOSE;
+ if (!lex->current_select->add_table_to_list($2, 0, 0))
YYABORT;
}
| HANDLER_SYM table_ident READ_SYM
@@ -3761,9 +3814,9 @@ handler:
LEX *lex=Lex;
lex->sql_command = SQLCOM_HA_READ;
lex->ha_rkey_mode= HA_READ_KEY_EXACT; /* Avoid purify warnings */
- lex->select->select_limit= 1;
- lex->select->offset_limit= 0L;
- if (!add_table_to_list($2,0,0))
+ lex->current_select->select_limit= 1;
+ lex->current_select->offset_limit= 0L;
+ if (!lex->current_select->add_table_to_list($2, 0, 0))
YYABORT;
}
handler_read_or_scan where_clause limit_clause { }
@@ -3812,7 +3865,7 @@ revoke:
lex->users_list.empty();
lex->columns.empty();
lex->grant= lex->grant_tot_col=0;
- lex->select->db=0;
+ lex->select_lex.db=0;
lex->ssl_type= SSL_TYPE_NOT_SPECIFIED;
lex->ssl_cipher= lex->x509_subject= lex->x509_issuer= 0;
bzero((char*) &lex->mqh, sizeof(lex->mqh));
@@ -3827,7 +3880,7 @@ grant:
lex->columns.empty();
lex->sql_command = SQLCOM_GRANT;
lex->grant= lex->grant_tot_col= 0;
- lex->select->db= 0;
+ lex->select_lex.db= 0;
lex->ssl_type= SSL_TYPE_NOT_SPECIFIED;
lex->ssl_cipher= lex->x509_subject= lex->x509_issuer= 0;
bzero(&(lex->mqh),sizeof(lex->mqh));
@@ -3917,8 +3970,8 @@ require_list_element:
opt_table:
'*'
{
- LEX *lex=Lex;
- lex->select->db=lex->thd->db;
+ LEX *lex= Lex;
+ lex->current_select->select_lex()->db= lex->thd->db;
if (lex->grant == GLOBAL_ACLS)
lex->grant = DB_ACLS & ~GRANT_ACL;
else if (lex->columns.elements)
@@ -3929,8 +3982,8 @@ opt_table:
}
| ident '.' '*'
{
- LEX *lex=Lex;
- lex->select->db = $1.str;
+ LEX *lex= Lex;
+ lex->current_select->select_lex()->db = $1.str;
if (lex->grant == GLOBAL_ACLS)
lex->grant = DB_ACLS & ~GRANT_ACL;
else if (lex->columns.elements)
@@ -3941,8 +3994,8 @@ opt_table:
}
| '*' '.' '*'
{
- LEX *lex=Lex;
- lex->select->db = NULL;
+ LEX *lex= Lex;
+ lex->current_select->select_lex()->db = NULL;
if (lex->grant == GLOBAL_ACLS)
lex->grant= GLOBAL_ACLS & ~GRANT_ACL;
else if (lex->columns.elements)
@@ -3954,7 +4007,7 @@ opt_table:
| table_ident
{
LEX *lex=Lex;
- if (!add_table_to_list($1,NULL,0))
+ if (!lex->current_select->add_table_to_list($1,NULL,0))
YYABORT;
if (lex->grant == GLOBAL_ACLS)
lex->grant = TABLE_ACLS & ~GRANT_ACL;
@@ -4109,14 +4162,14 @@ union_list:
net_printf(lex->thd, ER_WRONG_USAGE, "UNION", "INTO");
YYABORT;
}
- if (lex->select->linkage == GLOBAL_OPTIONS_TYPE)
+ if (lex->current_select->linkage == GLOBAL_OPTIONS_TYPE)
{
send_error(lex->thd, ER_SYNTAX_ERROR);
YYABORT;
}
if (mysql_new_select(lex, 0))
YYABORT;
- lex->select->linkage=UNION_TYPE;
+ lex->current_select->linkage=UNION_TYPE;
}
select_init
;
@@ -4130,19 +4183,17 @@ optional_order_or_limit:
|
{
LEX *lex=Lex;
- if (!lex->select->braces)
+ if (!lex->current_select->linkage == GLOBAL_OPTIONS_TYPE)
{
send_error(lex->thd, ER_SYNTAX_ERROR);
YYABORT;
}
- lex->select->master_unit()->global_parameters=
- lex->select->master_unit();
- /*
- Following type conversion looks like hack, but all that need
- SELECT_LEX fields always check linkage type.
- */
- lex->select= (SELECT_LEX*)lex->select->master_unit();
- lex->select->select_limit=lex->thd->variables.select_limit;
+ SELECT_LEX *sel= lex->current_select->select_lex();
+ sel->master_unit()->global_parameters=
+ sel->master_unit();
+ lex->current_select= sel->master_unit();
+ lex->current_select->select_limit=
+ lex->thd->variables.select_limit;
}
opt_order_clause limit_clause
;
@@ -4162,7 +4213,8 @@ singleval_subselect_init:
select_init
{
$$= new Item_singleval_subselect(current_thd,
- Lex->select->master_unit()->first_select());
+ Lex->current_select->master_unit()->
+ first_select());
};
exists_subselect:
@@ -4176,7 +4228,8 @@ exists_subselect_init:
select_init
{
$$= new Item_exists_subselect(current_thd,
- Lex->select->master_unit()->first_select());
+ Lex->current_select->master_unit()->
+ first_select());
};
subselect_start:
@@ -4190,5 +4243,5 @@ subselect_end:
')'
{
LEX *lex=Lex;
- lex->select = lex->select->outer_select();
+ lex->current_select = lex->current_select->outer_select();
};