From b87f0704896f5ab172215ce286a31dedc0e3a568 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 19 Oct 2007 15:43:19 +0300 Subject: Bug #31157: crash when select+order by the avg of some field within the group by The uncacheable flag should be set at fix_fields() stage. Fixed by moving the flag setting to match the one in 5.1 mysql-test/r/query_cache.result: Bug #31157: test case mysql-test/t/query_cache.test: Bug #31157: test case sql/item_func.cc: Bug #31157: The uncacheable flag should be set at fix_fields() stage. sql/item_func.h: Bug #31157: The uncacheable flag should be set at fix_fields() stage. --- sql/item_func.cc | 9 ++++++++- sql/item_func.h | 1 + 2 files changed, 9 insertions(+), 1 deletion(-) (limited to 'sql') diff --git a/sql/item_func.cc b/sql/item_func.cc index 057f86ac230..21fd944de76 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -3624,10 +3624,17 @@ longlong Item_func_last_insert_id::val_int() thd->first_successful_insert_id_in_prev_stmt= value; return value; } - thd->lex->uncacheable(UNCACHEABLE_SIDEEFFECT); return thd->read_first_successful_insert_id_in_prev_stmt(); } + +bool Item_func_last_insert_id::fix_fields(THD *thd, Item **ref) +{ + thd->lex->uncacheable(UNCACHEABLE_SIDEEFFECT); + return Item_int_func::fix_fields(thd, ref); +} + + /* This function is just used to test speed of different functions */ longlong Item_func_benchmark::val_int() diff --git a/sql/item_func.h b/sql/item_func.h index c22eb9b9cd9..6a3d230d2f2 100644 --- a/sql/item_func.h +++ b/sql/item_func.h @@ -935,6 +935,7 @@ public: if (arg_count) max_length= args[0]->max_length; } + bool fix_fields(THD *thd, Item **ref); }; -- cgit v1.2.1