mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
5.3 merge
This commit is contained in:
@ -578,6 +578,14 @@ public:
|
||||
increment_use_count(1);
|
||||
use_count++;
|
||||
}
|
||||
void incr_refs_all()
|
||||
{
|
||||
for (SEL_ARG *pos=first(); pos ; pos=pos->next)
|
||||
{
|
||||
pos->increment_use_count(1);
|
||||
}
|
||||
use_count++;
|
||||
}
|
||||
void free_tree()
|
||||
{
|
||||
for (SEL_ARG *pos=first(); pos ; pos=pos->next)
|
||||
@ -1117,9 +1125,11 @@ int SEL_IMERGE::and_sel_tree(RANGE_OPT_PARAM *param, SEL_TREE *tree,
|
||||
for (SEL_TREE** or_tree= trees; or_tree != trees_next; or_tree++)
|
||||
{
|
||||
SEL_TREE *res_or_tree= 0;
|
||||
if (!(res_or_tree= new SEL_TREE()))
|
||||
SEL_TREE *and_tree= 0;
|
||||
if (!(res_or_tree= new SEL_TREE()) ||
|
||||
!(and_tree= new SEL_TREE(tree, TRUE, param)))
|
||||
return (-1);
|
||||
if (!and_range_trees(param, *or_tree, tree, res_or_tree))
|
||||
if (!and_range_trees(param, *or_tree, and_tree, res_or_tree))
|
||||
{
|
||||
if (new_imerge->or_sel_tree(param, res_or_tree))
|
||||
return (-1);
|
||||
@ -1332,7 +1342,7 @@ SEL_TREE::SEL_TREE(SEL_TREE *arg, bool without_merges,
|
||||
for (uint idx= 0; idx < param->keys; idx++)
|
||||
{
|
||||
if ((keys[idx]= arg->keys[idx]))
|
||||
keys[idx]->incr_refs();
|
||||
keys[idx]->incr_refs_all();
|
||||
}
|
||||
|
||||
if (without_merges)
|
||||
|
Reference in New Issue
Block a user