MDEV-13149 -- show function status now works with PAD_CHAR_TO_FULL_LENGTH

This commit is contained in:
Vesa Pentti 2017-10-08 22:15:00 +03:00
parent c2509a1588
commit 93aadda513
3 changed files with 52 additions and 0 deletions

View File

@ -0,0 +1,24 @@
create function f() returns int return 1;
show function status;
Db Name Type Definer Modified Created Security_type Comment character_set_client collation_connection Database Collation
T f T T T T T T T T T
set sql_mode = 'PAD_CHAR_TO_FULL_LENGTH';
show function status;
Db Name Type Definer Modified Created Security_type Comment character_set_client collation_connection Database Collation
T f T T T T T T T T T
drop function f;
select @@sql_mode;
@@sql_mode
PAD_CHAR_TO_FULL_LENGTH
create function f() returns int return 1;
select ROUTINE_NAME from information_schema.ROUTINES where ROUTINE_NAME='f';
ROUTINE_NAME
f
set sql_mode = 'PAD_CHAR_TO_FULL_LENGTH';
select ROUTINE_NAME from information_schema.ROUTINES where ROUTINE_NAME='f';
ROUTINE_NAME
f
drop function f;
select @@sql_mode;
@@sql_mode
PAD_CHAR_TO_FULL_LENGTH

View File

@ -0,0 +1,23 @@
#
# Test that show function status succeeds with
# sql_mode = 'PAD_CHAR_TO_FULL_LENGTH (MDEV-13149)
# show function status
create function f() returns int return 1;
--replace_column 1 T 3 T 4 T 5 T 6 T 7 T 8 T 9 T 10 T 11 T
show function status;
set sql_mode = 'PAD_CHAR_TO_FULL_LENGTH';
--replace_column 1 T 3 T 4 T 5 T 6 T 7 T 8 T 9 T 10 T 11 T
show function status;
drop function f;
select @@sql_mode;
# select ROUTINE_NAME from information_schema.ROUTINES
create function f() returns int return 1;
select ROUTINE_NAME from information_schema.ROUTINES where ROUTINE_NAME='f';
set sql_mode = 'PAD_CHAR_TO_FULL_LENGTH';
select ROUTINE_NAME from information_schema.ROUTINES where ROUTINE_NAME='f';
drop function f;
select @@sql_mode;

View File

@ -5716,6 +5716,10 @@ int fill_schema_proc(THD *thd, TABLE_LIST *tables, COND *cond)
DBUG_RETURN(1);
}
/* Disable padding temporarily so it doesn't break the query */
ulonglong sql_mode_was = thd->variables.sql_mode;
thd->variables.sql_mode &= ~MODE_PAD_CHAR_TO_FULL_LENGTH;
if (proc_table->file->ha_index_init(0, 1))
{
res= 1;
@ -5751,6 +5755,7 @@ err:
(void) proc_table->file->ha_index_end();
close_system_tables(thd, &open_tables_state_backup);
thd->variables.sql_mode = sql_mode_was;
DBUG_RETURN(res);
}