Commit f563a012 authored by Alexey Kopytov's avatar Alexey Kopytov

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.
parent df198b5f
...@@ -7404,9 +7404,12 @@ bool Item_cache_row::null_inside() ...@@ -7404,9 +7404,12 @@ bool Item_cache_row::null_inside()
void Item_cache_row::bring_value() 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++) for (uint i= 0; i < item_count; i++)
values[i]->bring_value(); values[i]->bring_value();
return;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment