diff options
author | unknown <igor@rurik.mysql.com> | 2005-08-07 14:03:46 -0700 |
---|---|---|
committer | unknown <igor@rurik.mysql.com> | 2005-08-07 14:03:46 -0700 |
commit | 84d34d9d59d5d4c54787b0ceb40e087a130542a9 (patch) | |
tree | 5030101e137e6e0eecee5484131551642bfd4d3e /sql/item_subselect.cc | |
parent | b9e04cf1efa45a717832cd2500502edb4c318858 (diff) | |
download | mariadb-git-84d34d9d59d5d4c54787b0ceb40e087a130542a9.tar.gz |
subselect.result:
Added test case for bug #11867.
Fixed results for two existing test cases.
subselect.test:
Added test case for bug #11867.
item_subselect.cc:
Fixed bug #11867.
Added missing code in Item_in_subselect::row_value_transformer
that caused problems for queries with
ROW(elems) IN (SELECT DISTINCT cols FROM ...).
sql/item_subselect.cc:
Fixed bug #11867.
Added missing code in Item_in_subselect::row_value_transformer
that caused problems for queries with
ROW(elems) IN (SELECT DISTINCT cols FROM ...).
mysql-test/t/subselect.test:
Added test case for bug #11867.
mysql-test/r/subselect.result:
Added test case for bug #11867.
Fixed results for two existing test cases.
Diffstat (limited to 'sql/item_subselect.cc')
-rw-r--r-- | sql/item_subselect.cc | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/sql/item_subselect.cc b/sql/item_subselect.cc index 82954a664c0..6ec8b11d863 100644 --- a/sql/item_subselect.cc +++ b/sql/item_subselect.cc @@ -951,14 +951,19 @@ Item_in_subselect::row_value_transformer(JOIN *join) List_iterator_fast<Item> li(select_lex->item_list); for (uint i= 0; i < n; i++) { + Item *func; DBUG_ASSERT(left_expr->fixed && select_lex->ref_pointer_array[i]->fixed); if (select_lex->ref_pointer_array[i]-> check_cols(left_expr->el(i)->cols())) DBUG_RETURN(RES_ERROR); - Item *func= new Item_ref_null_helper(this, - select_lex->ref_pointer_array+i, - (char *) "<no matter>", - (char *) "<list ref>"); + if (join->having || select_lex->with_sum_func || + select_lex->group_list.elements) + func= new Item_ref_null_helper(this, + select_lex->ref_pointer_array+i, + (char *) "<no matter>", + (char *) "<list ref>"); + else + func= li++; func= eq_creator.create(new Item_direct_ref((*optimizer->get_cache())-> addr(i), |