Commit 8427dfd4 authored by monty@mysql.com's avatar monty@mysql.com

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

into  mysql.com:/home/my/mysql-5.0
parents ef1de7da c0fcabce
...@@ -2524,13 +2524,21 @@ row_sel_store_mysql_rec( ...@@ -2524,13 +2524,21 @@ row_sel_store_mysql_rec(
(byte) (templ->mysql_null_bit_mask); (byte) (templ->mysql_null_bit_mask);
switch (templ->type) { switch (templ->type) {
case DATA_VARCHAR: case DATA_VARCHAR:
case DATA_CHAR:
case DATA_BINARY: case DATA_BINARY:
case DATA_VARMYSQL:
if (templ->mysql_type
== DATA_MYSQL_TRUE_VARCHAR) {
/* This is a >= 5.0.3 type
true VARCHAR. Zero the field. */
pad_char = 0x00;
break;
}
/* Fall through */
case DATA_CHAR:
case DATA_FIXBINARY: case DATA_FIXBINARY:
case DATA_MYSQL: case DATA_MYSQL:
case DATA_VARMYSQL: /* MySQL pads all string types (except
/* MySQL pads all non-BLOB and non-TEXT BLOB, TEXT and true VARCHAR) with space. */
string types with space ' ' */
if (UNIV_UNLIKELY(templ->mbminlen == 2)) { if (UNIV_UNLIKELY(templ->mbminlen == 2)) {
/* Treat UCS2 as a special case. */ /* Treat UCS2 as a special case. */
data = mysql_rec data = mysql_rec
......
...@@ -940,3 +940,12 @@ f5 19 NULL ...@@ -940,3 +940,12 @@ f5 19 NULL
f6 1 NULL f6 1 NULL
f7 64 NULL f7 64 NULL
drop table t1; drop table t1;
create table t1 (f1 integer);
create trigger tr1 after insert on t1 for each row set @test_var=42;
use information_schema;
select trigger_schema, trigger_name from triggers where
trigger_name='tr1';
trigger_schema trigger_name
test tr1
use test;
drop table t1;
...@@ -1452,16 +1452,16 @@ Error 1146 Table 'test.t4' doesn't exist ...@@ -1452,16 +1452,16 @@ Error 1146 Table 'test.t4' doesn't exist
checksum table t1, t2, t3, t4; checksum table t1, t2, t3, t4;
Table Checksum Table Checksum
test.t1 2948697075 test.t1 2948697075
test.t2 1157260244 test.t2 3835700799
test.t3 1157260244 test.t3 3835700799
test.t4 NULL test.t4 NULL
Warnings: Warnings:
Error 1146 Table 'test.t4' doesn't exist Error 1146 Table 'test.t4' doesn't exist
checksum table t1, t2, t3, t4 extended; checksum table t1, t2, t3, t4 extended;
Table Checksum Table Checksum
test.t1 3092701434 test.t1 3092701434
test.t2 1157260244 test.t2 3835700799
test.t3 1157260244 test.t3 3835700799
test.t4 NULL test.t4 NULL
Warnings: Warnings:
Error 1146 Table 'test.t4' doesn't exist Error 1146 Table 'test.t4' doesn't exist
......
...@@ -525,3 +525,15 @@ set @@warning_count=1; ...@@ -525,3 +525,15 @@ set @@warning_count=1;
ERROR HY000: Variable 'warning_count' is a read only variable ERROR HY000: Variable 'warning_count' is a read only variable
set @@global.error_count=1; set @@global.error_count=1;
ERROR HY000: Variable 'error_count' is a read only variable ERROR HY000: Variable 'error_count' is a read only variable
set @@max_heap_table_size= 4294967296;
select @@max_heap_table_size;
@@max_heap_table_size
4294967296
set global max_heap_table_size= 4294967296;
select @@max_heap_table_size;
@@max_heap_table_size
4294967296
set @@max_heap_table_size= 4294967296;
select @@max_heap_table_size;
@@max_heap_table_size
4294967296
...@@ -622,3 +622,14 @@ select column_name, NUMERIC_PRECISION, NUMERIC_SCALE ...@@ -622,3 +622,14 @@ select column_name, NUMERIC_PRECISION, NUMERIC_SCALE
from information_schema.columns from information_schema.columns
where table_name='t1'; where table_name='t1';
drop table t1; drop table t1;
#
# Bug #12127 triggers do not show in info_schema before they are used if set to the database
#
create table t1 (f1 integer);
create trigger tr1 after insert on t1 for each row set @test_var=42;
use information_schema;
select trigger_schema, trigger_name from triggers where
trigger_name='tr1';
use test;
drop table t1;
...@@ -408,3 +408,13 @@ drop table t1; ...@@ -408,3 +408,13 @@ drop table t1;
set @@warning_count=1; set @@warning_count=1;
--error 1238 --error 1238
set @@global.error_count=1; set @@global.error_count=1;
#
# Bug #10351: Setting max_heap_table_size to 4G fails
#
set @@max_heap_table_size= 4294967296;
select @@max_heap_table_size;
set global max_heap_table_size= 4294967296;
select @@max_heap_table_size;
set @@max_heap_table_size= 4294967296;
select @@max_heap_table_size;
...@@ -216,10 +216,10 @@ static handlerton innobase_hton = { ...@@ -216,10 +216,10 @@ static handlerton innobase_hton = {
innobase_xa_recover, /* recover */ innobase_xa_recover, /* recover */
innobase_commit_by_xid, /* commit_by_xid */ innobase_commit_by_xid, /* commit_by_xid */
innobase_rollback_by_xid, /* rollback_by_xid */ innobase_rollback_by_xid, /* rollback_by_xid */
NULL, innobase_create_cursor_view,
NULL, innobase_set_cursor_view,
NULL, innobase_close_cursor_view,
HTON_CLOSE_CURSORS_AT_COMMIT HTON_NO_FLAGS
}; };
/********************************************************************* /*********************************************************************
......
...@@ -143,8 +143,8 @@ my_string ip_to_hostname(struct in_addr *in, uint *errors) ...@@ -143,8 +143,8 @@ my_string ip_to_hostname(struct in_addr *in, uint *errors)
*errors=0; *errors=0;
/* We always treat the loopback address as "localhost". */ /* We always treat the loopback address as "localhost". */
if (in->s_addr == INADDR_LOOPBACK) if (in->s_addr == htonl(INADDR_LOOPBACK)) // is expanded inline by gcc
return (char *)my_localhost; DBUG_RETURN((char *)my_localhost);
/* Check first if we have name in cache */ /* Check first if we have name in cache */
if (!(specialflag & SPECIAL_NO_HOST_CACHE)) if (!(specialflag & SPECIAL_NO_HOST_CACHE))
......
...@@ -1151,6 +1151,7 @@ class Item_uint :public Item_int ...@@ -1151,6 +1151,7 @@ class Item_uint :public Item_int
public: public:
Item_uint(const char *str_arg, uint length); Item_uint(const char *str_arg, uint length);
Item_uint(uint32 i) :Item_int((ulonglong) i, 10) {} Item_uint(uint32 i) :Item_int((ulonglong) i, 10) {}
Item_uint(ulong i) :Item_int((ulonglong) i, 10) {}
Item_uint(const char *str_arg, longlong i, uint length); Item_uint(const char *str_arg, longlong i, uint length);
double val_real() double val_real()
{ DBUG_ASSERT(fixed == 1); return ulonglong2double((ulonglong)value); } { DBUG_ASSERT(fixed == 1); return ulonglong2double((ulonglong)value); }
......
...@@ -5371,7 +5371,7 @@ The minimum value for this variable is 4096.", ...@@ -5371,7 +5371,7 @@ The minimum value for this variable is 4096.",
"Limit assumed max number of seeks when looking up rows based on a key", "Limit assumed max number of seeks when looking up rows based on a key",
(gptr*) &global_system_variables.max_seeks_for_key, (gptr*) &global_system_variables.max_seeks_for_key,
(gptr*) &max_system_variables.max_seeks_for_key, 0, GET_ULONG, (gptr*) &max_system_variables.max_seeks_for_key, 0, GET_ULONG,
REQUIRED_ARG, ~0L, 1, ~0L, 0, 1, 0 }, REQUIRED_ARG, UINT_MAX32, 1, UINT_MAX32, 0, 1, 0 },
{"max_sort_length", OPT_MAX_SORT_LENGTH, {"max_sort_length", OPT_MAX_SORT_LENGTH,
"The number of bytes to use when sorting BLOB or TEXT values (only the first max_sort_length bytes of each value are used; the rest are ignored).", "The number of bytes to use when sorting BLOB or TEXT values (only the first max_sort_length bytes of each value are used; the rest are ignored).",
(gptr*) &global_system_variables.max_sort_length, (gptr*) &global_system_variables.max_sort_length,
......
...@@ -1679,7 +1679,7 @@ Item *sys_var::item(THD *thd, enum_var_type var_type, LEX_STRING *base) ...@@ -1679,7 +1679,7 @@ Item *sys_var::item(THD *thd, enum_var_type var_type, LEX_STRING *base)
pthread_mutex_lock(&LOCK_global_system_variables); pthread_mutex_lock(&LOCK_global_system_variables);
value= *(uint*) value_ptr(thd, var_type, base); value= *(uint*) value_ptr(thd, var_type, base);
pthread_mutex_unlock(&LOCK_global_system_variables); pthread_mutex_unlock(&LOCK_global_system_variables);
return new Item_uint((int32) value); return new Item_uint((uint32) value);
} }
case SHOW_LONG: case SHOW_LONG:
{ {
...@@ -1687,7 +1687,7 @@ Item *sys_var::item(THD *thd, enum_var_type var_type, LEX_STRING *base) ...@@ -1687,7 +1687,7 @@ Item *sys_var::item(THD *thd, enum_var_type var_type, LEX_STRING *base)
pthread_mutex_lock(&LOCK_global_system_variables); pthread_mutex_lock(&LOCK_global_system_variables);
value= *(ulong*) value_ptr(thd, var_type, base); value= *(ulong*) value_ptr(thd, var_type, base);
pthread_mutex_unlock(&LOCK_global_system_variables); pthread_mutex_unlock(&LOCK_global_system_variables);
return new Item_uint((int32) value); return new Item_uint(value);
} }
case SHOW_LONGLONG: case SHOW_LONGLONG:
{ {
......
...@@ -520,6 +520,7 @@ bool Table_triggers_list::check_n_load(THD *thd, const char *db, ...@@ -520,6 +520,7 @@ bool Table_triggers_list::check_n_load(THD *thd, const char *db,
char path_buff[FN_REFLEN]; char path_buff[FN_REFLEN];
LEX_STRING path; LEX_STRING path;
File_parser *parser; File_parser *parser;
LEX_STRING save_db;
DBUG_ENTER("Table_triggers_list::check_n_load"); DBUG_ENTER("Table_triggers_list::check_n_load");
...@@ -580,6 +581,10 @@ bool Table_triggers_list::check_n_load(THD *thd, const char *db, ...@@ -580,6 +581,10 @@ bool Table_triggers_list::check_n_load(THD *thd, const char *db,
thd->lex= &lex; thd->lex= &lex;
save_db.str= thd->db;
save_db.length= thd->db_length;
thd->db_length= strlen(db);
thd->db= (char *) db;
while ((trg_create_str= it++)) while ((trg_create_str= it++))
{ {
lex_start(thd, (uchar*)trg_create_str->str, trg_create_str->length); lex_start(thd, (uchar*)trg_create_str->str, trg_create_str->length);
...@@ -622,6 +627,8 @@ bool Table_triggers_list::check_n_load(THD *thd, const char *db, ...@@ -622,6 +627,8 @@ bool Table_triggers_list::check_n_load(THD *thd, const char *db,
lex_end(&lex); lex_end(&lex);
} }
thd->db= save_db.str;
thd->db_length= save_db.length;
thd->lex= old_lex; thd->lex= old_lex;
DBUG_RETURN(0); DBUG_RETURN(0);
...@@ -630,6 +637,8 @@ err_with_lex_cleanup: ...@@ -630,6 +637,8 @@ err_with_lex_cleanup:
// QQ: anything else ? // QQ: anything else ?
lex_end(&lex); lex_end(&lex);
thd->lex= old_lex; thd->lex= old_lex;
thd->db= save_db.str;
thd->db_length= save_db.length;
DBUG_RETURN(1); DBUG_RETURN(1);
} }
......
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