summaryrefslogtreecommitdiff
path: root/sql/sql_select.cc
diff options
context:
space:
mode:
authorGalina Shalygina <galina.shalygina@mariadb.com>2019-09-25 20:57:09 +0300
committerGalina Shalygina <galina.shalygina@mariadb.com>2019-09-25 20:57:09 +0300
commit6d3f297feb195830cd6234f6c1cdb0e65a9f0231 (patch)
treebe1774b00ba85a0def02e9c430bda797969c3bd1 /sql/sql_select.cc
parent8887effe13ad87ba0460d4d3068fb5696f089bb0 (diff)
downloadmariadb-git-10.5-MDEV-11107.tar.gz
MDEV-11107 Use table check constraints in optimizer10.5-MDEV-11107
Project code on 10.5 branch
Diffstat (limited to 'sql/sql_select.cc')
-rw-r--r--sql/sql_select.cc9
1 files changed, 9 insertions, 0 deletions
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index 4724f3a7e72..9ab6a5f15e7 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -68,6 +68,7 @@
#include "select_handler.h"
#include "my_json_writer.h"
#include "opt_trace.h"
+#include "opt_cmpfunc.cc"
/*
A key part number that means we're using a fulltext scan.
@@ -1945,6 +1946,9 @@ JOIN::optimize_inner()
}
}
+ if (add_constraints(this, &conds))
+ DBUG_RETURN(1);
+
conds= optimize_cond(this, conds, join_list, FALSE,
&cond_value, &cond_equal, OPT_LINK_EQUAL_FIELDS);
@@ -5246,6 +5250,11 @@ make_join_statistics(JOIN *join, List<TABLE_LIST> &tables_list,
conds->update_used_tables();
conds= conds->remove_eq_conds(join->thd, &join->cond_value, true);
+ if (conds)
+ {
+ int prec_increment= thd->variables.div_precincrement;
+ conds= infer_inequalities(join, &conds, &join->cond_value, prec_increment);
+ }
if (conds && conds->type() == Item::COND_ITEM &&
((Item_cond*) conds)->functype() == Item_func::COND_AND_FUNC)
join->cond_equal= &((Item_cond_and*) conds)->m_cond_equal;