Commit cb9648a6 authored by Marko Mäkelä's avatar Marko Mäkelä

Revert an InnoDB Memcached plugin fix that was merged from MySQL 5.6.37

Revert the following change, because Memcached is not present
in MariaDB Server. We had better avoid adding dead code.

commit d9bc5e03d788b958ce8c76e157239953db60adb2
Author: Aakanksha Verma <aakanksha.verma@oracle.com>
Date:   Thu May 18 14:31:01 2017 +0530

    Bug #24605783 MYSQL GOT SIGNAL 6 ASSERTION FAILURE
parent ef2e51c3
/***************************************************************************** /*****************************************************************************
Copyright (c) 2008, 2017, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 2008, 2015, Oracle and/or its affiliates. All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under 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 the terms of the GNU General Public License as published by the Free Software
...@@ -1988,14 +1988,11 @@ ib_cursor_read_row( ...@@ -1988,14 +1988,11 @@ ib_cursor_read_row(
page_format = static_cast<ib_bool_t>( page_format = static_cast<ib_bool_t>(
dict_table_is_comp(tuple->index->table)); dict_table_is_comp(tuple->index->table));
rec = btr_pcur_get_rec(pcur); rec = btr_pcur_get_rec(pcur);
if (!rec_get_deleted_flag(rec, page_format)) { if (prebuilt->innodb_api_rec &&
if (prebuilt->innodb_api && prebuilt->innodb_api_rec != rec) {
prebuilt->innodb_api_rec != NULL) { rec = prebuilt->innodb_api_rec;
rec =prebuilt->innodb_api_rec;
}
} }
if (!rec_get_deleted_flag(rec, page_format)) { if (!rec_get_deleted_flag(rec, page_format)) {
...@@ -2032,10 +2029,6 @@ ib_cursor_position( ...@@ -2032,10 +2029,6 @@ ib_cursor_position(
buf = static_cast<unsigned char*>(mem_alloc(UNIV_PAGE_SIZE)); buf = static_cast<unsigned char*>(mem_alloc(UNIV_PAGE_SIZE));
if (prebuilt->innodb_api) {
prebuilt->cursor_heap = cursor->heap;
}
/* We want to position at one of the ends, row_search_for_mysql() /* We want to position at one of the ends, row_search_for_mysql()
uses the search_tuple fields to work out what to do. */ uses the search_tuple fields to work out what to do. */
dtuple_set_n_fields(prebuilt->search_tuple, 0); dtuple_set_n_fields(prebuilt->search_tuple, 0);
...@@ -2090,9 +2083,6 @@ ib_cursor_next( ...@@ -2090,9 +2083,6 @@ ib_cursor_next(
row_prebuilt_t* prebuilt = cursor->prebuilt; row_prebuilt_t* prebuilt = cursor->prebuilt;
byte buf[UNIV_PAGE_SIZE_MAX]; byte buf[UNIV_PAGE_SIZE_MAX];
if (prebuilt->innodb_api) {
prebuilt->cursor_heap = cursor->heap;
}
/* We want to move to the next record */ /* We want to move to the next record */
dtuple_set_n_fields(prebuilt->search_tuple, 0); dtuple_set_n_fields(prebuilt->search_tuple, 0);
...@@ -2145,9 +2135,6 @@ ib_cursor_moveto( ...@@ -2145,9 +2135,6 @@ ib_cursor_moveto(
buf = static_cast<unsigned char*>(mem_alloc(UNIV_PAGE_SIZE)); buf = static_cast<unsigned char*>(mem_alloc(UNIV_PAGE_SIZE));
if (prebuilt->innodb_api) {
prebuilt->cursor_heap = cursor->heap;
}
err = static_cast<ib_err_t>(row_search_for_mysql( err = static_cast<ib_err_t>(row_search_for_mysql(
buf, ib_srch_mode, prebuilt, cursor->match_mode, 0)); buf, ib_srch_mode, prebuilt, cursor->match_mode, 0));
......
/***************************************************************************** /*****************************************************************************
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 2000, 2016, Oracle and/or its affiliates. All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under 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 the terms of the GNU General Public License as published by the Free Software
...@@ -724,8 +724,6 @@ struct row_prebuilt_t { ...@@ -724,8 +724,6 @@ struct row_prebuilt_t {
mem_heap_t* heap; /*!< memory heap from which mem_heap_t* heap; /*!< memory heap from which
these auxiliary structures are these auxiliary structures are
allocated when needed */ allocated when needed */
mem_heap_t* cursor_heap; /*!< memory heap from which
innodb_api_buf is allocated per session*/
ins_node_t* ins_node; /*!< Innobase SQL insert node ins_node_t* ins_node; /*!< Innobase SQL insert node
used to perform inserts used to perform inserts
to the table */ to the table */
...@@ -876,9 +874,6 @@ struct row_prebuilt_t { ...@@ -876,9 +874,6 @@ struct row_prebuilt_t {
unsigned innodb_api:1; /*!< whether this is a InnoDB API unsigned innodb_api:1; /*!< whether this is a InnoDB API
query */ query */
const rec_t* innodb_api_rec; /*!< InnoDB API search result */ const rec_t* innodb_api_rec; /*!< InnoDB API search result */
void* innodb_api_buf; /*!< Buffer holding copy of the physical
Innodb API search record */
ulint innodb_api_rec_size; /*!< Size of the Innodb API record */
byte* srch_key_val1; /*!< buffer used in converting byte* srch_key_val1; /*!< buffer used in converting
search key values from MySQL format search key values from MySQL format
to InnoDB format.*/ to InnoDB format.*/
......
...@@ -4997,19 +4997,8 @@ row_search_for_mysql( ...@@ -4997,19 +4997,8 @@ row_search_for_mysql(
btr_pcur_store_position(pcur, &mtr); btr_pcur_store_position(pcur, &mtr);
if (prebuilt->innodb_api if (prebuilt->innodb_api) {
&& (btr_pcur_get_rec(pcur) != result_rec)) { prebuilt->innodb_api_rec = result_rec;
ulint rec_size = rec_offs_size(offsets);
if (!prebuilt->innodb_api_rec_size ||
(prebuilt->innodb_api_rec_size < rec_size)) {
prebuilt->innodb_api_buf =
static_cast<byte*>
(mem_heap_alloc(prebuilt->cursor_heap,rec_size));
prebuilt->innodb_api_rec_size = rec_size;
}
prebuilt->innodb_api_rec =
rec_copy(
prebuilt->innodb_api_buf, result_rec, offsets);
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment