Description:
Different character set settings cause SHOW CREATE PROCEDURE/FUNCTION to display
non-ascii characters incorrectly, sometimes as just a question mark.
Some parts are shown differently, i.e. the name, the CREATE PROCEDURE ..., and the body.
Switching between different charcter sets sometimes cause syntax errors when attempting
to read routines from the database.
Note: This seems to be mostly a problem with latin1, and when switching between character
sets. Just sticking to one character set (preferably utf8) causes no problems.
How to repeat:
This tests some combinations using latin1 and utf8. It's possible that similar discrepancies
can be found using other combinations.
et character set latin1;
drop table if exists räkor;
create table räkor ( typ char(10), antal int );
drop procedure if exists räkna_räkor;
delimiter //;
create procedure räkna_räkor()
begin
declare alla_räkor int default 0;
fånig:
begin
declare n int;
select count(*) from räkor where typ = 'stora';
set alla_räkor = alla_räkor + n;
select count(*) from räkor where typ = 'små';
set alla_räkor = alla_räkor + n;
end fånig;
select alla_räkor;
end//
delimiter ;//
select 'show latin1-latin1';
show create table räkor;
show create procedure räkna_räkor;
set character set utf8;
select 'show latin1-utf8';
show create table räkor;
show create procedure räkna_räkor;
drop table if exists räkor;
create table räkor ( typ char(10), antal int );
drop procedure if exists räkna_räkor;
delimiter //;
create procedure räkna_räkor()
begin
declare alla_räkor int default 0;
fånig:
begin
declare n int;
select count(*) from räkor where typ = 'stora';
set alla_räkor = alla_räkor + n;
select count(*) from räkor where typ = 'små';
set alla_räkor = alla_räkor + n;
end fånig;
select alla_räkor;
end//
delimiter ;//
select 'utf8-utf8';
show create table räkor;
show create procedure räkna_räkor;
set character set latin1;
select 'utf8-latin1';
show create table räkor;
show create procedure räkna_räkor;
drop table räkor;
drop procedure räkna_räkor;