diff options
author | Alexander Barkov <bar@mysql.com> | 2009-11-09 15:17:10 +0400 |
---|---|---|
committer | Alexander Barkov <bar@mysql.com> | 2009-11-09 15:17:10 +0400 |
commit | f3d89b2a18063e07e3d4190c3340ac91dda933b0 (patch) | |
tree | 4a2eb4cf82a6c520c33daafa66dc555bdcf41eed /sql/mysql_priv.h | |
parent | 3735ccba0b36a0e35ca2bc10d7b2e3d447760af6 (diff) | |
download | mariadb-git-f3d89b2a18063e07e3d4190c3340ac91dda933b0.tar.gz |
#
# Bug#24690 Stored functions: RETURNing UTF8 strings
# do not return UTF8_UNICODE_CI collation
#
# Bug#17903: cast to char results in binary
# Regression. The character set was not being properly initialized
# for CAST() with a type like CHAR(2) BINARY, which resulted in
# incorrect results or even a server crash.
#
Backporting from mysql-6.0-codebase.
mysql-test/r/sp-ucs2.result:
mysql-test/t/sp-ucs2.test:
Adding tests
sql/mysql_priv.h:
Adding prototype
sql/sp.cc
Remember COLLATE clause for non-default collations
sql/sql_parse.cc
Adding a new helper function
sql/sql_yacc.yy
- Allow "CHARACTER SET cs COLLATE cl" in
SP parameters, RETURNS, DECLARE
- Minor reorganization for "ASCII" and "UNICODE"
related rules, to make the code more readable,
also to allow these aliases:
* "VARCHAR(10) ASCII BINARY" -> CHARACTER SET latin1 COLLATE latin1_bin
* "VARCHAR(10) BINARY ASCII" -> CHARACTER SET latin1 COLLATE latin1_bin
* "VARCHAR(10) UNICODE BINARY" -> CHARACTER SET ucs2 COLLATE ucs2_bin
* "VARCHAR(10) BINARY UNICODE" -> CHARACTER SET ucs2 COLLATE ucs2_bin
Previously these four aliases returned the error
"This version of MySQL does not yet support return value collation".
Note:
This patch allows "VARCHAR(10) CHARACTER SET cs COLLATE cl"
and the above four aliases.
"VARCHAR(10) COLLATE cl" is still not allowed
i.e. when COLLATE is given without CHARACTER SET.
If we want to support this, we need an architecture decision
which character set to use by default.
Diffstat (limited to 'sql/mysql_priv.h')
-rw-r--r-- | sql/mysql_priv.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index 7413c18fdd8..b95e5e50f5a 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -858,6 +858,8 @@ bool check_string_char_length(LEX_STRING *str, const char *err_msg, bool no_error); bool check_host_name(LEX_STRING *str); +CHARSET_INFO *merge_charset_and_collation(CHARSET_INFO *cs, CHARSET_INFO *cl); + bool parse_sql(THD *thd, Parser_state *parser_state, Object_creation_ctx *creation_ctx); |