summaryrefslogtreecommitdiff
path: root/mysql-test
diff options
context:
space:
mode:
authorVarun Gupta <varun.gupta@mariadb.com>2019-05-01 01:44:45 +0530
committerVarun Gupta <varun.gupta@mariadb.com>2019-05-02 01:02:56 +0530
commitca94ce2a5817cec6d402b6c92653330825e0a2bf (patch)
treec056d8bd685cdad2989b6b58afb46d337afa4a01 /mysql-test
parent57c37e6c3ffc69c9a682601bd0c2e286b4743876 (diff)
downloadmariadb-git-ca94ce2a5817cec6d402b6c92653330825e0a2bf.tar.gz
MDEV-19352: Server crash in alloc_histograms_for_table_share upon query from information schema
To read histograms for a table, we should check if the allocation of statistics was done or not, if not done we should not try to read histograms for such a table.
Diffstat (limited to 'mysql-test')
-rw-r--r--mysql-test/r/stat_tables.result18
-rw-r--r--mysql-test/r/stat_tables_innodb.result18
-rw-r--r--mysql-test/t/stat_tables.test21
3 files changed, 57 insertions, 0 deletions
diff --git a/mysql-test/r/stat_tables.result b/mysql-test/r/stat_tables.result
index bd3e9ed7a40..0a53a5ae99d 100644
--- a/mysql-test/r/stat_tables.result
+++ b/mysql-test/r/stat_tables.result
@@ -692,5 +692,23 @@ DROP DATABASE dbt3_s001;
delete from mysql.table_stats;
delete from mysql.column_stats;
delete from mysql.index_stats;
+#
+# MDEV-19352: Server crash in alloc_histograms_for_table_share upon query from information schema
+#
+use test;
+set @save_optimizer_use_condition_selectivity= @@optimizer_use_condition_selectivity;
+set @@optimizer_use_condition_selectivity= 4;
+set use_stat_tables='preferably';
+CREATE TABLE t1 (a INT);
+CREATE TABLE t2 (b INT);
+CREATE VIEW v AS SELECT * FROM t1 JOIN t2;
+INSERT INTO t2 SELECT * FROM x;
+ERROR 42S02: Table 'test.x' doesn't exist
+select * from information_schema.tables where table_name='v';
+TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE ENGINE VERSION ROW_FORMAT TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE AUTO_INCREMENT CREATE_TIME UPDATE_TIME CHECK_TIME TABLE_COLLATION CHECKSUM CREATE_OPTIONS TABLE_COMMENT
+def test v VIEW NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL VIEW
+drop table t1,t2;
+drop view v;
+set @@optimizer_use_condition_selectivity= @save_optimizer_use_condition_selectivity;
set @save_optimizer_switch=@@optimizer_switch;
set use_stat_tables=@save_use_stat_tables;
diff --git a/mysql-test/r/stat_tables_innodb.result b/mysql-test/r/stat_tables_innodb.result
index 579d19462e7..9a93b479664 100644
--- a/mysql-test/r/stat_tables_innodb.result
+++ b/mysql-test/r/stat_tables_innodb.result
@@ -719,6 +719,24 @@ DROP DATABASE dbt3_s001;
delete from mysql.table_stats;
delete from mysql.column_stats;
delete from mysql.index_stats;
+#
+# MDEV-19352: Server crash in alloc_histograms_for_table_share upon query from information schema
+#
+use test;
+set @save_optimizer_use_condition_selectivity= @@optimizer_use_condition_selectivity;
+set @@optimizer_use_condition_selectivity= 4;
+set use_stat_tables='preferably';
+CREATE TABLE t1 (a INT);
+CREATE TABLE t2 (b INT);
+CREATE VIEW v AS SELECT * FROM t1 JOIN t2;
+INSERT INTO t2 SELECT * FROM x;
+ERROR 42S02: Table 'test.x' doesn't exist
+select * from information_schema.tables where table_name='v';
+TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE ENGINE VERSION ROW_FORMAT TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE AUTO_INCREMENT CREATE_TIME UPDATE_TIME CHECK_TIME TABLE_COLLATION CHECKSUM CREATE_OPTIONS TABLE_COMMENT
+def test v VIEW NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL VIEW
+drop table t1,t2;
+drop view v;
+set @@optimizer_use_condition_selectivity= @save_optimizer_use_condition_selectivity;
set @save_optimizer_switch=@@optimizer_switch;
set use_stat_tables=@save_use_stat_tables;
set optimizer_switch=@save_optimizer_switch_for_stat_tables_test;
diff --git a/mysql-test/t/stat_tables.test b/mysql-test/t/stat_tables.test
index 97f9f08569f..2727f8d8bb1 100644
--- a/mysql-test/t/stat_tables.test
+++ b/mysql-test/t/stat_tables.test
@@ -453,6 +453,27 @@ delete from mysql.table_stats;
delete from mysql.column_stats;
delete from mysql.index_stats;
+--echo #
+--echo # MDEV-19352: Server crash in alloc_histograms_for_table_share upon query from information schema
+--echo #
+
+use test;
+set @save_optimizer_use_condition_selectivity= @@optimizer_use_condition_selectivity;
+set @@optimizer_use_condition_selectivity= 4;
+set use_stat_tables='preferably';
+
+CREATE TABLE t1 (a INT);
+CREATE TABLE t2 (b INT);
+CREATE VIEW v AS SELECT * FROM t1 JOIN t2;
+--error ER_NO_SUCH_TABLE
+INSERT INTO t2 SELECT * FROM x;
+
+select * from information_schema.tables where table_name='v';
+
+drop table t1,t2;
+drop view v;
+set @@optimizer_use_condition_selectivity= @save_optimizer_use_condition_selectivity;
+
set @save_optimizer_switch=@@optimizer_switch;
set use_stat_tables=@save_use_stat_tables;