Commit bbe80645 authored by unknown's avatar unknown

Merge bk-internal:/home/bk/mysql-4.1

into  mysql.com:/home/jimw/my/mysql-4.1-clean

parents e81337d8 085653b9
...@@ -3141,10 +3141,10 @@ static void run_query_display_metadata(MYSQL_FIELD *field, uint num_fields, ...@@ -3141,10 +3141,10 @@ static void run_query_display_metadata(MYSQL_FIELD *field, uint num_fields,
int10_to_str((int) field->type, buff, 10); int10_to_str((int) field->type, buff, 10);
dynstr_append(ds, buff); dynstr_append(ds, buff);
dynstr_append_mem(ds, "\t", 1); dynstr_append_mem(ds, "\t", 1);
int10_to_str((int) field->length, buff, 10); longlong10_to_str((unsigned int) field->length, buff, 10);
dynstr_append(ds, buff); dynstr_append(ds, buff);
dynstr_append_mem(ds, "\t", 1); dynstr_append_mem(ds, "\t", 1);
int10_to_str((int) field->max_length, buff, 10); longlong10_to_str((unsigned int) field->max_length, buff, 10);
dynstr_append(ds, buff); dynstr_append(ds, buff);
dynstr_append_mem(ds, "\t", 1); dynstr_append_mem(ds, "\t", 1);
dynstr_append_mem(ds, (char*) (IS_NOT_NULL(field->flags) ? dynstr_append_mem(ds, (char*) (IS_NOT_NULL(field->flags) ?
......
...@@ -45,6 +45,13 @@ select * from mysql.time_zone_name; ...@@ -45,6 +45,13 @@ select * from mysql.time_zone_name;
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table 'time_zone_name' ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table 'time_zone_name'
select Name, convert_tz('2004-11-30 12:00:00', Name, 'UTC') from mysql.time_zone_name; select Name, convert_tz('2004-11-30 12:00:00', Name, 'UTC') from mysql.time_zone_name;
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table 'time_zone_name' ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table 'time_zone_name'
drop table t1, t2;
create table t1 (a int, b datetime);
create table t2 (a int, b varchar(40));
update t1 set b = '2005-01-01 10:00';
update t1 set b = convert_tz(b, 'UTC', 'UTC');
update t1 join t2 on (t1.a = t2.a) set t1.b = '2005-01-01 10:00' where t2.b = 'foo';
update t1 join t2 on (t1.a = t2.a) set t1.b = convert_tz('2005-01-01 10:00','UTC','UTC') where t2.b = 'foo';
delete from mysql.user where user like 'mysqltest\_%'; delete from mysql.user where user like 'mysqltest\_%';
delete from mysql.db where user like 'mysqltest\_%'; delete from mysql.db where user like 'mysqltest\_%';
delete from mysql.tables_priv where user like 'mysqltest\_%'; delete from mysql.tables_priv where user like 'mysqltest\_%';
......
...@@ -61,6 +61,18 @@ select * from mysql.time_zone_name; ...@@ -61,6 +61,18 @@ select * from mysql.time_zone_name;
--error 1142 --error 1142
select Name, convert_tz('2004-11-30 12:00:00', Name, 'UTC') from mysql.time_zone_name; select Name, convert_tz('2004-11-30 12:00:00', Name, 'UTC') from mysql.time_zone_name;
#
# Bug #9979: Use of CONVERT_TZ in multiple-table UPDATE causes bogus
# privilege error
#
drop table t1, t2;
create table t1 (a int, b datetime);
create table t2 (a int, b varchar(40));
update t1 set b = '2005-01-01 10:00';
update t1 set b = convert_tz(b, 'UTC', 'UTC');
update t1 join t2 on (t1.a = t2.a) set t1.b = '2005-01-01 10:00' where t2.b = 'foo';
update t1 join t2 on (t1.a = t2.a) set t1.b = convert_tz('2005-01-01 10:00','UTC','UTC') where t2.b = 'foo';
# Clean-up # Clean-up
connection default; connection default;
delete from mysql.user where user like 'mysqltest\_%'; delete from mysql.user where user like 'mysqltest\_%';
......
...@@ -1940,7 +1940,8 @@ mysql_execute_command(THD *thd) ...@@ -1940,7 +1940,8 @@ mysql_execute_command(THD *thd)
that is not a SHOW command or a select that only access local that is not a SHOW command or a select that only access local
variables, but for now this is probably good enough. variables, but for now this is probably good enough.
*/ */
if (tables || &lex->select_lex != lex->all_selects_list) if (tables || &lex->select_lex != lex->all_selects_list ||
lex->time_zone_tables_used)
mysql_reset_errors(thd); mysql_reset_errors(thd);
/* /*
...@@ -5413,7 +5414,7 @@ int multi_update_precheck(THD *thd, TABLE_LIST *tables) ...@@ -5413,7 +5414,7 @@ int multi_update_precheck(THD *thd, TABLE_LIST *tables)
/* /*
Is there tables of subqueries? Is there tables of subqueries?
*/ */
if (&lex->select_lex != lex->all_selects_list) if (&lex->select_lex != lex->all_selects_list || lex->time_zone_tables_used)
{ {
DBUG_PRINT("info",("Checking sub query list")); DBUG_PRINT("info",("Checking sub query list"));
for (table= tables; table; table= table->next) for (table= tables; table; table= table->next)
......
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