summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2018-05-24 11:38:34 +0300
committerMarko Mäkelä <marko.makela@mariadb.com>2018-05-24 11:38:34 +0300
commita61724a3ca187f6eb44fc67948acb76a94efa783 (patch)
tree111a4e7a16358fa967a7666d0bc6397c33e280d3
parenta816aa066e5c879a92819d694a93d245e6ec6e47 (diff)
downloadmariadb-git-a61724a3ca187f6eb44fc67948acb76a94efa783.tar.gz
MDEV-16267 Wrong INFORMATION_SCHEMA.INNODB_BUFFER_PAGE.TABLE_NAME
i_s_innodb_buffer_page_fill(), i_s_innodb_buf_page_lru_fill(): Only invoke Field::set_notnull() if the index was found.
-rw-r--r--storage/innobase/handler/i_s.cc28
-rw-r--r--storage/xtradb/handler/i_s.cc28
2 files changed, 38 insertions, 18 deletions
diff --git a/storage/innobase/handler/i_s.cc b/storage/innobase/handler/i_s.cc
index 41f4114494d..f8aa3bd4637 100644
--- a/storage/innobase/handler/i_s.cc
+++ b/storage/innobase/handler/i_s.cc
@@ -1,7 +1,7 @@
/*****************************************************************************
Copyright (c) 2007, 2016, Oracle and/or its affiliates. All Rights Reserved.
-Copyright (c) 2017, MariaDB Corporation.
+Copyright (c) 2017, 2018, 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
@@ -4955,9 +4955,11 @@ i_s_innodb_buffer_page_fill(
mutex_enter(&dict_sys->mutex);
- if (const dict_index_t* index =
- dict_index_get_if_in_cache_low(
- page_info->index_id)) {
+ const dict_index_t* index =
+ dict_index_get_if_in_cache_low(
+ page_info->index_id);
+
+ if (index) {
table_name_end = innobase_convert_name(
table_name, sizeof(table_name),
index->table_name,
@@ -4980,7 +4982,10 @@ i_s_innodb_buffer_page_fill(
OK(ret);
- fields[IDX_BUFFER_PAGE_TABLE_NAME]->set_notnull();
+ if (index) {
+ fields[IDX_BUFFER_PAGE_TABLE_NAME]
+ ->set_notnull();
+ }
}
OK(fields[IDX_BUFFER_PAGE_NUM_RECS]->store(
@@ -5657,9 +5662,11 @@ i_s_innodb_buf_page_lru_fill(
mutex_enter(&dict_sys->mutex);
- if (const dict_index_t* index =
- dict_index_get_if_in_cache_low(
- page_info->index_id)) {
+ const dict_index_t* index =
+ dict_index_get_if_in_cache_low(
+ page_info->index_id);
+
+ if (index) {
table_name_end = innobase_convert_name(
table_name, sizeof(table_name),
index->table_name,
@@ -5682,7 +5689,10 @@ i_s_innodb_buf_page_lru_fill(
OK(ret);
- fields[IDX_BUF_LRU_PAGE_TABLE_NAME]->set_notnull();
+ if (index) {
+ fields[IDX_BUF_LRU_PAGE_TABLE_NAME]
+ ->set_notnull();
+ }
}
OK(fields[IDX_BUF_LRU_PAGE_NUM_RECS]->store(
diff --git a/storage/xtradb/handler/i_s.cc b/storage/xtradb/handler/i_s.cc
index 011bc77dc3c..834bae399fb 100644
--- a/storage/xtradb/handler/i_s.cc
+++ b/storage/xtradb/handler/i_s.cc
@@ -1,7 +1,7 @@
/*****************************************************************************
Copyright (c) 2007, 2016, Oracle and/or its affiliates. All Rights Reserved.
-Copyright (c) 2017, MariaDB Corporation.
+Copyright (c) 2017, 2018, 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
@@ -4943,9 +4943,11 @@ i_s_innodb_buffer_page_fill(
mutex_enter(&dict_sys->mutex);
- if (const dict_index_t* index =
- dict_index_get_if_in_cache_low(
- page_info->index_id)) {
+ const dict_index_t* index =
+ dict_index_get_if_in_cache_low(
+ page_info->index_id);
+
+ if (index) {
table_name_end = innobase_convert_name(
table_name, sizeof(table_name),
index->table_name,
@@ -4968,7 +4970,10 @@ i_s_innodb_buffer_page_fill(
OK(ret);
- fields[IDX_BUFFER_PAGE_TABLE_NAME]->set_notnull();
+ if (index) {
+ fields[IDX_BUFFER_PAGE_TABLE_NAME]
+ ->set_notnull();
+ }
}
OK(fields[IDX_BUFFER_PAGE_NUM_RECS]->store(
@@ -5642,9 +5647,11 @@ i_s_innodb_buf_page_lru_fill(
mutex_enter(&dict_sys->mutex);
- if (const dict_index_t* index =
- dict_index_get_if_in_cache_low(
- page_info->index_id)) {
+ const dict_index_t* index =
+ dict_index_get_if_in_cache_low(
+ page_info->index_id);
+
+ if (index) {
table_name_end = innobase_convert_name(
table_name, sizeof(table_name),
index->table_name,
@@ -5667,7 +5674,10 @@ i_s_innodb_buf_page_lru_fill(
OK(ret);
- fields[IDX_BUF_LRU_PAGE_TABLE_NAME]->set_notnull();
+ if (index) {
+ fields[IDX_BUF_LRU_PAGE_TABLE_NAME]
+ ->set_notnull();
+ }
}
OK(fields[IDX_BUF_LRU_PAGE_NUM_RECS]->store(