Commit a6df7002 authored by mskold@mysql.com's avatar mskold@mysql.com

Merge mskold@bk-internal.mysql.com:/home/bk/mysql-5.0

into mysql.com:/usr/local/home/marty/MySQL/mysql-5.0
parents 6720cb7d c661f473
...@@ -19,8 +19,8 @@ AC_DEFUN([MYSQL_CHECK_YASSL], [ ...@@ -19,8 +19,8 @@ AC_DEFUN([MYSQL_CHECK_YASSL], [
AC_MSG_RESULT([using bundled yaSSL]) AC_MSG_RESULT([using bundled yaSSL])
yassl_dir="extra/yassl" yassl_dir="extra/yassl"
openssl_libs="\ openssl_libs="\
\$(top_builddir)/extra/yassl/src/libyassl.a\ -L\$(top_builddir)/extra/yassl/src -lyassl\
\$(top_builddir)/extra/yassl/taocrypt/src/libtaocrypt.a" -L\$(top_builddir)/extra/yassl/taocrypt/src -ltaocrypt"
openssl_includes="-I\$(top_srcdir)/extra/yassl/include" openssl_includes="-I\$(top_srcdir)/extra/yassl/include"
AC_DEFINE([HAVE_OPENSSL], [1], [Defined by configure. Using yaSSL for OpenSSL emulation.]) AC_DEFINE([HAVE_OPENSSL], [1], [Defined by configure. Using yaSSL for OpenSSL emulation.])
else else
......
...@@ -3941,6 +3941,8 @@ Integer CRT(const Integer &xp, const Integer &p, const Integer &xq, ...@@ -3941,6 +3941,8 @@ Integer CRT(const Integer &xp, const Integer &p, const Integer &xq,
#ifdef __GNUC__ #ifdef __GNUC__
template unsigned int DivideThreeWordsByTwo<unsigned int, DWord>(unsigned int*, unsigned int, unsigned int, DWord*); template unsigned int DivideThreeWordsByTwo<unsigned int, DWord>(unsigned int*, unsigned int, unsigned int, DWord*);
template unsigned int DivideThreeWordsByTwo<unsigned int, Word>(unsigned int*, unsigned int, unsigned int, Word*);
template unsigned long long DivideThreeWordsByTwo<unsigned long long, DWord>(unsigned long long*, unsigned long long, unsigned long long, DWord*);
#endif #endif
} // namespace } // namespace
......
...@@ -11,6 +11,7 @@ template AlignedAllocator<unsigned int>::pointer StdReallocate<unsigned int, Ali ...@@ -11,6 +11,7 @@ template AlignedAllocator<unsigned int>::pointer StdReallocate<unsigned int, Ali
#endif #endif
template AllocatorWithCleanup<unsigned char>::pointer StdReallocate<unsigned char, AllocatorWithCleanup<unsigned char> >(AllocatorWithCleanup<unsigned char>&, unsigned char*, AllocatorWithCleanup<unsigned char>::size_type, AllocatorWithCleanup<unsigned char>::size_type, bool); template AllocatorWithCleanup<unsigned char>::pointer StdReallocate<unsigned char, AllocatorWithCleanup<unsigned char> >(AllocatorWithCleanup<unsigned char>&, unsigned char*, AllocatorWithCleanup<unsigned char>::size_type, AllocatorWithCleanup<unsigned char>::size_type, bool);
template AllocatorWithCleanup<unsigned int>::pointer StdReallocate<unsigned int, AllocatorWithCleanup<unsigned int> >(AllocatorWithCleanup<unsigned int>&, unsigned int*, AllocatorWithCleanup<unsigned int>::size_type, AllocatorWithCleanup<unsigned int>::size_type, bool); template AllocatorWithCleanup<unsigned int>::pointer StdReallocate<unsigned int, AllocatorWithCleanup<unsigned int> >(AllocatorWithCleanup<unsigned int>&, unsigned int*, AllocatorWithCleanup<unsigned int>::size_type, AllocatorWithCleanup<unsigned int>::size_type, bool);
template AllocatorWithCleanup<unsigned long long>::pointer StdReallocate<unsigned long long, AllocatorWithCleanup<unsigned long long> >(AllocatorWithCleanup<unsigned long long>&, unsigned long long*, AllocatorWithCleanup<unsigned long long>::size_type, AllocatorWithCleanup<unsigned long long>::size_type, bool);
template class RSA_Decryptor<RSA_BlockType2>; template class RSA_Decryptor<RSA_BlockType2>;
template class RSA_Encryptor<RSA_BlockType1>; template class RSA_Encryptor<RSA_BlockType1>;
template class RSA_Encryptor<RSA_BlockType2>; template class RSA_Encryptor<RSA_BlockType2>;
...@@ -18,14 +19,19 @@ template class RSA_Encryptor<RSA_BlockType2>; ...@@ -18,14 +19,19 @@ template class RSA_Encryptor<RSA_BlockType2>;
namespace mySTL { namespace mySTL {
template vector<TaoCrypt::Integer>* uninit_fill_n<vector<TaoCrypt::Integer>*, unsigned int, vector<TaoCrypt::Integer> >(vector<TaoCrypt::Integer>*, unsigned int, vector<TaoCrypt::Integer> const&); template vector<TaoCrypt::Integer>* uninit_fill_n<vector<TaoCrypt::Integer>*, unsigned int, vector<TaoCrypt::Integer> >(vector<TaoCrypt::Integer>*, unsigned int, vector<TaoCrypt::Integer> const&);
template vector<TaoCrypt::Integer>* uninit_fill_n<vector<TaoCrypt::Integer>*, unsigned long, vector<TaoCrypt::Integer> >(vector<TaoCrypt::Integer>*, unsigned long, vector<TaoCrypt::Integer> const&);
template void destroy<vector<TaoCrypt::Integer>*>(vector<TaoCrypt::Integer>*, vector<TaoCrypt::Integer>*); template void destroy<vector<TaoCrypt::Integer>*>(vector<TaoCrypt::Integer>*, vector<TaoCrypt::Integer>*);
template TaoCrypt::Integer* uninit_copy<TaoCrypt::Integer*, TaoCrypt::Integer*>(TaoCrypt::Integer*, TaoCrypt::Integer*, TaoCrypt::Integer*); template TaoCrypt::Integer* uninit_copy<TaoCrypt::Integer*, TaoCrypt::Integer*>(TaoCrypt::Integer*, TaoCrypt::Integer*, TaoCrypt::Integer*);
template TaoCrypt::Integer* uninit_fill_n<TaoCrypt::Integer*, unsigned int, TaoCrypt::Integer>(TaoCrypt::Integer*, unsigned int, TaoCrypt::Integer const&); template TaoCrypt::Integer* uninit_fill_n<TaoCrypt::Integer*, unsigned int, TaoCrypt::Integer>(TaoCrypt::Integer*, unsigned int, TaoCrypt::Integer const&);
template TaoCrypt::Integer* uninit_fill_n<TaoCrypt::Integer*, unsigned long, TaoCrypt::Integer>(TaoCrypt::Integer*, unsigned long, TaoCrypt::Integer const&);
template void destroy<TaoCrypt::Integer*>(TaoCrypt::Integer*, TaoCrypt::Integer*); template void destroy<TaoCrypt::Integer*>(TaoCrypt::Integer*, TaoCrypt::Integer*);
} }
template void TaoCrypt::tcDelete<TaoCrypt::HASH>(TaoCrypt::HASH*); namespace TaoCrypt {
template void TaoCrypt::tcArrayDelete<unsigned>(unsigned*); template void tcDelete<HASH>(HASH*);
template void TaoCrypt::tcArrayDelete<unsigned char>(unsigned char*); template void tcArrayDelete<unsigned>(unsigned*);
template void TaoCrypt::tcArrayDelete<char>(char*); template void tcArrayDelete<unsigned long long>(unsigned long long*);
template void tcArrayDelete<unsigned char>(unsigned char*);
template void tcArrayDelete<char>(char*);
}
#endif #endif
...@@ -1190,7 +1190,8 @@ CommandInterpreter::executeShow(char* parameters) ...@@ -1190,7 +1190,8 @@ CommandInterpreter::executeShow(char* parameters)
api_nodes++; api_nodes++;
break; break;
case NDB_MGM_NODE_TYPE_NDB: case NDB_MGM_NODE_TYPE_NDB:
if (state->node_states[i].dynamic_id < master_id) if (state->node_states[i].dynamic_id &&
state->node_states[i].dynamic_id < master_id)
master_id= state->node_states[i].dynamic_id; master_id= state->node_states[i].dynamic_id;
ndb_nodes++; ndb_nodes++;
break; break;
......
...@@ -1027,7 +1027,7 @@ Item_field::Item_field(THD *thd, Field *f) ...@@ -1027,7 +1027,7 @@ Item_field::Item_field(THD *thd, Field *f)
structure can go away and pop up again between subsequent executions structure can go away and pop up again between subsequent executions
of a prepared statement). of a prepared statement).
*/ */
if (thd->current_arena->is_stmt_prepare()) if (thd->current_arena->is_stmt_prepare_or_first_sp_execute())
{ {
if (db_name) if (db_name)
orig_db_name= thd->strdup(db_name); orig_db_name= thd->strdup(db_name);
......
...@@ -362,7 +362,7 @@ Item_singlerow_subselect::select_transformer(JOIN *join) ...@@ -362,7 +362,7 @@ Item_singlerow_subselect::select_transformer(JOIN *join)
because we do not rollback this changes because we do not rollback this changes
TODO: make rollback for it, or special name resolving mode in 5.0. TODO: make rollback for it, or special name resolving mode in 5.0.
*/ */
!arena->is_stmt_prepare() !arena->is_stmt_prepare_or_first_sp_execute()
) )
{ {
......
...@@ -695,7 +695,8 @@ public: ...@@ -695,7 +695,8 @@ public:
virtual Type type() const; virtual Type type() const;
virtual ~Item_arena() {}; virtual ~Item_arena() {};
inline bool is_stmt_prepare() const { return (int)state < (int)PREPARED; } inline bool is_stmt_prepare_or_first_sp_execute() const
{ return (int)state < (int)PREPARED; }
inline bool is_first_stmt_execute() const { return state == PREPARED; } inline bool is_first_stmt_execute() const { return state == PREPARED; }
inline bool is_stmt_execute() const inline bool is_stmt_execute() const
{ return state == PREPARED || state == EXECUTED; } { return state == PREPARED || state == EXECUTED; }
......
...@@ -5894,7 +5894,7 @@ TABLE_LIST *st_select_lex::add_table_to_list(THD *thd, ...@@ -5894,7 +5894,7 @@ TABLE_LIST *st_select_lex::add_table_to_list(THD *thd,
ptr->db= empty_c_string; ptr->db= empty_c_string;
ptr->db_length= 0; ptr->db_length= 0;
} }
if (thd->current_arena->is_stmt_prepare()) if (thd->current_arena->is_stmt_prepare_or_first_sp_execute())
ptr->db= thd->strdup(ptr->db); ptr->db= thd->strdup(ptr->db);
ptr->alias= alias_str; ptr->alias= alias_str;
...@@ -6972,7 +6972,7 @@ bool create_table_precheck(THD *thd, TABLE_LIST *tables, ...@@ -6972,7 +6972,7 @@ bool create_table_precheck(THD *thd, TABLE_LIST *tables,
against the opened tables to ensure we don't use a table that is part against the opened tables to ensure we don't use a table that is part
of the view (which can only be done after the table has been opened). of the view (which can only be done after the table has been opened).
*/ */
if (thd->current_arena->is_stmt_prepare()) if (thd->current_arena->is_stmt_prepare_or_first_sp_execute())
{ {
/* /*
For temporary tables we don't have to check if the created table exists For temporary tables we don't have to check if the created table exists
......
...@@ -323,7 +323,7 @@ bool st_select_lex_unit::prepare(THD *thd_arg, select_result *sel_result, ...@@ -323,7 +323,7 @@ bool st_select_lex_unit::prepare(THD *thd_arg, select_result *sel_result,
} }
if (tmp_arena) if (tmp_arena)
thd->restore_backup_item_arena(tmp_arena, &backup); thd->restore_backup_item_arena(tmp_arena, &backup);
if (arena->is_stmt_prepare()) if (arena->is_stmt_prepare_or_first_sp_execute())
{ {
/* prepare fake select to initialize it correctly */ /* prepare fake select to initialize it correctly */
init_prepare_fake_select_lex(thd); init_prepare_fake_select_lex(thd);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment