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/innobase/include/page0cur.ic | |
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/innobase/include/page0cur.ic')
-rw-r--r-- | storage/innobase/include/page0cur.ic | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/storage/innobase/include/page0cur.ic b/storage/innobase/include/page0cur.ic index 028d33b17aa..6e068d9f739 100644 --- a/storage/innobase/include/page0cur.ic +++ b/storage/innobase/include/page0cur.ic @@ -1,6 +1,7 @@ /***************************************************************************** Copyright (c) 1994, 2013, Oracle and/or its affiliates. All Rights Reserved. +Copyright (c) 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 @@ -39,7 +40,10 @@ page_cur_get_page( page_cur_t* cur) /*!< in: page cursor */ { ut_ad(cur); - ut_ad(page_align(cur->rec) == cur->block->frame); + + if (cur->rec) { + ut_ad(page_align(cur->rec) == cur->block->frame); + } return(page_align(cur->rec)); } @@ -54,7 +58,11 @@ page_cur_get_block( page_cur_t* cur) /*!< in: page cursor */ { ut_ad(cur); - ut_ad(page_align(cur->rec) == cur->block->frame); + + if (cur->rec) { + ut_ad(page_align(cur->rec) == cur->block->frame); + } + return(cur->block); } @@ -80,7 +88,10 @@ page_cur_get_rec( page_cur_t* cur) /*!< in: page cursor */ { ut_ad(cur); - ut_ad(page_align(cur->rec) == cur->block->frame); + + if (cur->rec) { + ut_ad(page_align(cur->rec) == cur->block->frame); + } return(cur->rec); } |