Loading include/hash.h +2 −0 Original line number Diff line number Diff line Loading @@ -65,6 +65,8 @@ my_bool hash_check(HASH *hash); /* Only in debug library */ #define hash_clear(H) bzero((char*) (H),sizeof(*(H))) #define hash_inited(H) ((H)->array.buffer != 0) #define hash_init_opt(A,B,C,D,E,F,G,H) \ (!hash_inited(A) && _hash_init(A,B,C,D,E,F,G, H CALLER_INFO)) #ifdef __cplusplus } Loading sql/sp.cc +4 −0 Original line number Diff line number Diff line Loading @@ -1369,6 +1369,10 @@ static bool add_used_routine(LEX *lex, Query_arena *arena, const LEX_STRING *key, TABLE_LIST *belong_to_view) { hash_init_opt(&lex->sroutines, system_charset_info, Query_tables_list::START_SROUTINES_HASH_SIZE, 0, 0, sp_sroutine_key, 0, 0); if (!hash_search(&lex->sroutines, (byte *)key->str, key->length)) { Sroutine_hash_entry *rn= Loading sql/sql_lex.cc +10 −1 Original line number Diff line number Diff line Loading @@ -1634,9 +1634,18 @@ void Query_tables_list::reset_query_tables_list(bool init) query_tables_last= &query_tables; query_tables_own_last= 0; if (init) hash_init(&sroutines, system_charset_info, 0, 0, 0, sp_sroutine_key, 0, 0); { /* We delay real initialization of hash (and therefore related memory allocation) until first insertion into this hash. */ hash_clear(&sroutines); } else if (sroutines.records) { /* Non-zero sroutines.records means that hash was initialized. */ my_hash_reset(&sroutines); } sroutines_list.empty(); sroutines_list_own_last= sroutines_list.next; sroutines_list_own_elements= 0; Loading sql/sql_lex.h +5 −1 Original line number Diff line number Diff line Loading @@ -743,7 +743,11 @@ class Query_tables_list 0 - indicates that this query does not need prelocking. */ TABLE_LIST **query_tables_own_last; /* Set of stored routines called by statement. */ /* Set of stored routines called by statement. (Note that we use lazy-initialization for this hash). */ enum { START_SROUTINES_HASH_SIZE= 16 }; HASH sroutines; /* List linking elements of 'sroutines' set. Allows you to add new elements Loading Loading
include/hash.h +2 −0 Original line number Diff line number Diff line Loading @@ -65,6 +65,8 @@ my_bool hash_check(HASH *hash); /* Only in debug library */ #define hash_clear(H) bzero((char*) (H),sizeof(*(H))) #define hash_inited(H) ((H)->array.buffer != 0) #define hash_init_opt(A,B,C,D,E,F,G,H) \ (!hash_inited(A) && _hash_init(A,B,C,D,E,F,G, H CALLER_INFO)) #ifdef __cplusplus } Loading
sql/sp.cc +4 −0 Original line number Diff line number Diff line Loading @@ -1369,6 +1369,10 @@ static bool add_used_routine(LEX *lex, Query_arena *arena, const LEX_STRING *key, TABLE_LIST *belong_to_view) { hash_init_opt(&lex->sroutines, system_charset_info, Query_tables_list::START_SROUTINES_HASH_SIZE, 0, 0, sp_sroutine_key, 0, 0); if (!hash_search(&lex->sroutines, (byte *)key->str, key->length)) { Sroutine_hash_entry *rn= Loading
sql/sql_lex.cc +10 −1 Original line number Diff line number Diff line Loading @@ -1634,9 +1634,18 @@ void Query_tables_list::reset_query_tables_list(bool init) query_tables_last= &query_tables; query_tables_own_last= 0; if (init) hash_init(&sroutines, system_charset_info, 0, 0, 0, sp_sroutine_key, 0, 0); { /* We delay real initialization of hash (and therefore related memory allocation) until first insertion into this hash. */ hash_clear(&sroutines); } else if (sroutines.records) { /* Non-zero sroutines.records means that hash was initialized. */ my_hash_reset(&sroutines); } sroutines_list.empty(); sroutines_list_own_last= sroutines_list.next; sroutines_list_own_elements= 0; Loading
sql/sql_lex.h +5 −1 Original line number Diff line number Diff line Loading @@ -743,7 +743,11 @@ class Query_tables_list 0 - indicates that this query does not need prelocking. */ TABLE_LIST **query_tables_own_last; /* Set of stored routines called by statement. */ /* Set of stored routines called by statement. (Note that we use lazy-initialization for this hash). */ enum { START_SROUTINES_HASH_SIZE= 16 }; HASH sroutines; /* List linking elements of 'sroutines' set. Allows you to add new elements Loading