From: Date: February 20 2006 10:17pm Subject: bk commit into 5.1 tree (sergefp:1.2147) BUG#15448 List-Archive: http://lists.mysql.com/commits/2935 X-Bug: 15448 Message-Id: <20060220211750.C230B262DDE@mysql.com> Below is the list of changes that have just been committed into a local 5.1 repository of psergey. When psergey does a push these changes will be propagated to the main repository and, within 24 hours after the push, to the public repository. For information on how to access the public repository see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html ChangeSet 1.2147 06/02/21 00:17:29 sergefp@stripped +1 -0 BUG#15448 (group_min_max test failure): Don't bypass group-min-max optimizer entry point if we've got a tree of type ALWAYS or MAYBE. sql/opt_range.cc 1.202 06/02/21 00:17:17 sergefp@stripped +6 -3 BUG#15448 (group_min_max test failure): Don't buypass group-min-max optimizer entry point if we've got a tree of type ALWAYS or MAYBE. The effect observed by this bug has been introduced by this cset: ChangeSet 1.1967.5.2 2005/12/26 08:40:09 sergefp@stripped. The cset introduced PARAM::remove_jump_scans which purpose was to avoid making [always unsuccessful] attempts to construct index_merge for construct index_merge for conditions like "t.key1partX=c1 OR t.key1partY=c2". The effect of this change was that some queries that previously had produced a SEL_TREE representing candidate for index_merge(X,Y) now started to produce SEL_TREE with type=ALWAYS, and group-min-max analysis for these trees has been bypassed. In this fix we make SEL_TREE with type=ALWAYS to be processed in the same way as (SEL_TREE*)NULL, its equivalent. # This is a BitKeeper patch. What follows are the unified diffs for the # set of deltas contained in the patch. The rest of the patch, the part # that BitKeeper cares about, is below these diffs. # User: sergefp # Host: pslp.mylan # Root: /home/psergey/mysql-5.1-look --- 1.201/sql/opt_range.cc 2006-02-15 02:01:27 +03:00 +++ 1.202/sql/opt_range.cc 2006-02-21 00:17:17 +03:00 @@ -1951,9 +1951,12 @@ read_time= (double) HA_POS_ERROR; goto free_mem; } - if (tree->type != SEL_TREE::KEY && - tree->type != SEL_TREE::KEY_SMALLER) - goto free_mem; + /* + If the tree can't be used for range scans, proceed anyway, as we + can construct a group-min-max quick select + */ + if (tree->type != SEL_TREE::KEY && tree->type != SEL_TREE::KEY_SMALLER) + tree= NULL; } }