Hi! 12 нояб. 2011, в 10:24, <[email protected]> написал(а):
The patch is OK to push after one small change: > At file:///home/tsk/mprog/src/5.3/ > > ------------------------------------------------------------ > revno: 3276 > revision-id: [email protected] > parent: [email protected] > committer: [email protected] > 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] _______________________________________________ Mailing list: https://launchpad.net/~maria-developers Post to : [email protected] Unsubscribe : https://launchpad.net/~maria-developers More help : https://help.launchpad.net/ListHelp

