maria-developers team mailing list archive
-
maria-developers team
-
Mailing list archive
-
Message #04459
Re: [Commits] Rev 3276: Fix MySQL BUG#12329653 in file:///home/tsk/mprog/src/5.3/
Hi!
12 нояб. 2011, в 10:24, <timour@xxxxxxxxxxxx> написал(а):
The patch is OK to push after one small change:
> At file:///home/tsk/mprog/src/5.3/
>
> ------------------------------------------------------------
> revno: 3276
> revision-id: timour@xxxxxxxxxxxx-20111112082415-7t6jjzdfg35la7aq
> parent: igor@xxxxxxxxxxxx-20111111225326-k11e0durn6kvivly
> committer: timour@xxxxxxxxxxxx
> branch nick: 5.3
> timestamp: Sat 2011-11-12 10:24:15 +0200
> message:
> Fix MySQL BUG#12329653
>
> In MariaDB, when running in ONLY_FULL_GROUP_BY mode,
> the server produced in incorrect error message that there
> is an aggregate function without GROUP BY, for artificially
> created MIN/MAX functions during subquery MIN/MAX optimization.
>
> The fix introduces a way to distinguish between artifially
> created MIN/MAX functions as a result of a rewrite, and normal
> ones present in the query. The test for ONLY_FULL_GROUP_BY violation
> now tests in addition if a MIN/MAX function was part of a MIN/MAX
> subquery rewrite.
>
> In order to be able to distinguish these MIN/MAX functions, the
> patch introduces an additional flag in Item_in_subselect::in_strategy -
> SUBS_STRATEGY_CHOSEN. This flag is set when the optimizer makes its
> final choice of a subuqery strategy. In order to make the choice
> consistent, access to Item_in_subselect::in_strategy is provided
> via new class methods.
> ******
> Fix MySQL BUG#12329653
>
> In MariaDB, when running in ONLY_FULL_GROUP_BY mode,
> the server produced in incorrect error message that there
> is an aggregate function without GROUP BY, for artificially
> created MIN/MAX functions during subquery MIN/MAX optimization.
>
> The fix introduces a way to distinguish between artifially
> created MIN/MAX functions as a result of a rewrite, and normal
> ones present in the query. The test for ONLY_FULL_GROUP_BY violation
> now tests in addition if a MIN/MAX function was part of a MIN/MAX
> subquery rewrite.
>
> In order to be able to distinguish these MIN/MAX functions, the
> patch introduces an additional flag in Item_in_subselect::in_strategy -
> SUBS_STRATEGY_CHOSEN. This flag is set when the optimizer makes its
> final choice of a subuqery strategy. In order to make the choice
> consistent, access to Item_in_subselect::in_strategy is provided
> via new class methods.
>
[skip]
> @@ -2606,9 +2606,8 @@ bool
> Item_allany_subselect::select_transformer(JOIN *join)
> {
> DBUG_ENTER("Item_allany_subselect::select_transformer");
> - DBUG_ASSERT((in_strategy & ~(SUBS_MAXMIN_INJECTED | SUBS_MAXMIN_ENGINE |
> - SUBS_IN_TO_EXISTS)) == 0);
> - in_strategy|= SUBS_IN_TO_EXISTS;
> +// DBUG_ASSERT((in_strategy & ~(SUBS_MAXMIN_INJECTED | SUBS_MAXMIN_ENGINE |
> +// SUBS_IN_TO_EXISTS)) == 0);
> if (upper_item)
> upper_item->show= 1;
> DBUG_RETURN(select_in_like_transformer(join));
> @@ -2617,7 +2616,7 @@ Item_allany_subselect::select_transforme
Remove the comment, but better change it to:
DBUG_ASSERT((in_strategy & ~(SUBS_MAXMIN_INJECTED | SUBS_MAXMIN_ENGINE |
SUBS_IN_TO_EXISTS | SUBS_STRATEGY_CHOSEN)) == 0);
[skip]