summaryrefslogtreecommitdiff
path: root/storage/innobase/include/page0cur.ic
diff options
context:
space:
mode:
authorJan Lindström <jan.lindstrom@mariadb.com>2015-08-31 19:47:14 +0300
committerJan Lindström <jan.lindstrom@mariadb.com>2015-09-04 20:19:45 +0300
commit7e916bb86f512ff79f30d809b813608a625ec5ba (patch)
treed27594381375d2ec6907805b6fd1715ad1a86d13 /storage/innobase/include/page0cur.ic
parente1978234ebe6606c3ad5a0d1be6ce0f86fcf7642 (diff)
downloadmariadb-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.ic17
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);
}