diff options
author | Igor Babaev <igor@askmonty.org> | 2017-04-03 15:59:38 -0700 |
---|---|---|
committer | Igor Babaev <igor@askmonty.org> | 2017-04-03 15:59:38 -0700 |
commit | 00ab154d49853e20f48a516897e14bf67c58671e (patch) | |
tree | 498e967d59076ae3af5e59939f481437b7fe65ac /sql/item_row.h | |
parent | c07bb700c897ee36d97a6c694582c69959bbcaef (diff) | |
download | mariadb-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.h | 7 |
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); } |