summaryrefslogtreecommitdiff
path: root/mysql-test
diff options
context:
space:
mode:
authorAlexey Botchkov <holyfoot@askmonty.org>2012-09-27 13:18:07 +0500
committerAlexey Botchkov <holyfoot@askmonty.org>2012-09-27 13:18:07 +0500
commit8c2bb705f11956cdc0acb67182466a903dcdd19b (patch)
treec8f487bd40b036025a218c2815730a826dde75a5 /mysql-test
parent2f5f360f17856d5a8aed28ead468542bdb63861e (diff)
downloadmariadb-git-8c2bb705f11956cdc0acb67182466a903dcdd19b.tar.gz
MDEV-495 backport --ignore-db-dir.
The feature was backported from MySQL 5.6. Some code was added to make commands as SELECT * FROM ignored_db.t1; CALL ignored_db.proc(); USE ignored_db; to take that option into account. per-file comments: mysql-test/r/ignore_db_dirs_basic.result test result added. mysql-test/t/ignore_db_dirs_basic-master.opt options for the test, actually the set of --ignore-db-dir lines. mysql-test/t/ignore_db_dirs_basic.test test for the feature. Same test from 5.6 was taken as a basis, then tests for SELECT, CALL etc were added. per-file comments: sql/mysql_priv.h MDEV-495 backport --ignore-db-dir. interface for db_name_is_in_ignore_list() added. sql/mysqld.cc MDEV-495 backport --ignore-db-dir. --ignore-db-dir handling. sql/set_var.cc MDEV-495 backport --ignore-db-dir. the @@ignore_db_dirs variable added. sql/sql_show.cc MDEV-495 backport --ignore-db-dir. check if the directory is ignored. sql/sql_show.h MDEV-495 backport --ignore-db-dir. interface added for opt_ignored_db_dirs. sql/table.cc MDEV-495 backport --ignore-db-dir. check if the directory is ignored.
Diffstat (limited to 'mysql-test')
-rw-r--r--mysql-test/r/ignore_db_dirs_basic.result47
-rw-r--r--mysql-test/t/ignore_db_dirs_basic-master.opt11
-rw-r--r--mysql-test/t/ignore_db_dirs_basic.test38
3 files changed, 96 insertions, 0 deletions
diff --git a/mysql-test/r/ignore_db_dirs_basic.result b/mysql-test/r/ignore_db_dirs_basic.result
new file mode 100644
index 00000000000..a0bbcb54f15
--- /dev/null
+++ b/mysql-test/r/ignore_db_dirs_basic.result
@@ -0,0 +1,47 @@
+select @@ignore_db_dirs;
+@@ignore_db_dirs
+e,lost+found,.mysqlgui,ignored_db
+# Check that SHOW DATABASES ignores all directories from
+# @@ignore_db_dirs and all directories with names starting
+# with '.'
+SHOW DATABASES;
+Database
+information_schema
+#mysql50#.otherdir
+mtr
+mysql
+test
+USE ignored_db;
+ERROR 42000: Incorrect database name 'ignored_db'
+SELECT * FROM ignored_db.t1;
+ERROR 42000: Incorrect database name 'ignored_db'
+CALL ignored_db.p1();
+ERROR 42000: Incorrect database name 'ignored_db'
+SELECT COUNT(*) FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME='ignored_db';
+COUNT(*)
+1
+CREATE DATABASE ignored_db;
+ERROR 42000: Incorrect database name 'ignored_db'
+CREATE DATABASE `lost+found`;
+USE `lost+found`;
+CREATE TABLE t1(id INT);
+INSERT INTO t1 VALUES (1), (2);
+SELECT * FROM `lost+found`.t1;
+id
+1
+2
+SHOW DATABASES;
+Database
+information_schema
+#mysql50#.otherdir
+lost+found
+mtr
+mysql
+test
+DROP DATABASE `lost+found`;
+SET @@global.ignore_db_dirs = 'aha';
+ERROR HY000: Variable 'ignore_db_dirs' is a read only variable
+SET @@local.ignore_db_dirs = 'aha';
+ERROR HY000: Variable 'ignore_db_dirs' is a read only variable
+SET @@ignore_db_dirs = 'aha';
+ERROR HY000: Variable 'ignore_db_dirs' is a read only variable
diff --git a/mysql-test/t/ignore_db_dirs_basic-master.opt b/mysql-test/t/ignore_db_dirs_basic-master.opt
new file mode 100644
index 00000000000..30ee4f67284
--- /dev/null
+++ b/mysql-test/t/ignore_db_dirs_basic-master.opt
@@ -0,0 +1,11 @@
+--ignore-db-dir=a
+--ignore-db-dir=b
+--ignore-db-dir=c
+--ignore-db-dir=
+--ignore-db-dir=d
+--ignore-db-dir x
+--ignore-db-dir=
+--ignore-db-dir=e
+--ignore-db-dir=lost+found
+--ignore-db-dir=.mysqlgui
+--ignore-db-dir=ignored_db
diff --git a/mysql-test/t/ignore_db_dirs_basic.test b/mysql-test/t/ignore_db_dirs_basic.test
new file mode 100644
index 00000000000..9544fc540f9
--- /dev/null
+++ b/mysql-test/t/ignore_db_dirs_basic.test
@@ -0,0 +1,38 @@
+select @@ignore_db_dirs;
+let $MYSQLD_DATADIR= `select @@datadir`;
+
+mkdir $MYSQLD_DATADIR/.mysqlgui;
+mkdir $MYSQLD_DATADIR/.otherdir;
+mkdir $MYSQLD_DATADIR/lost+found;
+mkdir $MYSQLD_DATADIR/ignored_db;
+--echo # Check that SHOW DATABASES ignores all directories from
+--echo # @@ignore_db_dirs and all directories with names starting
+--echo # with '.'
+SHOW DATABASES;
+--error ER_WRONG_DB_NAME
+USE ignored_db;
+--error ER_WRONG_DB_NAME
+SELECT * FROM ignored_db.t1;
+--error ER_WRONG_DB_NAME
+CALL ignored_db.p1();
+SELECT COUNT(*) FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME='ignored_db';
+--error ER_WRONG_DB_NAME
+CREATE DATABASE ignored_db;
+CREATE DATABASE `lost+found`;
+USE `lost+found`;
+CREATE TABLE t1(id INT);
+INSERT INTO t1 VALUES (1), (2);
+SELECT * FROM `lost+found`.t1;
+SHOW DATABASES;
+DROP DATABASE `lost+found`;
+rmdir $MYSQLD_DATADIR/.mysqlgui;
+rmdir $MYSQLD_DATADIR/.otherdir;
+rmdir $MYSQLD_DATADIR/lost+found;
+rmdir $MYSQLD_DATADIR/ignored_db;
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+SET @@global.ignore_db_dirs = 'aha';
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+SET @@local.ignore_db_dirs = 'aha';
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+SET @@ignore_db_dirs = 'aha';