diff options
author | Alexey Kopytov <Alexey.Kopytov@Sun.com> | 2010-09-09 18:44:53 +0400 |
---|---|---|
committer | Alexey Kopytov <Alexey.Kopytov@Sun.com> | 2010-09-09 18:44:53 +0400 |
commit | f563a012cebf217f32710b6d07f6b1ea58431146 (patch) | |
tree | bee0d2cdb79142f2218fb9e9bc1ae78c00385d8e | |
parent | df198b5f6af95b56cb6440b18097f03c3b2dde65 (diff) | |
download | mariadb-git-f563a012cebf217f32710b6d07f6b1ea58431146.tar.gz |
Addendum patch for bug #54190.
The patch caused some test failures when merged to 5.5 because,
unlike 5.1, it utilizes Item_cache_row to actually cache row
values. The problem was that Item_cache_row::bring_value()
essentially did nothing. In particular, it did not update its
null_value, so all Item_cache_row objects were always having
their null_values set to TRUE. This went unnoticed previously,
but now when Arg_comparator::compare_row() actually depends on
the row's null_value to evaluate the comparison, the problem
has surfaced.
Fixed by calling the underlying item's bring_value() and
updating null_value in Item_cache_row::bring_value().
Since the problem also exists in 5.1 code (albeit hidden, since
the relevant code is not used anywhere), the addendum patch is
against 5.1.
-rw-r--r-- | sql/item.cc | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/sql/item.cc b/sql/item.cc index 66c5314c16e..29529abe7b9 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -7404,9 +7404,12 @@ bool Item_cache_row::null_inside() void Item_cache_row::bring_value() { + if (!example) + return; + example->bring_value(); + null_value= example->null_value; for (uint i= 0; i < item_count; i++) values[i]->bring_value(); - return; } |