Hi, Marko,

On Jan 20, Marko Mäkelä wrote:
> revision-id: 673ea509e2c (mariadb-10.2.40-230-g673ea509e2c)
> parent(s): d28d3aee108
> author: Marko Mäkelä
> committer: Marko Mäkelä
> timestamp: 2022-01-20 16:13:08 +0200
> message:
> 
> MDEV-26870 --skip-symbolic-links does not disallow .isl file creation
> 
> The InnoDB DATA DIRECTORY attribute is not implemented via
> symbolic links but something similar, *.isl files that contain
> the names of data files.
> 
> InnoDB failed to reject the DATA DIRECTORY attribute even though
> the server was started with --skip-symbolic-links.
> 
> Because TRUNCATE TABLE cannot easily return an error, it will keep
> rebuilding tables even if they carry the DATA DIRECTORY attribute.
> 
> diff --git a/mysql-test/suite/encryption/t/innodb-first-page-read.test 
> b/mysql-test/suite/encryption/t/innodb-first-page-read.test
> index d661e4565d2..a0b3ca3f0ff 100644
> --- a/mysql-test/suite/encryption/t/innodb-first-page-read.test
> +++ b/mysql-test/suite/encryption/t/innodb-first-page-read.test
> @@ -1,6 +1,7 @@
>  -- source include/have_innodb.inc
>  -- source include/have_file_key_management_plugin.inc
>  -- source include/not_embedded.inc
> +-- source include/have_symlink.inc

when can have_symlink be false?

Why InnoDB tests depend on server's symlink support?
InnoDB does not use symlinks, it uses isl files.

>  --disable_warnings
>  SET GLOBAL innodb_file_format = `Barracuda`;
> diff --git a/storage/innobase/handler/ha_innodb.cc 
> b/storage/innobase/handler/ha_innodb.cc
> index 5d78e64a06b..a8b16ba1eb0 100644
> --- a/storage/innobase/handler/ha_innodb.cc
> +++ b/storage/innobase/handler/ha_innodb.cc
> @@ -11710,9 +11710,15 @@ create_table_info_t::create_options_are_invalid()
>               break;
>       }
>  
> -     if (m_create_info->data_file_name
> -         && m_create_info->data_file_name[0] != '\0'
> -         && !create_option_data_directory_is_valid()) {
> +     if (!m_create_info->data_file_name
> +         || !m_create_info->data_file_name[0]) {
> +     } else if (!my_use_symdir) {
> +             push_warning(
> +                     m_thd, Sql_condition::WARN_LEVEL_WARN,
> +                     ER_ILLEGAL_HA_CREATE_OPTION,
> +                     "InnoDB: DATA DIRECTORY requires HAVE_SYMLINK.");
> +             ret = "DATA DIRECTORY";

MyISAM does

      push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
                          WARN_OPTION_IGNORED,
                          ER_THD(thd, WARN_OPTION_IGNORED),
                          "DATA DIRECTORY");
Archive does

    if (create_info->data_file_name)
      my_error(WARN_OPTION_IGNORED, MYF(ME_WARNING), "DATA DIRECTORY");

I suggest you do one of the above too.

> +     } else if (!create_option_data_directory_is_valid()) {
>               ret = "DATA DIRECTORY";
>       }
>  
Regards,
Sergei
VP of MariaDB Server Engineering
and secur...@mariadb.org

_______________________________________________
Mailing list: https://launchpad.net/~maria-developers
Post to     : maria-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~maria-developers
More help   : https://help.launchpad.net/ListHelp

Reply via email to