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

Merge 10.7 into 10.8

parents 4775a406 b0998583
...@@ -262,7 +262,7 @@ static int example_init_func(void *p) ...@@ -262,7 +262,7 @@ static int example_init_func(void *p)
example_hton->table_options= example_table_option_list; example_hton->table_options= example_table_option_list;
example_hton->field_options= example_field_option_list; example_hton->field_options= example_field_option_list;
example_hton->tablefile_extensions= ha_example_exts; example_hton->tablefile_extensions= ha_example_exts;
example_hton->drop_table= [](handlerton *, const char*) { return 0; }; example_hton->drop_table= [](handlerton *, const char*) { return -1; };
DBUG_RETURN(0); DBUG_RETURN(0);
} }
......
...@@ -1310,6 +1310,9 @@ inline bool buf_pool_t::realloc(buf_block_t *block) ...@@ -1310,6 +1310,9 @@ inline bool buf_pool_t::realloc(buf_block_t *block)
new_block = buf_LRU_get_free_only(); new_block = buf_LRU_get_free_only();
if (new_block == NULL) { if (new_block == NULL) {
mysql_mutex_lock(&buf_pool.flush_list_mutex);
page_cleaner_wakeup();
mysql_mutex_unlock(&buf_pool.flush_list_mutex);
return(false); /* free list was not enough */ return(false); /* free list was not enough */
} }
......
/***************************************************************************** /*****************************************************************************
Copyright (c) 1995, 2017, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 1995, 2017, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2013, 2021, MariaDB Corporation. Copyright (c) 2013, 2022, MariaDB Corporation.
Copyright (c) 2013, 2014, Fusion-io Copyright (c) 2013, 2014, Fusion-io
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
...@@ -1789,11 +1789,6 @@ static void buf_flush_wait(lsn_t lsn) ...@@ -1789,11 +1789,6 @@ static void buf_flush_wait(lsn_t lsn)
my_cond_wait(&buf_pool.done_flush_list, my_cond_wait(&buf_pool.done_flush_list,
&buf_pool.flush_list_mutex.m_mutex); &buf_pool.flush_list_mutex.m_mutex);
} }
/* Wait for the checkpoint. */
while (buf_flush_sync_lsn)
my_cond_wait(&buf_pool.done_flush_list,
&buf_pool.flush_list_mutex.m_mutex);
} }
/** Wait until all persistent pages are flushed up to a limit. /** Wait until all persistent pages are flushed up to a limit.
......
/***************************************************************************** /*****************************************************************************
Copyright (c) 2016, 2021, MariaDB Corporation. Copyright (c) 2016, 2022, MariaDB Corporation.
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
...@@ -253,7 +253,9 @@ dberr_t dict_stats_save_defrag_summary(dict_index_t *index, THD *thd) ...@@ -253,7 +253,9 @@ dberr_t dict_stats_save_defrag_summary(dict_index_t *index, THD *thd)
trx_t *trx= trx_create(); trx_t *trx= trx_create();
trx->mysql_thd= thd; trx->mysql_thd= thd;
trx_start_internal(trx); trx_start_internal(trx);
dberr_t ret= lock_table_for_trx(table_stats, trx, LOCK_X); dberr_t ret= trx->read_only
? DB_READ_ONLY
: lock_table_for_trx(table_stats, trx, LOCK_X);
if (ret == DB_SUCCESS) if (ret == DB_SUCCESS)
ret= lock_table_for_trx(index_stats, trx, LOCK_X); ret= lock_table_for_trx(index_stats, trx, LOCK_X);
row_mysql_lock_data_dictionary(trx); row_mysql_lock_data_dictionary(trx);
...@@ -388,7 +390,9 @@ dict_stats_save_defrag_stats( ...@@ -388,7 +390,9 @@ dict_stats_save_defrag_stats(
trx_t *trx= trx_create(); trx_t *trx= trx_create();
trx->mysql_thd= thd; trx->mysql_thd= thd;
trx_start_internal(trx); trx_start_internal(trx);
dberr_t ret= lock_table_for_trx(table_stats, trx, LOCK_X); dberr_t ret= trx->read_only
? DB_READ_ONLY
: lock_table_for_trx(table_stats, trx, LOCK_X);
if (ret == DB_SUCCESS) if (ret == DB_SUCCESS)
ret= lock_table_for_trx(index_stats, trx, LOCK_X); ret= lock_table_for_trx(index_stats, trx, LOCK_X);
......
/***************************************************************************** /*****************************************************************************
Copyright (c) 1995, 2015, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 1995, 2015, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2017, 2021, MariaDB Corporation. Copyright (c) 2017, 2022, MariaDB Corporation.
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
...@@ -112,13 +112,9 @@ If same_page=1 is set in a record that follows a same_page=0 record ...@@ -112,13 +112,9 @@ If same_page=1 is set in a record that follows a same_page=0 record
in a mini-transaction, the tablespace identifier and page number in a mini-transaction, the tablespace identifier and page number
fields will be omitted. fields will be omitted.
(For some file-oriented records (if same_page=1 for the first records For FILE_ records (if same_page=1 for the first record
of a mini-transaction), we will write tablespace identifier using the of a mini-transaction), we will write a tablespace identifier and
same 1-to-5-byte encoding. TBD: describe the exact format of a page number (always 0) using the same 1-to-5-byte encoding.
file-oriented records. With MDEV-14425, we could write file-level log
records to a separate file, not interleaved with page-level redo log
at all. We could reserve the file ib_logfile0 for checkpoint information
and for file-level redo log records.)
For FREE_PAGE or INIT_PAGE, if same_page=1, the record will be treated For FREE_PAGE or INIT_PAGE, if same_page=1, the record will be treated
as corrupted (or reserved for future extension). The type code must as corrupted (or reserved for future extension). The type code must
...@@ -301,18 +297,14 @@ enum mfile_type_t ...@@ -301,18 +297,14 @@ enum mfile_type_t
FILE_RENAME = 0xa0, FILE_RENAME = 0xa0,
/** Modify a file. Followed by tablespace ID and the file name. */ /** Modify a file. Followed by tablespace ID and the file name. */
FILE_MODIFY = 0xb0, FILE_MODIFY = 0xb0,
#if 1 /* MDEV-14425 FIXME: Remove this! */
/** End-of-checkpoint marker. Followed by 2 dummy bytes of page identifier, /** End-of-checkpoint marker. Followed by 2 dummy bytes of page identifier,
8 bytes of LSN, and padded with a NUL; @see SIZE_OF_FILE_CHECKPOINT. */ 8 bytes of LSN, and padded with a NUL; @see SIZE_OF_FILE_CHECKPOINT. */
FILE_CHECKPOINT = 0xf0 FILE_CHECKPOINT = 0xf0
#endif
}; };
#if 1 /* MDEV-14425 FIXME: Remove this! */
/** Size of a FILE_CHECKPOINT record, including the trailing byte to /** Size of a FILE_CHECKPOINT record, including the trailing byte to
terminate the mini-transaction. */ terminate the mini-transaction. */
constexpr byte SIZE_OF_FILE_CHECKPOINT= 3/*type,page_id*/ + 8/*LSN*/ + 1; constexpr byte SIZE_OF_FILE_CHECKPOINT= 3/*type,page_id*/ + 8/*LSN*/ + 1;
#endif
#ifndef UNIV_INNOCHECKSUM #ifndef UNIV_INNOCHECKSUM
/** Types for the mlock objects to store in the mtr_t::m_memo */ /** Types for the mlock objects to store in the mtr_t::m_memo */
......
...@@ -2229,9 +2229,7 @@ bool recv_sys_t::parse(lsn_t checkpoint_lsn, store_t *store, bool apply) ...@@ -2229,9 +2229,7 @@ bool recv_sys_t::parse(lsn_t checkpoint_lsn, store_t *store, bool apply)
#endif #endif
uint32_t space_id= 0, page_no= 0, last_offset= 0; uint32_t space_id= 0, page_no= 0, last_offset= 0;
#if 1 /* MDEV-14425 FIXME: remove this */
bool got_page_op= false; bool got_page_op= false;
#endif
for (l= log; l < end; l+= rlen) for (l= log; l < end; l+= rlen)
{ {
const byte *const recs= l; const byte *const recs= l;
...@@ -2503,11 +2501,9 @@ bool recv_sys_t::parse(lsn_t checkpoint_lsn, store_t *store, bool apply) ...@@ -2503,11 +2501,9 @@ bool recv_sys_t::parse(lsn_t checkpoint_lsn, store_t *store, bool apply)
pages.erase(i); pages.erase(i);
} }
} }
#if 1 /* MDEV-14425 FIXME: this must be in the checkpoint file only! */
else if (rlen) else if (rlen)
{ {
switch (b & 0xf0) { switch (b & 0xf0) {
# if 1 /* MDEV-14425 FIXME: Remove this! */
case FILE_CHECKPOINT: case FILE_CHECKPOINT:
if (space_id == 0 && page_no == 0 && rlen == 8) if (space_id == 0 && page_no == 0 && rlen == 8)
{ {
...@@ -2538,7 +2534,6 @@ bool recv_sys_t::parse(lsn_t checkpoint_lsn, store_t *store, bool apply) ...@@ -2538,7 +2534,6 @@ bool recv_sys_t::parse(lsn_t checkpoint_lsn, store_t *store, bool apply)
} }
continue; continue;
} }
# endif
/* fall through */ /* fall through */
default: default:
if (!srv_force_recovery) if (!srv_force_recovery)
...@@ -2618,7 +2613,6 @@ bool recv_sys_t::parse(lsn_t checkpoint_lsn, store_t *store, bool apply) ...@@ -2618,7 +2613,6 @@ bool recv_sys_t::parse(lsn_t checkpoint_lsn, store_t *store, bool apply)
return true; return true;
} }
} }
#endif
else else
goto malformed; goto malformed;
} }
......
...@@ -194,7 +194,7 @@ static int oqgraph_init(void *p) ...@@ -194,7 +194,7 @@ static int oqgraph_init(void *p)
hton->discover_table_structure= oqgraph_discover_table_structure; hton->discover_table_structure= oqgraph_discover_table_structure;
hton->close_connection = oqgraph_close_connection; hton->close_connection = oqgraph_close_connection;
hton->drop_table= [](handlerton *, const char*) { return 0; }; hton->drop_table= [](handlerton *, const char*) { return -1; };
oqgraph_init_done= TRUE; oqgraph_init_done= TRUE;
return 0; return 0;
......
...@@ -30,3 +30,14 @@ update graph set origid=123; ...@@ -30,3 +30,14 @@ update graph set origid=123;
ERROR HY000: Table 'graph' is read only ERROR HY000: Table 'graph' is read only
DROP TABLE graph_base; DROP TABLE graph_base;
DROP TABLE graph; DROP TABLE graph;
#
# End of 10.0 tests
#
#
# MDEV-25373 DROP TABLE doesn't raise error while dropping non-existing table in MariaDB 10.5.9 when OQGraph SE is loaded to the server
#
drop table foobar;
ERROR 42S02: Unknown table 'test.foobar'
#
# End of 10.5 tests
#
...@@ -48,3 +48,16 @@ update graph set origid=123; ...@@ -48,3 +48,16 @@ update graph set origid=123;
DROP TABLE graph_base; DROP TABLE graph_base;
DROP TABLE graph; DROP TABLE graph;
--echo #
--echo # End of 10.0 tests
--echo #
--echo #
--echo # MDEV-25373 DROP TABLE doesn't raise error while dropping non-existing table in MariaDB 10.5.9 when OQGraph SE is loaded to the server
--echo #
--error 1051
drop table foobar;
--echo #
--echo # End of 10.5 tests
--echo #
This diff is collapsed.
/* Copyright (C) 2008-2019 Kentoku Shiba /* Copyright (C) 2008-2019 Kentoku Shiba
Copyright (C) 2019 MariaDB corp Copyright (C) 2019-2022 MariaDB corp
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
...@@ -92,8 +92,7 @@ class ha_spider final : public handler ...@@ -92,8 +92,7 @@ class ha_spider final : public handler
SPIDER_POSITION *pushed_pos; SPIDER_POSITION *pushed_pos;
SPIDER_POSITION pushed_pos_buf; SPIDER_POSITION pushed_pos_buf;
#ifdef WITH_PARTITION_STORAGE_ENGINE #ifdef WITH_PARTITION_STORAGE_ENGINE
bool pt_handler_share_owner = FALSE; SPIDER_PARTITION_HANDLER *partition_handler;
SPIDER_PARTITION_HANDLER_SHARE *partition_handler_share;
#endif #endif
bool wide_handler_owner = FALSE; bool wide_handler_owner = FALSE;
SPIDER_WIDE_HANDLER *wide_handler = NULL; SPIDER_WIDE_HANDLER *wide_handler = NULL;
......
for master_1
for child2
for child3
CREATE DATABASE auto_test_local;
USE auto_test_local;
CREATE TABLE tbl_a (a INT KEY) ENGINE=SPIDER;
SELECT a.z FROM tbl_a AS a,tbl_a b WHERE a.z=b.z;
ERROR 42S22: Unknown column 'a.z' in 'field list'
ALTER TABLE tbl_a CHANGE c c INT;
ERROR 42S22: Unknown column 'c' in 'tbl_a'
LOCK TABLE tbl_a READ;
ERROR HY000: Unable to connect to foreign data source: localhost
DROP DATABASE auto_test_local;
for master_1
for child2
for child3
!include include/default_mysqld.cnf
!include ../my_1_1.cnf
--disable_warnings
--disable_query_log
--disable_result_log
--source ../../t/test_init.inc
--enable_result_log
--enable_query_log
--enable_warnings
CREATE DATABASE auto_test_local;
USE auto_test_local;
CREATE TABLE tbl_a (a INT KEY) ENGINE=SPIDER;
--error ER_BAD_FIELD_ERROR
SELECT a.z FROM tbl_a AS a,tbl_a b WHERE a.z=b.z;
--error ER_BAD_FIELD_ERROR
ALTER TABLE tbl_a CHANGE c c INT;
--error ER_CONNECT_TO_FOREIGN_DATA_SOURCE
LOCK TABLE tbl_a READ;
DROP DATABASE auto_test_local;
--disable_warnings
--disable_query_log
--disable_result_log
--source ../../t/test_deinit.inc
--enable_result_log
--enable_query_log
--enable_warnings
/* Copyright (C) 2008-2020 Kentoku Shiba /* Copyright (C) 2008-2020 Kentoku Shiba
Copyright (C) 2019-2020 MariaDB corp Copyright (C) 2019-2022 MariaDB corp
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
...@@ -688,18 +688,15 @@ typedef struct st_spider_lgtm_tblhnd_share ...@@ -688,18 +688,15 @@ typedef struct st_spider_lgtm_tblhnd_share
} SPIDER_LGTM_TBLHND_SHARE; } SPIDER_LGTM_TBLHND_SHARE;
#ifdef WITH_PARTITION_STORAGE_ENGINE #ifdef WITH_PARTITION_STORAGE_ENGINE
typedef struct st_spider_patition_handler_share typedef struct st_spider_patition_handler
{ {
bool clone_bitmap_init; bool clone_bitmap_init;
#ifdef SPIDER_HAS_HASH_VALUE_TYPE
my_hash_value_type table_hash_value;
#endif
query_id_t parallel_search_query_id; query_id_t parallel_search_query_id;
uint no_parts; uint no_parts;
TABLE *table; TABLE *table;
ha_spider *owner; ha_spider *owner;
ha_spider **handlers; ha_spider **handlers;
} SPIDER_PARTITION_HANDLER_SHARE; } SPIDER_PARTITION_HANDLER;
#endif #endif
typedef struct st_spider_wide_share typedef struct st_spider_wide_share
...@@ -713,12 +710,6 @@ typedef struct st_spider_wide_share ...@@ -713,12 +710,6 @@ typedef struct st_spider_wide_share
THR_LOCK lock; THR_LOCK lock;
pthread_mutex_t sts_mutex; pthread_mutex_t sts_mutex;
pthread_mutex_t crd_mutex; pthread_mutex_t crd_mutex;
pthread_mutex_t pt_handler_mutex;
HASH pt_handler_hash;
uint pt_handler_hash_id;
const char *pt_handler_hash_func_name;
const char *pt_handler_hash_file_name;
ulong pt_handler_hash_line_no;
volatile bool sts_init; volatile bool sts_init;
volatile bool crd_init; volatile bool crd_init;
...@@ -763,7 +754,7 @@ typedef struct st_spider_wide_handler ...@@ -763,7 +754,7 @@ typedef struct st_spider_wide_handler
#endif #endif
#endif #endif
#ifdef WITH_PARTITION_STORAGE_ENGINE #ifdef WITH_PARTITION_STORAGE_ENGINE
SPIDER_PARTITION_HANDLER_SHARE *partition_handler_share; SPIDER_PARTITION_HANDLER *partition_handler;
#endif #endif
#ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS #ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS
List<Item> *direct_update_fields; List<Item> *direct_update_fields;
......
/* Copyright (C) 2008-2020 Kentoku Shiba /* Copyright (C) 2008-2020 Kentoku Shiba
Copyright (C) 2019-2020 MariaDB corp Copyright (C) 2019-2022 MariaDB corp
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
...@@ -184,7 +184,6 @@ PSI_mutex_key spd_key_mutex_share_auto_increment; ...@@ -184,7 +184,6 @@ PSI_mutex_key spd_key_mutex_share_auto_increment;
#ifdef WITH_PARTITION_STORAGE_ENGINE #ifdef WITH_PARTITION_STORAGE_ENGINE
PSI_mutex_key spd_key_mutex_wide_share_sts; PSI_mutex_key spd_key_mutex_wide_share_sts;
PSI_mutex_key spd_key_mutex_wide_share_crd; PSI_mutex_key spd_key_mutex_wide_share_crd;
PSI_mutex_key spd_key_mutex_pt_handler;
#endif #endif
PSI_mutex_key spd_key_mutex_udf_table; PSI_mutex_key spd_key_mutex_udf_table;
PSI_mutex_key spd_key_mutex_mem_calc; PSI_mutex_key spd_key_mutex_mem_calc;
...@@ -244,7 +243,6 @@ static PSI_mutex_info all_spider_mutexes[]= ...@@ -244,7 +243,6 @@ static PSI_mutex_info all_spider_mutexes[]=
#ifdef WITH_PARTITION_STORAGE_ENGINE #ifdef WITH_PARTITION_STORAGE_ENGINE
{ &spd_key_mutex_wide_share_sts, "wide_share_sts", 0}, { &spd_key_mutex_wide_share_sts, "wide_share_sts", 0},
{ &spd_key_mutex_wide_share_crd, "wide_share_crd", 0}, { &spd_key_mutex_wide_share_crd, "wide_share_crd", 0},
{ &spd_key_mutex_pt_handler, "pt_handler", 0},
#endif #endif
{ &spd_key_mutex_udf_table, "udf_table", 0}, { &spd_key_mutex_udf_table, "udf_table", 0},
{ &spd_key_mutex_conn_loop_check, "conn_loop_check", 0}, { &spd_key_mutex_conn_loop_check, "conn_loop_check", 0},
...@@ -430,18 +428,6 @@ uchar *spider_wide_share_get_key( ...@@ -430,18 +428,6 @@ uchar *spider_wide_share_get_key(
DBUG_RETURN((uchar*) share->table_name); DBUG_RETURN((uchar*) share->table_name);
} }
#ifdef WITH_PARTITION_STORAGE_ENGINE
uchar *spider_pt_handler_share_get_key(
SPIDER_PARTITION_HANDLER_SHARE *share,
size_t *length,
my_bool not_used __attribute__ ((unused))
) {
DBUG_ENTER("spider_pt_handler_share_get_key");
*length = sizeof(ha_spider *);
DBUG_RETURN((uchar*) share->owner);
}
#endif
uchar *spider_lgtm_tblhnd_share_hash_get_key( uchar *spider_lgtm_tblhnd_share_hash_get_key(
SPIDER_LGTM_TBLHND_SHARE *share, SPIDER_LGTM_TBLHND_SHARE *share,
size_t *length, size_t *length,
...@@ -6609,34 +6595,8 @@ SPIDER_WIDE_SHARE *spider_get_wide_share( ...@@ -6609,34 +6595,8 @@ SPIDER_WIDE_SHARE *spider_get_wide_share(
goto error_init_crd_mutex; goto error_init_crd_mutex;
} }
#if MYSQL_VERSION_ID < 50500
if (pthread_mutex_init(&wide_share->pt_handler_mutex,
MY_MUTEX_INIT_FAST))
#else
if (mysql_mutex_init(spd_key_mutex_pt_handler,
&wide_share->pt_handler_mutex, MY_MUTEX_INIT_FAST))
#endif
{
*error_num = HA_ERR_OUT_OF_MEM;
goto error_init_pt_handler_mutex;
}
if(
my_hash_init(PSI_INSTRUMENT_ME, &wide_share->pt_handler_hash, spd_charset_utf8mb3_bin,
32, 0, 0, (my_hash_get_key) spider_pt_handler_share_get_key, 0, 0)
) {
*error_num = HA_ERR_OUT_OF_MEM;
goto error_init_pt_handler_hash;
}
thr_lock_init(&wide_share->lock); thr_lock_init(&wide_share->lock);
spider_alloc_calc_mem_init(wide_share->pt_handler_hash, 142);
spider_alloc_calc_mem(spider_current_trx,
wide_share->pt_handler_hash,
wide_share->pt_handler_hash.array.max_element *
wide_share->pt_handler_hash.array.size_of_element);
uint old_elements = spider_open_wide_share.array.max_element; uint old_elements = spider_open_wide_share.array.max_element;
#ifdef HASH_UPDATE_WITH_HASH_VALUE #ifdef HASH_UPDATE_WITH_HASH_VALUE
if (my_hash_insert_with_hash_value(&spider_open_wide_share, if (my_hash_insert_with_hash_value(&spider_open_wide_share,
...@@ -6664,14 +6624,6 @@ SPIDER_WIDE_SHARE *spider_get_wide_share( ...@@ -6664,14 +6624,6 @@ SPIDER_WIDE_SHARE *spider_get_wide_share(
DBUG_RETURN(wide_share); DBUG_RETURN(wide_share);
error_hash_insert: error_hash_insert:
spider_free_mem_calc(spider_current_trx,
wide_share->pt_handler_hash_id,
wide_share->pt_handler_hash.array.max_element *
wide_share->pt_handler_hash.array.size_of_element);
my_hash_free(&wide_share->pt_handler_hash);
error_init_pt_handler_hash:
pthread_mutex_destroy(&wide_share->pt_handler_mutex);
error_init_pt_handler_mutex:
pthread_mutex_destroy(&wide_share->crd_mutex); pthread_mutex_destroy(&wide_share->crd_mutex);
error_init_crd_mutex: error_init_crd_mutex:
pthread_mutex_destroy(&wide_share->sts_mutex); pthread_mutex_destroy(&wide_share->sts_mutex);
...@@ -6696,12 +6648,6 @@ int spider_free_wide_share( ...@@ -6696,12 +6648,6 @@ int spider_free_wide_share(
#else #else
my_hash_delete(&spider_open_wide_share, (uchar*) wide_share); my_hash_delete(&spider_open_wide_share, (uchar*) wide_share);
#endif #endif
spider_free_mem_calc(spider_current_trx,
wide_share->pt_handler_hash_id,
wide_share->pt_handler_hash.array.max_element *
wide_share->pt_handler_hash.array.size_of_element);
my_hash_free(&wide_share->pt_handler_hash);
pthread_mutex_destroy(&wide_share->pt_handler_mutex);
pthread_mutex_destroy(&wide_share->crd_mutex); pthread_mutex_destroy(&wide_share->crd_mutex);
pthread_mutex_destroy(&wide_share->sts_mutex); pthread_mutex_destroy(&wide_share->sts_mutex);
spider_free(spider_current_trx, wide_share, MYF(0)); spider_free(spider_current_trx, wide_share, MYF(0));
...@@ -8210,15 +8156,15 @@ int spider_get_sts( ...@@ -8210,15 +8156,15 @@ int spider_get_sts(
if (error_num) if (error_num)
{ {
#ifdef WITH_PARTITION_STORAGE_ENGINE #ifdef WITH_PARTITION_STORAGE_ENGINE
SPIDER_PARTITION_HANDLER_SHARE *partition_handler_share = SPIDER_PARTITION_HANDLER *partition_handler =
spider->partition_handler_share; spider->partition_handler;
if ( if (
!share->wide_share->sts_init && !share->wide_share->sts_init &&
sts_sync >= sts_sync_level && sts_sync >= sts_sync_level &&
get_type > 1 && get_type > 1 &&
partition_handler_share && partition_handler &&
partition_handler_share->handlers && partition_handler->handlers &&
partition_handler_share->handlers[0] == spider partition_handler->handlers[0] == spider
) { ) {
int roop_count; int roop_count;
ha_spider *tmp_spider; ha_spider *tmp_spider;
...@@ -8228,11 +8174,11 @@ int spider_get_sts( ...@@ -8228,11 +8174,11 @@ int spider_get_sts(
int tmp_sts_sync; int tmp_sts_sync;
THD *thd = spider->wide_handler->trx->thd; THD *thd = spider->wide_handler->trx->thd;
for (roop_count = 1; for (roop_count = 1;
roop_count < (int) partition_handler_share->no_parts; roop_count < (int) partition_handler->no_parts;
roop_count++) roop_count++)
{ {
tmp_spider = tmp_spider =
(ha_spider *) partition_handler_share->handlers[roop_count]; (ha_spider *) partition_handler->handlers[roop_count];
tmp_share = tmp_spider->share; tmp_share = tmp_spider->share;
tmp_sts_interval = spider_param_sts_interval(thd, share->sts_interval); tmp_sts_interval = spider_param_sts_interval(thd, share->sts_interval);
tmp_sts_mode = spider_param_sts_mode(thd, share->sts_mode); tmp_sts_mode = spider_param_sts_mode(thd, share->sts_mode);
...@@ -8362,15 +8308,15 @@ int spider_get_crd( ...@@ -8362,15 +8308,15 @@ int spider_get_crd(
if (error_num) if (error_num)
{ {
#ifdef WITH_PARTITION_STORAGE_ENGINE #ifdef WITH_PARTITION_STORAGE_ENGINE
SPIDER_PARTITION_HANDLER_SHARE *partition_handler_share = SPIDER_PARTITION_HANDLER *partition_handler =
spider->partition_handler_share; spider->partition_handler;
if ( if (
!share->wide_share->crd_init && !share->wide_share->crd_init &&
crd_sync >= crd_sync_level && crd_sync >= crd_sync_level &&
get_type > 1 && get_type > 1 &&
partition_handler_share && partition_handler &&
partition_handler_share->handlers && partition_handler->handlers &&
partition_handler_share->handlers[0] == spider partition_handler->handlers[0] == spider
) { ) {
int roop_count; int roop_count;
ha_spider *tmp_spider; ha_spider *tmp_spider;
...@@ -8380,11 +8326,11 @@ int spider_get_crd( ...@@ -8380,11 +8326,11 @@ int spider_get_crd(
int tmp_crd_sync; int tmp_crd_sync;
THD *thd = spider->wide_handler->trx->thd; THD *thd = spider->wide_handler->trx->thd;
for (roop_count = 1; for (roop_count = 1;
roop_count < (int) partition_handler_share->no_parts; roop_count < (int) partition_handler->no_parts;
roop_count++) roop_count++)
{ {
tmp_spider = tmp_spider =
(ha_spider *) partition_handler_share->handlers[roop_count]; (ha_spider *) partition_handler->handlers[roop_count];
tmp_share = tmp_spider->share; tmp_share = tmp_spider->share;
tmp_crd_interval = spider_param_crd_interval(thd, share->crd_interval); tmp_crd_interval = spider_param_crd_interval(thd, share->crd_interval);
tmp_crd_mode = spider_param_crd_mode(thd, share->crd_mode); tmp_crd_mode = spider_param_crd_mode(thd, share->crd_mode);
...@@ -9529,10 +9475,10 @@ int spider_set_direct_limit_offset( ...@@ -9529,10 +9475,10 @@ int spider_set_direct_limit_offset(
DBUG_RETURN(TRUE); DBUG_RETURN(TRUE);
if ( if (
spider->partition_handler_share && spider->partition_handler &&
!spider->pt_handler_share_owner !spider->wide_handler_owner
) { ) {
if (spider->partition_handler_share->owner-> if (spider->partition_handler->owner->
result_list.direct_limit_offset == TRUE) result_list.direct_limit_offset == TRUE)
{ {
spider->result_list.direct_limit_offset = TRUE; spider->result_list.direct_limit_offset = TRUE;
......
/* Copyright (C) 2008-2019 Kentoku Shiba /* Copyright (C) 2008-2019 Kentoku Shiba
Copyright (C) 2019 MariaDB corp Copyright (C) 2019-2022 MariaDB corp
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
...@@ -319,14 +319,6 @@ uchar *spider_wide_share_get_key( ...@@ -319,14 +319,6 @@ uchar *spider_wide_share_get_key(
my_bool not_used __attribute__ ((unused)) my_bool not_used __attribute__ ((unused))
); );
#ifdef WITH_PARTITION_STORAGE_ENGINE
uchar *spider_pt_handler_share_get_key(
SPIDER_PARTITION_HANDLER_SHARE *share,
size_t *length,
my_bool not_used __attribute__ ((unused))
);
#endif
uchar *spider_link_get_key( uchar *spider_link_get_key(
SPIDER_LINK_FOR_HASH *link_for_hash, SPIDER_LINK_FOR_HASH *link_for_hash,
size_t *length, size_t *length,
......
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