Commit 8984bb9a authored by unknown's avatar unknown

Merge sanja.is.com.ua:/home/bell/mysql/bk/mysql-4.1

into sanja.is.com.ua:/home/bell/mysql/bk/work-sub-4.1


sql/sql_parse.cc:
  Auto merged
parents 3248c669 869ec689
...@@ -222,7 +222,7 @@ THD::THD() ...@@ -222,7 +222,7 @@ THD::THD()
init(); init();
/* Initialize sub structures */ /* Initialize sub structures */
init_alloc_root(&warn_root, WARN_ALLOC_BLOCK_SIZE, WARN_ALLOC_PREALLOC_SIZE); init_sql_alloc(&warn_root, WARN_ALLOC_BLOCK_SIZE, WARN_ALLOC_PREALLOC_SIZE);
user_connect=(USER_CONN *)0; user_connect=(USER_CONN *)0;
hash_init(&user_vars, &my_charset_bin, USER_VARS_HASH_SIZE, 0, 0, hash_init(&user_vars, &my_charset_bin, USER_VARS_HASH_SIZE, 0, 0,
(hash_get_key) get_var_key, (hash_get_key) get_var_key,
...@@ -258,7 +258,7 @@ THD::THD() ...@@ -258,7 +258,7 @@ THD::THD()
transaction.trans_log.end_of_file= max_binlog_cache_size; transaction.trans_log.end_of_file= max_binlog_cache_size;
} }
#endif #endif
init_alloc_root(&transaction.mem_root, ALLOC_ROOT_MIN_BLOCK_SIZE, 0); init_sql_alloc(&transaction.mem_root, ALLOC_ROOT_MIN_BLOCK_SIZE, 0);
{ {
ulong tmp=sql_rnd_with_mutex(); ulong tmp=sql_rnd_with_mutex();
randominit(&rand, tmp + (ulong) &rand, tmp + (ulong) ::query_id); randominit(&rand, tmp + (ulong) &rand, tmp + (ulong) ::query_id);
...@@ -1421,7 +1421,7 @@ Item_arena::Item_arena(bool init_mem_root) ...@@ -1421,7 +1421,7 @@ Item_arena::Item_arena(bool init_mem_root)
state(CONVENTIONAL_EXECUTION) state(CONVENTIONAL_EXECUTION)
{ {
if (init_mem_root) if (init_mem_root)
init_alloc_root(&mem_root, ALLOC_ROOT_MIN_BLOCK_SIZE, 0); init_sql_alloc(&mem_root, ALLOC_ROOT_MIN_BLOCK_SIZE, 0);
} }
......
...@@ -2018,6 +2018,7 @@ mysql_execute_command(THD *thd) ...@@ -2018,6 +2018,7 @@ mysql_execute_command(THD *thd)
CHARSET_INFO *to_cs= thd->variables.collation_connection; CHARSET_INFO *to_cs= thd->variables.collation_connection;
bool need_conversion; bool need_conversion;
user_var_entry *entry; user_var_entry *entry;
String *pstr= &str;
uint32 unused; uint32 unused;
/* /*
Convert @var contents to string in connection character set. Although Convert @var contents to string in connection character set. Although
...@@ -2033,26 +2034,43 @@ mysql_execute_command(THD *thd) ...@@ -2033,26 +2034,43 @@ mysql_execute_command(THD *thd)
String *pstr; String *pstr;
my_bool is_var_null; my_bool is_var_null;
pstr= entry->val_str(&is_var_null, &str, NOT_FIXED_DEC); pstr= entry->val_str(&is_var_null, &str, NOT_FIXED_DEC);
/*
NULL value of variable checked early as entry->value so here
we can't get NULL in normal conditions
*/
DBUG_ASSERT(!is_var_null); DBUG_ASSERT(!is_var_null);
if (!pstr) if (!pstr)
send_error(thd, ER_OUT_OF_RESOURCES); {
DBUG_ASSERT(pstr == &str); res= -1;
break; // EOM (error should be reported by allocator)
}
} }
else else
{
/*
variable absent or equal to NULL, so we need to set variable to
something reasonable to get readable error message during parsing
*/
str.set("NULL", 4, &my_charset_latin1); str.set("NULL", 4, &my_charset_latin1);
}
need_conversion= need_conversion=
String::needs_conversion(str.length(), str.charset(), to_cs, &unused); String::needs_conversion(pstr->length(), pstr->charset(),
to_cs, &unused);
query_len= need_conversion? (str.length() * to_cs->mbmaxlen) : query_len= need_conversion? (pstr->length() * to_cs->mbmaxlen) :
str.length(); pstr->length();
if (!(query_str= alloc_root(&thd->mem_root, query_len+1))) if (!(query_str= alloc_root(&thd->mem_root, query_len+1)))
send_error(thd, ER_OUT_OF_RESOURCES); {
res= -1;
break; // EOM (error should be reported by allocator)
}
if (need_conversion) if (need_conversion)
query_len= copy_and_convert(query_str, query_len, to_cs, str.ptr(), query_len= copy_and_convert(query_str, query_len, to_cs, pstr->ptr(),
str.length(), str.charset()); pstr->length(), pstr->charset());
else else
memcpy(query_str, str.ptr(), str.length()); memcpy(query_str, pstr->ptr(), pstr->length());
query_str[query_len]= 0; query_str[query_len]= 0;
} }
else else
......
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