summaryrefslogtreecommitdiff
path: root/sql/item_row.h
diff options
context:
space:
mode:
authorIgor Babaev <igor@askmonty.org>2017-04-03 15:59:38 -0700
committerIgor Babaev <igor@askmonty.org>2017-04-03 15:59:38 -0700
commit00ab154d49853e20f48a516897e14bf67c58671e (patch)
tree498e967d59076ae3af5e59939f481437b7fe65ac /sql/item_row.h
parentc07bb700c897ee36d97a6c694582c69959bbcaef (diff)
downloadmariadb-git-00ab154d49853e20f48a516897e14bf67c58671e.tar.gz
Fixed bug mdev-10454.
The patch actually fixes the old defect of the optimizer that could not extract keys for range access from IN predicates with row arguments. This problem was resolved in the mysql-5.7 code. The patch supersedes what was done there: - it can build range access when not all components of the first row argument are refer to the columns of the table for which the range access is constructed. - it can use equality predicates to build range access to the table that is not referred to in this argument.
Diffstat (limited to 'sql/item_row.h')
-rw-r--r--sql/item_row.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/sql/item_row.h b/sql/item_row.h
index bbfebb56010..26468336dc8 100644
--- a/sql/item_row.h
+++ b/sql/item_row.h
@@ -119,6 +119,13 @@ public:
bool check_cols(uint c);
bool null_inside() { return with_null; };
void bring_value();
+
+ Item* propagate_equal_fields(THD *thd, const Context &ctx, COND_EQUAL *cond)
+ {
+ Item_args::propagate_equal_fields(thd, Context_identity(), cond);
+ return this;
+ }
+
bool check_vcol_func_processor(void *arg) {return FALSE; }
Item *get_copy(THD *thd, MEM_ROOT *mem_root)
{ return get_item_copy<Item_row>(thd, mem_root, this); }