diff --git a/sql/sql_lex.h b/sql/sql_lex.h index 20b796bb1ba209dbb5059eccf75f059b7416d839..be931c56247e74335876f4c24eef9df2fd36967b 100644 --- a/sql/sql_lex.h +++ b/sql/sql_lex.h @@ -296,7 +296,7 @@ class st_select_lex_unit: public st_select_lex_node { select_result *result; int res; - ulong describe, found_rows_for_union; + ulong found_rows_for_union; bool prepared, // prepare phase already performed for UNION (unit) optimized, // optimize phase already performed for UNION (unit) executed, // already executed diff --git a/sql/sql_union.cc b/sql/sql_union.cc index de2bb4a786c6345745d3b6b1f4137cbf26ae56b9..93541d66d6599c4359cfef3777af74fbf8a4b0ec 100644 --- a/sql/sql_union.cc +++ b/sql/sql_union.cc @@ -377,11 +377,12 @@ int st_select_lex_unit::exec() offset_limit_cnt= global_parameters->offset_limit; select_limit_cnt= global_parameters->select_limit + global_parameters->offset_limit; + if (select_limit_cnt < global_parameters->select_limit) select_limit_cnt= HA_POS_ERROR; // no limit if (select_limit_cnt == HA_POS_ERROR) options&= ~OPTION_FOUND_ROWS; - else if (found_rows_for_union && !describe) + else if (found_rows_for_union && !thd->lex.describe) options|= OPTION_FOUND_ROWS; fake_select_lex->ftfunc_list= &empty_list; fake_select_lex->table_list.link_in_list((byte *)&result_table_list,