summaryrefslogtreecommitdiff
path: root/sql/sql_select.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sql/sql_select.cc')
-rw-r--r--sql/sql_select.cc11
1 files changed, 7 insertions, 4 deletions
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index 32624bb3305..6e888c73f42 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -6435,10 +6435,13 @@ static bool check_equality(Item *item, COND_EQUAL *cond_equal)
{
bool copyfl;
- if (field_item->result_type() == STRING_RESULT &&
- ((Field_str *) field_item->field)->charset() !=
- ((Item_cond *) item)->compare_collation())
- return FALSE;
+ if (field_item->result_type() == STRING_RESULT)
+ {
+ CHARSET_INFO *cs= ((Field_str*) field_item->field)->charset();
+ if ((cs != ((Item_cond *) item)->compare_collation()) ||
+ !cs->coll->propagate(cs, 0, 0))
+ return FALSE;
+ }
Item_equal *item_equal = find_item_equal(cond_equal,
field_item->field, &copyfl);