summaryrefslogtreecommitdiff
path: root/sql/mysql_priv.h
diff options
context:
space:
mode:
authorunknown <bar@mysql.com/bar.intranet.mysql.r18.ru>2006-11-09 14:41:34 +0400
committerunknown <bar@mysql.com/bar.intranet.mysql.r18.ru>2006-11-09 14:41:34 +0400
commit7614eb0d1db4819ec6f1c3c59196d1dcb0d0c8d5 (patch)
tree4128d47fe2a8d79671addfc8d18cbde6885ce7cd /sql/mysql_priv.h
parenta39b8a064ed1cd200e34be4ee0af078da7b2412c (diff)
downloadmariadb-git-7614eb0d1db4819ec6f1c3c59196d1dcb0d0c8d5.tar.gz
Bug#21505 Create view - illegal mix of collation for operation 'UNION'
The problem was that any VIEW columns had always implicit derivation. Fix: derivation is now copied from the original expression given in VIEW definition. For example: - a VIEW column which comes from a string constant in CREATE VIEW definition have now coercible derivation. - a VIEW column having COLLATE clause in CREATE VIEW definition have now explicit derivation. mysql-test/r/ctype_utf8.result: Adding test case mysql-test/t/ctype_utf8.test: Adding test case sql/field.cc: Copying derivation from item to field. sql/field.h: Adding derivation and methods to get/set it into Field. sql/item.cc: Copying derivation from field to item. sql/item.h: Moving "enum Derivation" declaration from item.h to mysql_priv.h sql/mysql_priv.h: Moving "enum Derivation" declaration from item.h to mysql_priv.h sql/sql_select.cc: Copying derivation from item to field in create_tmp_field_from_item() and create_tmp_field().
Diffstat (limited to 'sql/mysql_priv.h')
-rw-r--r--sql/mysql_priv.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h
index 165bedb3659..683f111e4f3 100644
--- a/sql/mysql_priv.h
+++ b/sql/mysql_priv.h
@@ -96,6 +96,17 @@ extern CHARSET_INFO *system_charset_info, *files_charset_info ;
extern CHARSET_INFO *national_charset_info, *table_alias_charset;
+enum Derivation
+{
+ DERIVATION_IGNORABLE= 5,
+ DERIVATION_COERCIBLE= 4,
+ DERIVATION_SYSCONST= 3,
+ DERIVATION_IMPLICIT= 2,
+ DERIVATION_NONE= 1,
+ DERIVATION_EXPLICIT= 0
+};
+
+
typedef struct my_locale_st
{
const char *name;