diff options
author | unknown <bar@bar.mysql.r18.ru> | 2003-07-18 14:03:54 +0500 |
---|---|---|
committer | unknown <bar@bar.mysql.r18.ru> | 2003-07-18 14:03:54 +0500 |
commit | 687863c093f0f01f54770b10fdd40f554e21a6f8 (patch) | |
tree | 5e29655e80bb3c7b7c170462c2e9ceece6dfc18c /sql | |
parent | f4e07b861e886db5893f92238fba20346262c06b (diff) | |
download | mariadb-git-687863c093f0f01f54770b10fdd40f554e21a6f8.tar.gz |
IN now aggregates all argument types for comparison
Diffstat (limited to 'sql')
-rw-r--r-- | sql/item_cmpfunc.cc | 7 | ||||
-rw-r--r-- | sql/item_cmpfunc.h | 1 |
2 files changed, 5 insertions, 3 deletions
diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc index cb7c2cb0198..78ec253c7a2 100644 --- a/sql/item_cmpfunc.cc +++ b/sql/item_cmpfunc.cc @@ -1405,7 +1405,8 @@ void Item_func_in::fix_length_and_dec() Item **arg, **arg_end; uint const_itm= 1; - if ((args[0]->result_type() == STRING_RESULT) && + agg_cmp_type(&cmp_type, args, arg_count); + if ((cmp_type == STRING_RESULT) && (agg_arg_collations_for_comparison(cmp_collation, args, arg_count))) return; @@ -1418,7 +1419,7 @@ void Item_func_in::fix_length_and_dec() */ if (const_itm && !nulls_in_row()) { - switch (args[0]->result_type()) { + switch (cmp_type) { case STRING_RESULT: uint i; array=new in_string(arg_count-1,(qsort2_cmp) srtcmp_in, @@ -1452,7 +1453,7 @@ void Item_func_in::fix_length_and_dec() else { in_item= cmp_item::get_comparator(args[0]); - if (args[0]->result_type() == STRING_RESULT) + if (cmp_type == STRING_RESULT) in_item->cmp_charset= cmp_collation.collation; } maybe_null= args[0]->maybe_null; diff --git a/sql/item_cmpfunc.h b/sql/item_cmpfunc.h index a9fba76a7b8..25cc97d60bf 100644 --- a/sql/item_cmpfunc.h +++ b/sql/item_cmpfunc.h @@ -611,6 +611,7 @@ public: class Item_func_in :public Item_int_func { + Item_result cmp_type; in_vector *array; cmp_item *in_item; bool have_null; |