summaryrefslogtreecommitdiff
path: root/sql/sql_derived.cc
diff options
context:
space:
mode:
authorIgor Babaev <igor@askmonty.org>2012-03-13 13:34:20 -0700
committerIgor Babaev <igor@askmonty.org>2012-03-13 13:34:20 -0700
commitc1f5e25c045538309e9da7aa2d9f0e4bd189977d (patch)
tree35a435eb0554db02c3a8fe5d0895d28a1d06e07b /sql/sql_derived.cc
parent223483aedf0c53bc66cb6833210228b46448003a (diff)
downloadmariadb-git-c1f5e25c045538309e9da7aa2d9f0e4bd189977d.tar.gz
Fixed LP bug #953649.
Do not call, directly or indirectly, SQL_SELECT::test_quick_select() for derived materialized tables / views when optimizing joins referring to these tables / views to get cost estimates of materialization. The current code does not create B-tree indexes for materialized derived tables / views. So now it's not possible to get any estimates for ranges conditions over the results of the materialization. The function mysql_derived_create() must take into account the fact that array of the KEY structures specifying the keys over a derived table / view may be moved after the optimization phase if the derived table / view is materialized.
Diffstat (limited to 'sql/sql_derived.cc')
-rw-r--r--sql/sql_derived.cc1
1 files changed, 1 insertions, 0 deletions
diff --git a/sql/sql_derived.cc b/sql/sql_derived.cc
index 02a26254336..99d20090623 100644
--- a/sql/sql_derived.cc
+++ b/sql/sql_derived.cc
@@ -811,6 +811,7 @@ bool mysql_derived_create(THD *thd, LEX *lex, TABLE_LIST *derived)
select_union *result= (select_union*)unit->result;
if (table->s->db_type() == TMP_ENGINE_HTON)
{
+ result->tmp_table_param.keyinfo= table->s->key_info;
if (create_internal_tmp_table(table, result->tmp_table_param.keyinfo,
result->tmp_table_param.start_recinfo,
&result->tmp_table_param.recinfo,