mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Fix for BUG#16211: Stored function return type for strings is ignored.
Fix for BUG#16676: Database CHARSET not used for stored procedures The problem in BUG#16211 is that CHARSET-clause of the return type for stored functions is just ignored. The problem in BUG#16676 is that if character set is not explicitly specified for sp-variable, the server character set is used instead of the database one. The fix has two parts: - always store CHARSET-clause of the return type along with the type definition in mysql.proc.returns column. "Always" means that CHARSET-clause is appended even if it has not been explicitly specified in CREATE FUNCTION statement (this affects BUG#16211 only). Storing CHARSET-clause if it is not specified is essential to avoid changing character set if the database character set is altered in the future. NOTE: this change is not backward compatible with the previous releases. - use database default character set if CHARSET-clause is not explicitly specified (this affects both BUG#16211 and BUG#16676). NOTE: this also breaks backward compatibility.
This commit is contained in:
@ -193,9 +193,13 @@ public:
|
||||
void
|
||||
init(LEX *lex);
|
||||
|
||||
/* Copy sp name from parser. */
|
||||
void
|
||||
init_sp_name(THD *thd, sp_name *spname);
|
||||
|
||||
// Initialize strings after parsing header
|
||||
void
|
||||
init_strings(THD *thd, LEX *lex, sp_name *name);
|
||||
init_strings(THD *thd, LEX *lex);
|
||||
|
||||
int
|
||||
create(THD *thd);
|
||||
|
Reference in New Issue
Block a user