diff options
author | peter@mysql.com <> | 2002-11-05 21:31:03 +0300 |
---|---|---|
committer | peter@mysql.com <> | 2002-11-05 21:31:03 +0300 |
commit | 8bcace70434836acfe66a6ad5ff93c7a7afdd1eb (patch) | |
tree | f8daa8b127bb4bf13e3f4de2b7a731345058335c | |
parent | ecedc7ac35009143b202f813e4c8df2e41ab558a (diff) | |
parent | 529146269dea329a8a3d89783cc3c612fa86c4d6 (diff) | |
download | mariadb-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.h | 37 | ||||
-rw-r--r-- | bdb/dbinc_auto/int_def.in | 1328 | ||||
-rwxr-xr-x | bdb/dist/s_tags | 10 | ||||
-rw-r--r-- | bdb/test/TESTS | 1437 | ||||
-rw-r--r-- | client/mysqldump.c | 22 | ||||
-rw-r--r-- | sql-bench/crash-me.sh | 37 | ||||
-rw-r--r-- | sql-bench/test-insert.sh | 51 | ||||
-rw-r--r-- | sql/item.cc | 53 | ||||
-rw-r--r-- | sql/item_subselect.cc | 18 | ||||
-rw-r--r-- | sql/item_sum.cc | 5 | ||||
-rw-r--r-- | sql/log_event.cc | 6 | ||||
-rw-r--r-- | sql/mini_client.cc | 1 | ||||
-rw-r--r-- | sql/mysql_priv.h | 19 | ||||
-rw-r--r-- | sql/sql_base.cc | 23 | ||||
-rw-r--r-- | sql/sql_cache.cc | 6 | ||||
-rw-r--r-- | sql/sql_class.h | 6 | ||||
-rw-r--r-- | sql/sql_delete.cc | 7 | ||||
-rw-r--r-- | sql/sql_derived.cc | 4 | ||||
-rw-r--r-- | sql/sql_insert.cc | 2 | ||||
-rw-r--r-- | sql/sql_lex.cc | 172 | ||||
-rw-r--r-- | sql/sql_lex.h | 92 | ||||
-rw-r--r-- | sql/sql_parse.cc | 47 | ||||
-rw-r--r-- | sql/sql_prepare.cc | 4 | ||||
-rw-r--r-- | sql/sql_repl.cc | 4 | ||||
-rw-r--r-- | sql/sql_select.cc | 28 | ||||
-rw-r--r-- | sql/sql_union.cc | 27 | ||||
-rw-r--r-- | sql/sql_update.cc | 6 | ||||
-rw-r--r-- | sql/sql_yacc.yy | 349 |
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(); }; |