1
0
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:
anozdrin/alik@booka.
2006-07-27 17:57:43 +04:00
parent 7b34bbc43c
commit b7f403b546
11 changed files with 472 additions and 69 deletions

View File

@ -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);