diff options
author | Jan Lindström <jan.lindstrom@mariadb.com> | 2015-08-31 19:47:14 +0300 |
---|---|---|
committer | Jan Lindström <jan.lindstrom@mariadb.com> | 2015-09-04 20:19:45 +0300 |
commit | 7e916bb86f512ff79f30d809b813608a625ec5ba (patch) | |
tree | d27594381375d2ec6907805b6fd1715ad1a86d13 /storage/xtradb/include/dict0mem.h | |
parent | e1978234ebe6606c3ad5a0d1be6ce0f86fcf7642 (diff) | |
download | mariadb-git-7e916bb86f512ff79f30d809b813608a625ec5ba.tar.gz |
MDEV-8588: Assertion failure in file ha_innodb.cc line 21140 if at least one encrypted table exists and encryption service is not available
Analysis: Problem was that in fil_read_first_page we do find that
table has encryption information and that encryption service
or used key_id is not available. But, then we just printed
fatal error message that causes above assertion.
Fix: When we open single table tablespace if it has encryption
information (crypt_data) store this crypt data to the table
structure. When we open a table and we find out that tablespace
is not available, check has table a encryption information
and from there is encryption service or used key_id is not available.
If it is, add additional warning for SQL-layer.
Diffstat (limited to 'storage/xtradb/include/dict0mem.h')
-rw-r--r-- | storage/xtradb/include/dict0mem.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/storage/xtradb/include/dict0mem.h b/storage/xtradb/include/dict0mem.h index 310891162ce..9c43829cecf 100644 --- a/storage/xtradb/include/dict0mem.h +++ b/storage/xtradb/include/dict0mem.h @@ -2,7 +2,7 @@ Copyright (c) 1996, 2015, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 2012, Facebook Inc. -Copyright (c) 2013, SkySQL Ab. All Rights Reserved. +Copyright (c) 2013, 2015, MariaDB Corporation. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -1033,6 +1033,7 @@ struct dict_table_t{ table_id_t id; /*!< id of the table */ mem_heap_t* heap; /*!< memory heap */ char* name; /*!< table name */ + void* thd; /*!< thd */ fil_space_crypt_t *crypt_data; /*!< crypt data if present */ const char* dir_path_of_temp_table;/*!< NULL or the directory path where a TEMPORARY table that was explicitly @@ -1346,6 +1347,7 @@ struct dict_table_t{ locks; /*!< list of locks on the table; protected by lock_sys->mutex */ ibool is_corrupt; + ibool is_encrypted; #endif /* !UNIV_HOTBACKUP */ #ifdef UNIV_DEBUG |