diff options
author | Igor Babaev <igor@askmonty.org> | 2013-12-14 19:13:37 -0800 |
---|---|---|
committer | Igor Babaev <igor@askmonty.org> | 2013-12-14 19:13:37 -0800 |
commit | 8efaff4959efe32ff9bc47c1bf1710cfe9ab21b5 (patch) | |
tree | 1271d94adfb6460c54ceb88d34e023516343f907 | |
parent | 4bce09c104f5c9ddc3600a77c9db44dfa7fd283c (diff) | |
download | mariadb-git-8efaff4959efe32ff9bc47c1bf1710cfe9ab21b5.tar.gz |
Fixed bug mdev-5415.
Do not calculate selectivity of conditions for the tables of the information schema.
-rw-r--r-- | mysql-test/r/selectivity.result | 8 | ||||
-rw-r--r-- | mysql-test/r/selectivity_innodb.result | 8 | ||||
-rw-r--r-- | mysql-test/t/selectivity.test | 11 | ||||
-rw-r--r-- | sql/opt_range.cc | 3 |
4 files changed, 30 insertions, 0 deletions
diff --git a/mysql-test/r/selectivity.result b/mysql-test/r/selectivity.result index e213bc30778..3059431c2e5 100644 --- a/mysql-test/r/selectivity.result +++ b/mysql-test/r/selectivity.result @@ -1158,3 +1158,11 @@ Note 1003 select `test`.`t1`.`i1` AS `i1` from `test`.`t1` semi join (`test`.`t2 set optimizer_use_condition_selectivity=@save_optimizer_use_condition_selectivity; DROP TABLE t1,t2,t3; set use_stat_tables=@save_use_stat_tables; +# +# Bug mdev-5415: query over an information schema table +# when optimizer_use_condition_selectivity=3 +# +set optimizer_use_condition_selectivity = 3; +SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE SQL_MODE != ''; +TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +set optimizer_use_condition_selectivity=@save_optimizer_use_condition_selectivity; diff --git a/mysql-test/r/selectivity_innodb.result b/mysql-test/r/selectivity_innodb.result index 1dbd9b56079..f4485cb0f73 100644 --- a/mysql-test/r/selectivity_innodb.result +++ b/mysql-test/r/selectivity_innodb.result @@ -1166,5 +1166,13 @@ Note 1003 select `test`.`t1`.`i1` AS `i1` from `test`.`t1` semi join (`test`.`t2 set optimizer_use_condition_selectivity=@save_optimizer_use_condition_selectivity; DROP TABLE t1,t2,t3; set use_stat_tables=@save_use_stat_tables; +# +# Bug mdev-5415: query over an information schema table +# when optimizer_use_condition_selectivity=3 +# +set optimizer_use_condition_selectivity = 3; +SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE SQL_MODE != ''; +TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +set optimizer_use_condition_selectivity=@save_optimizer_use_condition_selectivity; set optimizer_switch=@save_optimizer_switch_for_selectivity_test; SET SESSION STORAGE_ENGINE=DEFAULT; diff --git a/mysql-test/t/selectivity.test b/mysql-test/t/selectivity.test index 2b44d5157df..82baf7cf1af 100644 --- a/mysql-test/t/selectivity.test +++ b/mysql-test/t/selectivity.test @@ -739,3 +739,14 @@ DROP TABLE t1,t2,t3; set use_stat_tables=@save_use_stat_tables; +--echo # +--echo # Bug mdev-5415: query over an information schema table +--echo # when optimizer_use_condition_selectivity=3 +--echo # + +set optimizer_use_condition_selectivity = 3; + +SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE SQL_MODE != ''; + +set optimizer_use_condition_selectivity=@save_optimizer_use_condition_selectivity; + diff --git a/sql/opt_range.cc b/sql/opt_range.cc index d90c8e88704..371d3958e7b 100644 --- a/sql/opt_range.cc +++ b/sql/opt_range.cc @@ -3410,6 +3410,9 @@ bool calculate_cond_selectivity_for_table(THD *thd, TABLE *table, Item *cond) if (table_records == 0) DBUG_RETURN(FALSE); + + if (table->pos_in_table_list->schema_table) + DBUG_RETURN(FALSE); if (thd->variables.optimizer_use_condition_selectivity > 2 && !bitmap_is_clear_all(used_fields)) |