summaryrefslogtreecommitdiff
path: root/sql/item.h
diff options
context:
space:
mode:
authorSergey Glukhov <Sergey.Glukhov@sun.com>2009-02-19 17:20:44 +0400
committerSergey Glukhov <Sergey.Glukhov@sun.com>2009-02-19 17:20:44 +0400
commitc2e23208ef7ae6b315ca4988e903bff2bc0284d4 (patch)
tree8d8120d61f551e8a1f07b2653737f3d6d001949c /sql/item.h
parent0c96241b156ef044e8d73a31e98918a721597126 (diff)
downloadmariadb-git-c2e23208ef7ae6b315ca4988e903bff2bc0284d4.tar.gz
Bug#37601 Cast Is Not Done On Row Comparison
In case of ROW item each compared pair does not check if argumet collations can be aggregated and thus appropiriate item conversion does not happen. The fix is to add the check and convertion for ROW pairs. mysql-test/r/row.result: test result mysql-test/t/row.test: test case sql/item.cc: added agg_item_set_converter() function which was a part of agg_item_charsets() func. The only difference is that agg_item_set_converter() checks and converts items using already known collation. sql/item.h: added agg_item_set_converter() function sql/item_cmpfunc.cc: In case of ROW item each compared pair does not check if argumet collations can be aggregated and thus appropiriate item conversion does not happen. The fix is to add the check and convertion for ROW pairs.
Diffstat (limited to 'sql/item.h')
-rw-r--r--sql/item.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/sql/item.h b/sql/item.h
index 1058cc5dbb8..852b0fcc1ba 100644
--- a/sql/item.h
+++ b/sql/item.h
@@ -1169,6 +1169,8 @@ bool agg_item_collations(DTCollation &c, const char *name,
Item **items, uint nitems, uint flags, int item_sep);
bool agg_item_collations_for_comparison(DTCollation &c, const char *name,
Item **items, uint nitems, uint flags);
+bool agg_item_set_converter(DTCollation &coll, const char *fname,
+ Item **args, uint nargs, uint flags, int item_sep);
bool agg_item_charsets(DTCollation &c, const char *name,
Item **items, uint nitems, uint flags, int item_sep);