mirror of
https://github.com/MariaDB/server.git
synced 2025-10-01 21:39:18 +02:00

This is a squash of about two dozen commits for MDEV-37114, MDEV-37110, MDEV-37111, see below ---- MDEV-27260 [WIP] Initial stub of spider select handler MDEV-27260 [wip] An dummy implementation of spider select that returns a single row of NULL Sample test case: --disable_query_log --disable_result_log --source ../../t/test_init.inc --enable_result_log --enable_query_log set spider_same_server_link= 1; set spider_disable_select_handler= 0; evalp CREATE SERVER srv FOREIGN DATA WRAPPER mysql OPTIONS (SOCKET "$MASTER_1_MYSOCK", DATABASE 'test',user 'root'); create table t2 (c int); create table t1 (c int) ENGINE=Spider COMMENT='WRAPPER "mysql", srv "srv",TABLE "t2"'; insert into t1 values (1), (2), (3); select * from t1; drop table t1, t2; drop server srv; --disable_query_log --disable_result_log --source ../../t/test_deinit.inc --enable_result_log --enable_query_log MDEV-27260 [wip] beelining a spider select handler poc Works for the following simple case --disable_query_log --disable_result_log --source ../../t/test_init.inc --enable_result_log --enable_query_log set spider_same_server_link= 1; set spider_disable_select_handler= 0; evalp CREATE SERVER srv FOREIGN DATA WRAPPER mysql OPTIONS (SOCKET "$MASTER_1_MYSOCK", DATABASE 'test',user 'root'); create table t2 (c int); create table t1 (c int) ENGINE=Spider COMMENT='WRAPPER "mysql", srv "srv",TABLE "t2"'; insert into t1 values (1), (2), (3); select c from t1; drop table t1, t2; drop server srv; --disable_query_log --disable_result_log --source ../../t/test_deinit.inc --enable_result_log --enable_query_log MDEV-27260 MDEV-37110 [wip] Make spider sh work with cases not working well with spider gbh See added testcase MDEV-27260 MDEV-37111 spider sh: Check backends used by spider tables MDEV-37111 set first_link_idx and create conn for every ha_spider involved also return failure when remote query execution fails. MDEV-37111 Fix some result mismatch Later we'll have to find a way (rdiff?) to accommodate both sh and gbh MDEV-37111 spider sh: do not create for partitioned tables neither does gbh except when there's one partition only. MDEV-37111 Ban spider sh if containing any subqueries The same limitation applies to gbh MDEV-37111 spider sh: reset select_column_mode just like gbh MDEV-37111 mtr --record spider.direct_join MDEV-37111 Do not create spider sh if not all tables share the same first connection We have been only checking the first connection. If no tables have HA, and they all use the same remote server, then an sh creation can proceed MDEV-37111 spider sh: sync link idx of dbton_handler and the connection ...so that the table name translation is correct MDEV-37111 add a possible error caused by the spider sh spider error reporting. previous query INSERT INTO t2 SELECT * FROM t3 failed to connect because t1 is self-referencing, though the reported error is ER_WRONG_VALUE_COUNT_ON_ROW from the sql layer. in SELECT * FROM t3 then during optimization (skipped in sh) the previous error gets reported. It's mainly a problem with spider error reporting, so we fix it with a record MDEV-37111 spider sh: check error mode before reporting errors With erm (error_read_mode) an error becomes an empty result with a warning MDEV-37111 spider sh: add checks and set db for udf udf_pushdown passes, but the two ha tests now fail MDEV-37111 spider sh: fix mdev_34541 just a different (non-spider version of the) error MDEV-37111 spider sh: only create if the first link is OK gbh implementation w.r.t. checking remote link status is unnecessarily convoluted. MDEV-37111 spider sh: append correct lock in INSERT...SELECT Also record spider_fixes tests results because the direct_order_limit status variable makes no sense MDEV-37111 spider sh: execute queries that are required by some system variables Whether these queries are needed is a separate question. This fixes failures in sql_mode_mysql and sql_mode_mariadb. For similar reasons, execute start transaction and commit because of test .result file has them. MDEV-37111 spider sh: mtr --record engine_defined_attributes without spider sh, the "FORCE INDEX" hint is appended in ha_spider::append_hint_after_table_sql_part through get_index_max_value as part of the optimization, and gbh is not involved. TODO: consider respecting the hint in spider sh/gbh MDEV-37111 spider sh: do not create if the query has been optimized Check select_lex->first_cond_optimization. It could happen during 2nd and subsequent ps execution when sh is not created in the first ps execution
2577 lines
61 KiB
C++
2577 lines
61 KiB
C++
/* Copyright (C) 2008-2018 Kentoku Shiba
|
|
Copyright (C) 2023 MariaDB plc
|
|
|
|
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 Foundation; version 2 of the License.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA */
|
|
|
|
/**
|
|
@file
|
|
|
|
There are several kinds of spider parameters.
|
|
|
|
- sysvar/thdvar that are not table parameters. These variables do
|
|
not appear in a `SPIDER_SHARE`. Examples include `support_xa` and
|
|
`conn_recycle_mode`. Their values are commonly retrieved by
|
|
`SPIDER_SYSVAR_VALUE_FUNC()` and `SPIDER_THDVAR_VALUE_FUNC()`
|
|
- sysvar/thdvar that are also table parameters. These variables
|
|
commonly appear in a `SPIDER_SHARE`. Examples include
|
|
`read_only_mode` and `use_table_charset`. Table parameter values
|
|
override variable values, and their values are commonly retrieved
|
|
by `SPIDER_SYSVAR_OVERRIDE_VALUE_FUNC()` and
|
|
`SPIDER_THDVAR_OVERRIDE_VALUE_FUNC()`.
|
|
- table parameters that are not sysvar/thdvar. Examples include
|
|
host and username. They are not handled in this file which is only
|
|
concerned with global/session variables
|
|
*/
|
|
|
|
#define MYSQL_SERVER 1
|
|
#include <my_global.h>
|
|
#include "mysql_version.h"
|
|
#include "sql_priv.h"
|
|
#include "probes_mysql.h"
|
|
#include "sql_class.h"
|
|
#include "sql_partition.h"
|
|
#include <my_getopt.h>
|
|
#include "spd_err.h"
|
|
#include "spd_db_include.h"
|
|
#include "spd_include.h"
|
|
#include "ha_spider.h"
|
|
#include "spd_table.h"
|
|
#include "spd_trx.h"
|
|
|
|
extern struct st_mysql_plugin spider_i_s_alloc_mem;
|
|
extern struct st_mysql_plugin spider_i_s_wrapper_protocols;
|
|
extern struct st_maria_plugin spider_i_s_alloc_mem_maria;
|
|
extern struct st_maria_plugin spider_i_s_wrapper_protocols_maria;
|
|
|
|
extern volatile ulonglong spider_mon_table_cache_version;
|
|
extern volatile ulonglong spider_mon_table_cache_version_req;
|
|
|
|
/*
|
|
Define a function returning the value of a global variable.
|
|
*/
|
|
#define SPIDER_SYSVAR_VALUE_FUNC(param_type, param_name) \
|
|
param_type spider_param_ ## param_name() \
|
|
{ \
|
|
return SYSVAR(param_name); \
|
|
}
|
|
|
|
/*
|
|
Define a function returning the value of a session variable.
|
|
*/
|
|
#define SPIDER_THDVAR_VALUE_FUNC(param_type, param_name) \
|
|
param_type spider_param_ ## param_name(THD *thd) \
|
|
{ \
|
|
return THDVAR(thd, param_name); \
|
|
}
|
|
|
|
/*
|
|
Define a function returning the value of a table param that is also a
|
|
global variable.
|
|
|
|
If the table param value is not -1, use the table param value.
|
|
Otherwise if the variable value is not -1, use the variable value.
|
|
Otherwise use the default variable value.
|
|
*/
|
|
#define SPIDER_SYSVAR_OVERRIDE_VALUE_FUNC(param_type, param_name) \
|
|
param_type spider_param_ ## param_name(param_type param_name) \
|
|
{ \
|
|
return param_name != -1 ? param_name : \
|
|
SYSVAR(param_name) != -1 ? SYSVAR(param_name) : \
|
|
MYSQL_SYSVAR_NAME(param_name).def_val; \
|
|
}
|
|
|
|
/*
|
|
Define a function returning the value of a table param that is also a
|
|
session variable.
|
|
|
|
If the table param value is not -1, use the table param value.
|
|
Otherwise if the variable value is not -1, use the variable value.
|
|
Otherwise use the default variable value.
|
|
*/
|
|
#define SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(param_type, param_name) \
|
|
param_type spider_param_ ## param_name(THD* thd, \
|
|
param_type param_name) \
|
|
{ \
|
|
return param_name != -1 ? param_name : \
|
|
THDVAR(thd, param_name) != -1 ? THDVAR(thd, param_name) : \
|
|
MYSQL_SYSVAR_NAME(param_name).def_val; \
|
|
}
|
|
|
|
extern handlerton *spider_hton_ptr;
|
|
static void spider_trx_status_var(THD *thd, SHOW_VAR *var, void *buff,
|
|
ulonglong SPIDER_TRX::*counter)
|
|
{
|
|
DBUG_ENTER("spider_direct_update");
|
|
var->type = SHOW_LONGLONG;
|
|
var->value= buff;
|
|
if (thd != current_thd)
|
|
mysql_mutex_lock(&thd->LOCK_thd_data);
|
|
SPIDER_TRX *trx = (SPIDER_TRX*)thd_get_ha_data(thd, spider_hton_ptr);
|
|
*(ulonglong*)buff= trx ? trx->*counter : 0;
|
|
if (thd != current_thd)
|
|
mysql_mutex_unlock(&thd->LOCK_thd_data);
|
|
DBUG_VOID_RETURN;
|
|
}
|
|
|
|
|
|
static int spider_direct_update(THD *thd, SHOW_VAR *var, void *buff,
|
|
system_status_var *, enum_var_type)
|
|
{
|
|
DBUG_ENTER("spider_direct_update");
|
|
spider_trx_status_var(thd, var, buff, &SPIDER_TRX::direct_update_count);
|
|
DBUG_RETURN(0);
|
|
}
|
|
|
|
static int spider_direct_delete(THD *thd, SHOW_VAR *var, void *buff,
|
|
system_status_var *, enum_var_type)
|
|
{
|
|
DBUG_ENTER("spider_direct_delete");
|
|
spider_trx_status_var(thd, var, buff, &SPIDER_TRX::direct_delete_count);
|
|
DBUG_RETURN(0);
|
|
}
|
|
|
|
static int spider_direct_order_limit(THD *thd, SHOW_VAR *var, void *buff,
|
|
system_status_var *, enum_var_type)
|
|
{
|
|
DBUG_ENTER("spider_direct_order_limit");
|
|
spider_trx_status_var(thd, var, buff, &SPIDER_TRX::direct_order_limit_count);
|
|
DBUG_RETURN(0);
|
|
}
|
|
|
|
static int spider_direct_aggregate(THD *thd, SHOW_VAR *var, void *buff,
|
|
system_status_var *, enum_var_type)
|
|
{
|
|
DBUG_ENTER("spider_direct_aggregate");
|
|
spider_trx_status_var(thd, var, buff, &SPIDER_TRX::direct_aggregate_count);
|
|
DBUG_RETURN(0);
|
|
}
|
|
|
|
static int spider_parallel_search(THD *thd, SHOW_VAR *var, void *buff,
|
|
system_status_var *, enum_var_type)
|
|
{
|
|
DBUG_ENTER("spider_parallel_search");
|
|
spider_trx_status_var(thd, var, buff, &SPIDER_TRX::parallel_search_count);
|
|
DBUG_RETURN(0);
|
|
}
|
|
|
|
struct st_mysql_show_var spider_status_variables[] =
|
|
{
|
|
{"Spider_mon_table_cache_version",
|
|
(char *) &spider_mon_table_cache_version, SHOW_LONGLONG},
|
|
{"Spider_mon_table_cache_version_req",
|
|
(char *) &spider_mon_table_cache_version_req, SHOW_LONGLONG},
|
|
#ifdef SPIDER_HAS_SHOW_SIMPLE_FUNC
|
|
{"Spider_direct_update", (char *) &spider_direct_update, SHOW_SIMPLE_FUNC},
|
|
{"Spider_direct_delete", (char *) &spider_direct_delete, SHOW_SIMPLE_FUNC},
|
|
#else
|
|
{"Spider_direct_update", (char *) &spider_direct_update, SHOW_FUNC},
|
|
{"Spider_direct_delete", (char *) &spider_direct_delete, SHOW_FUNC},
|
|
#endif
|
|
#ifdef SPIDER_HAS_SHOW_SIMPLE_FUNC
|
|
{"Spider_direct_order_limit",
|
|
(char *) &spider_direct_order_limit, SHOW_SIMPLE_FUNC},
|
|
{"Spider_direct_aggregate",
|
|
(char *) &spider_direct_aggregate, SHOW_SIMPLE_FUNC},
|
|
{"Spider_parallel_search",
|
|
(char *) &spider_parallel_search, SHOW_SIMPLE_FUNC},
|
|
#else
|
|
{"Spider_direct_order_limit",
|
|
(char *) &spider_direct_order_limit, SHOW_FUNC},
|
|
{"Spider_direct_aggregate",
|
|
(char *) &spider_direct_aggregate, SHOW_FUNC},
|
|
{"Spider_parallel_search",
|
|
(char *) &spider_parallel_search, SHOW_FUNC},
|
|
#endif
|
|
{NullS, NullS, SHOW_LONG}
|
|
};
|
|
|
|
typedef DECLARE_MYSQL_THDVAR_SIMPLE(thdvar_int_t, int);
|
|
extern bool throw_bounds_warning(THD *thd, const char *name, bool fixed,
|
|
bool is_unsignd, longlong v);
|
|
|
|
static my_bool spider_support_xa;
|
|
static MYSQL_SYSVAR_BOOL(
|
|
support_xa,
|
|
spider_support_xa,
|
|
PLUGIN_VAR_OPCMDARG | PLUGIN_VAR_READONLY,
|
|
"XA support",
|
|
NULL,
|
|
NULL,
|
|
TRUE
|
|
);
|
|
|
|
static void spider_var_deprecated_int(THD *thd, st_mysql_sys_var *,
|
|
void *var_ptr, const void *save)
|
|
{
|
|
int val= *static_cast<const int *>(save);
|
|
*static_cast<int *>(var_ptr)= val;
|
|
if (val == -1)
|
|
{
|
|
push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
|
|
HA_ERR_UNSUPPORTED,
|
|
"The option value -1 (fallback to default) is "
|
|
"deprecated and will be removed in a future release");
|
|
}
|
|
}
|
|
|
|
static void spider_var_deprecated_longlong(THD *thd, st_mysql_sys_var *,
|
|
void *var_ptr, const void *save)
|
|
{
|
|
longlong val= *static_cast<const longlong *>(save);
|
|
*static_cast<longlong *>(var_ptr)= val;
|
|
if (val == -1)
|
|
{
|
|
push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
|
|
HA_ERR_UNSUPPORTED,
|
|
"The option value -1 (fallback to default) is "
|
|
"deprecated and will be removed in a future release");
|
|
}
|
|
}
|
|
|
|
SPIDER_SYSVAR_VALUE_FUNC(my_bool, support_xa)
|
|
|
|
static my_bool spider_connect_mutex;
|
|
static MYSQL_SYSVAR_BOOL(
|
|
connect_mutex,
|
|
spider_connect_mutex,
|
|
PLUGIN_VAR_OPCMDARG,
|
|
"Use mutex at connecting",
|
|
NULL,
|
|
NULL,
|
|
FALSE
|
|
);
|
|
|
|
SPIDER_SYSVAR_VALUE_FUNC(my_bool, connect_mutex)
|
|
|
|
static uint spider_connect_error_interval;
|
|
/*
|
|
0-: interval
|
|
*/
|
|
static MYSQL_SYSVAR_UINT(
|
|
connect_error_interval,
|
|
spider_connect_error_interval,
|
|
PLUGIN_VAR_RQCMDARG,
|
|
"Return same error code until interval passes if connection is failed",
|
|
NULL,
|
|
NULL,
|
|
1,
|
|
0,
|
|
4294967295U,
|
|
0
|
|
);
|
|
|
|
SPIDER_SYSVAR_VALUE_FUNC(uint, connect_error_interval)
|
|
|
|
static uint spider_table_init_error_interval;
|
|
/*
|
|
0-: interval
|
|
*/
|
|
static MYSQL_SYSVAR_UINT(
|
|
table_init_error_interval,
|
|
spider_table_init_error_interval,
|
|
PLUGIN_VAR_RQCMDARG,
|
|
"Return same error code until interval passes if table init is failed",
|
|
NULL,
|
|
NULL,
|
|
1,
|
|
0,
|
|
4294967295U,
|
|
0
|
|
);
|
|
|
|
SPIDER_SYSVAR_VALUE_FUNC(uint, table_init_error_interval)
|
|
|
|
static int spider_use_table_charset;
|
|
/*
|
|
-1 :fallback to default
|
|
0 :use utf8
|
|
1 :use table charset
|
|
*/
|
|
static MYSQL_SYSVAR_INT(
|
|
use_table_charset,
|
|
spider_use_table_charset,
|
|
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
|
|
"Use table charset for remote access",
|
|
NULL,
|
|
spider_var_deprecated_int,
|
|
1,
|
|
-1,
|
|
1,
|
|
0
|
|
);
|
|
|
|
SPIDER_SYSVAR_OVERRIDE_VALUE_FUNC(int, use_table_charset)
|
|
|
|
/*
|
|
0: no recycle
|
|
1: recycle in instance
|
|
2: recycle in thread
|
|
*/
|
|
static MYSQL_THDVAR_UINT(
|
|
conn_recycle_mode, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Connection recycle mode", /* comment */
|
|
NULL, /* check */
|
|
NULL, /* update */
|
|
0, /* def */
|
|
0, /* min */
|
|
2, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_VALUE_FUNC(uint, conn_recycle_mode)
|
|
|
|
/*
|
|
0: weak
|
|
1: strict
|
|
*/
|
|
static MYSQL_THDVAR_UINT(
|
|
conn_recycle_strict, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Strict connection recycle", /* comment */
|
|
NULL, /* check */
|
|
NULL, /* update */
|
|
0, /* def */
|
|
0, /* min */
|
|
1, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_VALUE_FUNC(uint, conn_recycle_strict)
|
|
|
|
/*
|
|
FALSE: no sync
|
|
TRUE: sync
|
|
*/
|
|
static MYSQL_THDVAR_BOOL(
|
|
sync_trx_isolation, /* name */
|
|
PLUGIN_VAR_OPCMDARG, /* opt */
|
|
"Sync transaction isolation level", /* comment */
|
|
NULL, /* check */
|
|
NULL, /* update */
|
|
TRUE /* def */
|
|
);
|
|
|
|
SPIDER_THDVAR_VALUE_FUNC(bool, sync_trx_isolation)
|
|
|
|
/*
|
|
FALSE: no use
|
|
TRUE: use
|
|
*/
|
|
static MYSQL_THDVAR_BOOL(
|
|
use_consistent_snapshot, /* name */
|
|
PLUGIN_VAR_OPCMDARG, /* opt */
|
|
"Use start transaction with consistent snapshot", /* comment */
|
|
NULL, /* check */
|
|
NULL, /* update */
|
|
FALSE /* def */
|
|
);
|
|
|
|
SPIDER_THDVAR_VALUE_FUNC(bool, use_consistent_snapshot)
|
|
|
|
/*
|
|
FALSE: off
|
|
TRUE: on
|
|
*/
|
|
static MYSQL_THDVAR_BOOL(
|
|
internal_xa, /* name */
|
|
PLUGIN_VAR_OPCMDARG, /* opt */
|
|
"Use inner xa transaction", /* comment */
|
|
NULL, /* check */
|
|
NULL, /* update */
|
|
FALSE /* def */
|
|
);
|
|
|
|
SPIDER_THDVAR_VALUE_FUNC(bool, internal_xa)
|
|
|
|
/*
|
|
0 :err when use a spider table
|
|
1 :err when start trx
|
|
2 :start trx with snapshot on remote server(not use xa)
|
|
3 :start xa on remote server(not use trx with snapshot)
|
|
*/
|
|
static MYSQL_THDVAR_UINT(
|
|
internal_xa_snapshot, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Action of inner xa and snapshot both using", /* comment */
|
|
NULL, /* check */
|
|
NULL, /* update */
|
|
0, /* def */
|
|
0, /* min */
|
|
3, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_VALUE_FUNC(uint, internal_xa_snapshot)
|
|
|
|
/*
|
|
0 :off
|
|
1 :continue prepare, commit, rollback if xid not found return
|
|
2 :continue prepare, commit, rollback if all error return
|
|
*/
|
|
static MYSQL_THDVAR_UINT(
|
|
force_commit, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Force prepare, commit, rollback mode", /* comment */
|
|
NULL, /* check */
|
|
NULL, /* update */
|
|
1, /* def */
|
|
0, /* min */
|
|
2, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_VALUE_FUNC(uint, force_commit)
|
|
|
|
/*
|
|
0: register all XA transaction
|
|
1: register only write XA transaction
|
|
*/
|
|
static MYSQL_THDVAR_UINT(
|
|
xa_register_mode, /* name */
|
|
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_DEPRECATED, /* opt */
|
|
"Mode of XA transaction register into system table", /* comment */
|
|
NULL, /* check */
|
|
NULL, /* update */
|
|
1, /* def */
|
|
0, /* min */
|
|
1, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_VALUE_FUNC(uint, xa_register_mode)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0-:offset
|
|
*/
|
|
static MYSQL_THDVAR_LONGLONG(
|
|
internal_offset, /* name */
|
|
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_DEPRECATED, /* opt */
|
|
"Internal offset", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_longlong, /* update */
|
|
0, /* def */
|
|
-1, /* min */
|
|
9223372036854775807LL, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(longlong, internal_offset)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0-:limit
|
|
*/
|
|
static MYSQL_THDVAR_LONGLONG(
|
|
internal_limit, /* name */
|
|
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_DEPRECATED, /* opt */
|
|
"Internal limit", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_longlong, /* update */
|
|
9223372036854775807LL, /* def */
|
|
-1, /* min */
|
|
9223372036854775807LL, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(longlong, internal_limit)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0-:number of rows at a select
|
|
*/
|
|
static MYSQL_THDVAR_LONGLONG(
|
|
split_read, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Number of rows at a select", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_longlong, /* update */
|
|
9223372036854775807LL, /* def */
|
|
-1, /* min */
|
|
9223372036854775807LL, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(longlong, split_read)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0 :doesn't use "offset" and "limit" for "split_read"
|
|
1-:magnification
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
semi_split_read, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Use offset and limit parameter in SQL for split_read parameter", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
2, /* def */
|
|
-1, /* min */
|
|
2147483647, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(double, semi_split_read)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0-:the limit value
|
|
*/
|
|
static MYSQL_THDVAR_LONGLONG(
|
|
semi_split_read_limit, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"The limit value for semi_split_read", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_longlong, /* update */
|
|
9223372036854775807LL, /* def */
|
|
-1, /* min */
|
|
9223372036854775807LL, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(longlong, semi_split_read_limit)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0 :no alloc
|
|
1-:alloc size
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
init_sql_alloc_size, /* name */
|
|
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_DEPRECATED, /* opt */
|
|
"Initial sql string alloc size", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
1024, /* def */
|
|
-1, /* min */
|
|
2147483647, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(int, init_sql_alloc_size)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0 :off
|
|
1 :on
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
reset_sql_alloc, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Reset sql string alloc after execute", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
1, /* def */
|
|
-1, /* min */
|
|
1, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(int, reset_sql_alloc)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0 :off
|
|
1 :on
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
multi_split_read, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Split read mode for multi range", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
100, /* def */
|
|
-1, /* min */
|
|
2147483647, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(int, multi_split_read)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0-:max order columns
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
max_order, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Max columns for order by", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
32767, /* def */
|
|
-1, /* min */
|
|
32767, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(int, max_order)
|
|
|
|
/*
|
|
-1 :off
|
|
0 :read uncommitted
|
|
1 :read committed
|
|
2 :repeatable read
|
|
3 :serializable
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
semi_trx_isolation, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Transaction isolation level during execute a sql", /* comment */
|
|
NULL, /* check */
|
|
NULL, /* update */
|
|
-1, /* def */
|
|
-1, /* min */
|
|
3, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_VALUE_FUNC(int, semi_trx_isolation)
|
|
|
|
static int spider_param_semi_table_lock_check(
|
|
MYSQL_THD thd,
|
|
struct st_mysql_sys_var *var,
|
|
void *save,
|
|
struct st_mysql_value *value
|
|
) {
|
|
int error_num;
|
|
SPIDER_TRX *trx;
|
|
my_bool fixed;
|
|
long long tmp;
|
|
struct my_option options;
|
|
DBUG_ENTER("spider_param_semi_table_lock_check");
|
|
if (!(trx = spider_get_trx((THD *) thd, TRUE, &error_num)))
|
|
DBUG_RETURN(error_num);
|
|
if (trx->locked_connections)
|
|
{
|
|
my_message(ER_SPIDER_ALTER_BEFORE_UNLOCK_NUM,
|
|
ER_SPIDER_ALTER_BEFORE_UNLOCK_STR, MYF(0));
|
|
DBUG_RETURN(ER_SPIDER_ALTER_BEFORE_UNLOCK_NUM);
|
|
}
|
|
value->val_int(value, &tmp);
|
|
options.deprecation_substitute = 0;
|
|
options.var_type = GET_INT;
|
|
options.def_value = ((MYSQL_SYSVAR_NAME(thdvar_int_t) *) var)->def_val;
|
|
options.min_value = ((MYSQL_SYSVAR_NAME(thdvar_int_t) *) var)->min_val;
|
|
options.max_value = ((MYSQL_SYSVAR_NAME(thdvar_int_t) *) var)->max_val;
|
|
options.block_size =
|
|
(long) ((MYSQL_SYSVAR_NAME(thdvar_int_t) *) var)->blk_sz;
|
|
options.arg_type = REQUIRED_ARG;
|
|
*((int *) save) = (int) getopt_ll_limit_value(tmp, &options, &fixed);
|
|
DBUG_RETURN(throw_bounds_warning(thd,
|
|
((MYSQL_SYSVAR_NAME(thdvar_int_t) *) var)->name, fixed, FALSE,
|
|
(longlong) tmp));
|
|
}
|
|
|
|
/*
|
|
0 :off
|
|
1 :on
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
semi_table_lock, /* name */
|
|
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_DEPRECATED, /* opt */
|
|
"Table lock during execute a sql", /* comment */
|
|
&spider_param_semi_table_lock_check, /* check */
|
|
NULL, /* update */
|
|
0, /* def */
|
|
0, /* min */
|
|
1, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(int, semi_table_lock)
|
|
|
|
static int spider_param_semi_table_lock_connection_check(
|
|
MYSQL_THD thd,
|
|
struct st_mysql_sys_var *var,
|
|
void *save,
|
|
struct st_mysql_value *value
|
|
) {
|
|
int error_num;
|
|
SPIDER_TRX *trx;
|
|
my_bool fixed;
|
|
long long tmp;
|
|
struct my_option options;
|
|
DBUG_ENTER("spider_param_semi_table_lock_connection_check");
|
|
if (!(trx = spider_get_trx((THD *) thd, TRUE, &error_num)))
|
|
DBUG_RETURN(error_num);
|
|
if (trx->locked_connections)
|
|
{
|
|
my_message(ER_SPIDER_ALTER_BEFORE_UNLOCK_NUM,
|
|
ER_SPIDER_ALTER_BEFORE_UNLOCK_STR, MYF(0));
|
|
DBUG_RETURN(ER_SPIDER_ALTER_BEFORE_UNLOCK_NUM);
|
|
}
|
|
value->val_int(value, &tmp);
|
|
options.deprecation_substitute = 0;
|
|
options.var_type = GET_INT;
|
|
options.def_value = ((MYSQL_SYSVAR_NAME(thdvar_int_t) *) var)->def_val;
|
|
options.min_value = ((MYSQL_SYSVAR_NAME(thdvar_int_t) *) var)->min_val;
|
|
options.max_value = ((MYSQL_SYSVAR_NAME(thdvar_int_t) *) var)->max_val;
|
|
options.block_size =
|
|
(long) ((MYSQL_SYSVAR_NAME(thdvar_int_t) *) var)->blk_sz;
|
|
options.arg_type = REQUIRED_ARG;
|
|
*((int *) save) = (int) getopt_ll_limit_value(tmp, &options, &fixed);
|
|
DBUG_RETURN(throw_bounds_warning(thd,
|
|
((MYSQL_SYSVAR_NAME(thdvar_int_t) *) var)->name, fixed, FALSE,
|
|
(longlong) tmp));
|
|
}
|
|
|
|
/*
|
|
-1 :off
|
|
0 :use same connection
|
|
1 :use different connection
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
semi_table_lock_connection, /* name */
|
|
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_DEPRECATED, /* opt */
|
|
"Use different connection if semi_table_lock is enabled", /* comment */
|
|
&spider_param_semi_table_lock_connection_check, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
1, /* def */
|
|
-1, /* min */
|
|
1, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(int, semi_table_lock_connection)
|
|
|
|
/*
|
|
0-:block_size
|
|
*/
|
|
static MYSQL_THDVAR_UINT(
|
|
block_size, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Index block size", /* comment */
|
|
NULL, /* check */
|
|
NULL, /* update */
|
|
16384, /* def */
|
|
0, /* min */
|
|
4294967295U, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_VALUE_FUNC(uint, block_size)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0 :off
|
|
1 :lock in share mode
|
|
2 :for update
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
selupd_lock_mode, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Lock for select with update", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
1, /* def */
|
|
-1, /* min */
|
|
2, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(int, selupd_lock_mode)
|
|
|
|
/*
|
|
FALSE: no sync
|
|
TRUE: sync
|
|
*/
|
|
static MYSQL_THDVAR_BOOL(
|
|
sync_autocommit, /* name */
|
|
PLUGIN_VAR_OPCMDARG, /* opt */
|
|
"Sync autocommit", /* comment */
|
|
NULL, /* check */
|
|
NULL, /* update */
|
|
TRUE /* def */
|
|
);
|
|
|
|
SPIDER_THDVAR_VALUE_FUNC(bool, sync_autocommit)
|
|
|
|
/*
|
|
FALSE: not use
|
|
TRUE: use
|
|
*/
|
|
static MYSQL_THDVAR_BOOL(
|
|
use_default_database, /* name */
|
|
PLUGIN_VAR_OPCMDARG, /* opt */
|
|
"Use default database", /* comment */
|
|
NULL, /* check */
|
|
NULL, /* update */
|
|
TRUE /* def */
|
|
);
|
|
|
|
SPIDER_THDVAR_VALUE_FUNC(bool, use_default_database)
|
|
|
|
/*
|
|
-1 :don't know or does not matter; don't send 'SET SQL_LOG_OFF' statement
|
|
0 :do send 'SET SQL_LOG_OFF 0' statement to data nodes
|
|
1 :do send 'SET SQL_LOG_OFF 1' statement to data nodes
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
internal_sql_log_off, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Manage SQL_LOG_OFF mode statement to the data nodes", /* comment */
|
|
NULL, /* check */
|
|
NULL, /* update */
|
|
-1, /* default */
|
|
-1, /* min */
|
|
1, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_VALUE_FUNC(int, internal_sql_log_off)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0-:bulk insert size
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
bulk_size, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Bulk insert size", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
16000, /* def */
|
|
-1, /* min */
|
|
2147483647, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(int, bulk_size)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0 : Send "update" and "delete" statements one by one.
|
|
1 : Send collected multiple "update" and "delete" statements.
|
|
(Collected statements are sent one by one)
|
|
2 : Send collected multiple "update" and "delete" statements.
|
|
(Collected statements are sent together)
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
bulk_update_mode, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"The mode of bulk updating and deleting", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
0, /* def */
|
|
-1, /* min */
|
|
2, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(int, bulk_update_mode)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0-:bulk update size
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
bulk_update_size, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Bulk update size", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
16000, /* def */
|
|
-1, /* min */
|
|
2147483647, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(int, bulk_update_size)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0-:buffer size
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
buffer_size, /* name */
|
|
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_DEPRECATED, /* opt */
|
|
"Buffer size", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
16000, /* def */
|
|
-1, /* min */
|
|
2147483647, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(int, buffer_size)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0 :off
|
|
1 :on
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
internal_optimize, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Execute optimize to remote server", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
0, /* def */
|
|
-1, /* min */
|
|
1, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(int, internal_optimize)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0 :off
|
|
1 :on
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
internal_optimize_local, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Execute optimize to remote server with local", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
0, /* def */
|
|
-1, /* min */
|
|
1, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(int, internal_optimize_local)
|
|
|
|
/*
|
|
FALSE: off
|
|
TRUE: on
|
|
*/
|
|
static MYSQL_THDVAR_BOOL(
|
|
use_flash_logs, /* name */
|
|
PLUGIN_VAR_OPCMDARG, /* opt */
|
|
"Execute flush logs to remote server", /* comment */
|
|
NULL, /* check */
|
|
NULL, /* update */
|
|
FALSE /* def */
|
|
);
|
|
|
|
SPIDER_THDVAR_VALUE_FUNC(bool, use_flash_logs)
|
|
|
|
/*
|
|
0 :off
|
|
1 :flush tables with read lock
|
|
2 :flush tables another connection
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
use_snapshot_with_flush_tables, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Execute optimize to remote server with local", /* comment */
|
|
NULL, /* check */
|
|
NULL, /* update */
|
|
0, /* def */
|
|
0, /* min */
|
|
2, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_VALUE_FUNC(int, use_snapshot_with_flush_tables)
|
|
|
|
/*
|
|
FALSE: off
|
|
TRUE: on
|
|
*/
|
|
static MYSQL_THDVAR_BOOL(
|
|
use_all_conns_snapshot, /* name */
|
|
PLUGIN_VAR_OPCMDARG, /* opt */
|
|
"When start trx with snapshot, it send to all connections", /* comment */
|
|
NULL, /* check */
|
|
NULL, /* update */
|
|
FALSE /* def */
|
|
);
|
|
|
|
SPIDER_THDVAR_VALUE_FUNC(bool, use_all_conns_snapshot)
|
|
|
|
/*
|
|
FALSE: off
|
|
TRUE: on
|
|
*/
|
|
static MYSQL_THDVAR_BOOL(
|
|
lock_exchange, /* name */
|
|
PLUGIN_VAR_OPCMDARG, /* opt */
|
|
"Exchange select lock to lock tables", /* comment */
|
|
NULL, /* check */
|
|
NULL, /* update */
|
|
FALSE /* def */
|
|
);
|
|
|
|
SPIDER_THDVAR_VALUE_FUNC(bool, lock_exchange)
|
|
|
|
/*
|
|
FALSE: off
|
|
TRUE: on
|
|
*/
|
|
static MYSQL_THDVAR_BOOL(
|
|
internal_unlock, /* name */
|
|
PLUGIN_VAR_OPCMDARG, /* opt */
|
|
"Unlock tables for using connections in sql", /* comment */
|
|
NULL, /* check */
|
|
NULL, /* update */
|
|
FALSE /* def */
|
|
);
|
|
|
|
SPIDER_THDVAR_VALUE_FUNC(bool, internal_unlock)
|
|
|
|
/*
|
|
FALSE: off
|
|
TRUE: on
|
|
*/
|
|
static MYSQL_THDVAR_BOOL(
|
|
semi_trx, /* name */
|
|
PLUGIN_VAR_OPCMDARG, /* opt */
|
|
"Take a transaction during execute a sql", /* comment */
|
|
NULL, /* check */
|
|
NULL, /* update */
|
|
TRUE /* def */
|
|
);
|
|
|
|
SPIDER_THDVAR_VALUE_FUNC(bool, semi_trx)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0-:seconds of timeout
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
connect_timeout, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Wait timeout of connecting to remote server", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
6, /* def */
|
|
-1, /* min */
|
|
2147483647, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(int, connect_timeout)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0-:seconds of timeout
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
net_read_timeout, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Wait timeout of receiving data from remote server", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
600, /* def */
|
|
-1, /* min */
|
|
2147483647, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(int, net_read_timeout)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0-:seconds of timeout
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
net_write_timeout, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Wait timeout of sending data to remote server", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
600, /* def */
|
|
-1, /* min */
|
|
2147483647, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(int, net_write_timeout)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0 :It acquires it collectively.
|
|
1 :Acquisition one by one.If it discontinues once, and it will need
|
|
it later, it retrieves it again when there is interrupt on the way.
|
|
2 :Acquisition one by one.Interrupt is waited for until end of getting
|
|
result when there is interrupt on the way.
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
quick_mode, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"The retrieval result from a remote server is acquired by acquisition one by one", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
3, /* def */
|
|
-1, /* min */
|
|
3, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(int, quick_mode)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0-:number of records
|
|
*/
|
|
static MYSQL_THDVAR_LONGLONG(
|
|
quick_page_size, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Number of records in a page when acquisition one by one", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
1024, /* def */
|
|
-1, /* min */
|
|
9223372036854775807LL, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(longlong, quick_page_size)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0-:the limitation of memory size
|
|
*/
|
|
static MYSQL_THDVAR_LONGLONG(
|
|
quick_page_byte, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"The limitation of memory size in a page when acquisition one by one", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
10485760, /* def */
|
|
-1, /* min */
|
|
9223372036854775807LL, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(longlong, quick_page_byte)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0 :It doesn't use low memory mode.
|
|
1 :It uses low memory mode.
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
low_mem_read, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Use low memory mode when SQL(SELECT) internally issued to a remote server is executed and get a result list", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
1, /* def */
|
|
-1, /* min */
|
|
1, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(int, low_mem_read)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0 :Use index columns if select statement can solve by using index,
|
|
otherwise use all columns.
|
|
1 :Use columns that are judged necessary.
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
select_column_mode, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"The mode of using columns at select clause", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
1, /* def */
|
|
-1, /* min */
|
|
1, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(int, select_column_mode)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0 :background search is disabled
|
|
1 :background search is used if search with no lock
|
|
2 :background search is used if search with no lock or shared lock
|
|
3 :background search is used regardless of the lock
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
bgs_mode, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Mode of background search", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
0, /* def */
|
|
-1, /* min */
|
|
3, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(int, bgs_mode)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0 :records is gotten usually
|
|
1-:number of records
|
|
*/
|
|
static MYSQL_THDVAR_LONGLONG(
|
|
bgs_first_read, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Number of first read records when background search is used", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
2, /* def */
|
|
-1, /* min */
|
|
9223372036854775807LL, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(longlong, bgs_first_read)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0 :records is gotten usually
|
|
1-:number of records
|
|
*/
|
|
static MYSQL_THDVAR_LONGLONG(
|
|
bgs_second_read, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Number of second read records when background search is used", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
100, /* def */
|
|
-1, /* min */
|
|
9223372036854775807LL, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(longlong, bgs_second_read)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0 :records is gotten usually
|
|
1-:number of records
|
|
*/
|
|
static MYSQL_THDVAR_LONGLONG(
|
|
first_read, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Number of first read records", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
0, /* def */
|
|
-1, /* min */
|
|
9223372036854775807LL, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(longlong, first_read)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0 :records is gotten usually
|
|
1-:number of records
|
|
*/
|
|
static MYSQL_THDVAR_LONGLONG(
|
|
second_read, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Number of second read records", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
0, /* def */
|
|
-1, /* min */
|
|
9223372036854775807LL, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(longlong, second_read)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0 :always get the newest information
|
|
1-:interval
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
crd_interval, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Interval of cardinality confirmation.(second)", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
51, /* def */
|
|
-1, /* min */
|
|
2147483647, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(double, crd_interval)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0 :use table parameter
|
|
1 :use show command
|
|
2 :use information schema
|
|
3 :use explain
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
crd_mode, /* name */
|
|
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_DEPRECATED, /* opt */
|
|
"Mode of cardinality confirmation", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
1, /* def */
|
|
-1, /* min */
|
|
3, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(int, crd_mode)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0 :No synchronization.
|
|
1 :Cardinality is synchronized when opening a table.
|
|
Then no synchronization.
|
|
2 :Synchronization.
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
crd_sync, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Cardinality synchronization in partitioned table", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
0, /* def */
|
|
-1, /* min */
|
|
2, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(int, crd_sync)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0 :The crd_weight is used as a fixed value.
|
|
1 :The crd_weight is used as an addition value.
|
|
2 :The crd_weight is used as a multiplication value.
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
crd_type, /* name */
|
|
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_DEPRECATED, /* opt */
|
|
"Type of cardinality calculation", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
2, /* def */
|
|
-1, /* min */
|
|
2, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(int, crd_type)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0-:weight
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
crd_weight, /* name */
|
|
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_DEPRECATED, /* opt */
|
|
"Weight coefficient to calculate effectiveness of index from cardinality of column", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
2, /* def */
|
|
-1, /* min */
|
|
2147483647, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(double, crd_weight)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0 :Background confirmation is disabled
|
|
1 :Background confirmation is enabled (create thread per table/partition)
|
|
2 :Background confirmation is enabled (use static threads)
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
crd_bg_mode, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Mode of cardinality confirmation at background", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
2, /* def */
|
|
-1, /* min */
|
|
2, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(int, crd_bg_mode)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0 :always get the newest information
|
|
1-:interval
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
sts_interval, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Interval of table state confirmation.(second)", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
10, /* def */
|
|
-1, /* min */
|
|
2147483647, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(double, sts_interval)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0 :use table parameter
|
|
1 :use show command
|
|
2 :use information schema
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
sts_mode, /* name */
|
|
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_DEPRECATED, /* opt */
|
|
"Mode of table state confirmation", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
1, /* def */
|
|
-1, /* min */
|
|
2, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(int, sts_mode)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0 :No synchronization.
|
|
1 :Table stat is synchronized when opening a table.
|
|
Then no synchronization.
|
|
2 :Synchronization.
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
sts_sync, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Table state synchronization in partitioned table", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
0, /* def */
|
|
-1, /* min */
|
|
2, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(int, sts_sync)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0 :Background confirmation is disabled
|
|
1 :Background confirmation is enabled (create thread per table/partition)
|
|
2 :Background confirmation is enabled (use static threads)
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
sts_bg_mode, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Mode of table state confirmation at background", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
2, /* def */
|
|
-1, /* min */
|
|
2, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(int, sts_bg_mode)
|
|
|
|
/*
|
|
0 :always ping
|
|
1-:interval
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
ping_interval_at_trx_start, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Ping interval at transaction start", /* comment */
|
|
NULL, /* check */
|
|
NULL, /* update */
|
|
3600, /* def */
|
|
0, /* min */
|
|
2147483647, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_VALUE_FUNC(double, ping_interval_at_trx_start)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0 :normal mode
|
|
1 :quick mode
|
|
2 :set 0 value
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
auto_increment_mode, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Mode of auto increment", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
0, /* def */
|
|
-1, /* min */
|
|
3, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(int, auto_increment_mode)
|
|
|
|
/*
|
|
FALSE: off
|
|
TRUE: on
|
|
*/
|
|
static MYSQL_THDVAR_BOOL(
|
|
same_server_link, /* name */
|
|
PLUGIN_VAR_OPCMDARG, /* opt */
|
|
"Permit one to link same server's table", /* comment */
|
|
NULL, /* check */
|
|
NULL, /* update */
|
|
FALSE /* def */
|
|
);
|
|
|
|
SPIDER_THDVAR_VALUE_FUNC(bool, same_server_link)
|
|
|
|
/*
|
|
FALSE: transmits
|
|
TRUE: don't transmit
|
|
*/
|
|
static MYSQL_THDVAR_BOOL(
|
|
local_lock_table, /* name */
|
|
PLUGIN_VAR_OPCMDARG, /* opt */
|
|
"Remote server transmission when lock tables is executed at local",
|
|
/* comment */
|
|
NULL, /* check */
|
|
NULL, /* update */
|
|
FALSE /* def */
|
|
);
|
|
|
|
SPIDER_THDVAR_VALUE_FUNC(bool, local_lock_table)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0 :don't transmit
|
|
1 :transmits
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
use_pushdown_udf, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Remote server transmission existence when UDF is used at condition", /* comment */
|
|
NULL, /* check */
|
|
NULL, /* update */
|
|
0, /* def */
|
|
-1, /* min */
|
|
1, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(int, use_pushdown_udf)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0 :duplicate check on local server
|
|
1 :avoid duplicate check on local server
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
direct_dup_insert, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Execute \"REPLACE\" and \"INSERT IGNORE\" on remote server and avoid duplicate check on local server", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
0, /* def */
|
|
-1, /* min */
|
|
1, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(int, direct_dup_insert)
|
|
|
|
static char *spider_remote_access_charset;
|
|
/*
|
|
*/
|
|
static MYSQL_SYSVAR_STR(
|
|
remote_access_charset,
|
|
spider_remote_access_charset,
|
|
PLUGIN_VAR_MEMALLOC |
|
|
PLUGIN_VAR_RQCMDARG,
|
|
"Set remote access charset at connecting for improvement performance of connection if you know",
|
|
NULL,
|
|
NULL,
|
|
NULL
|
|
);
|
|
|
|
SPIDER_SYSVAR_VALUE_FUNC(char*, remote_access_charset)
|
|
|
|
static int spider_remote_autocommit;
|
|
/*
|
|
-1 :don't set
|
|
0 :autocommit = 0
|
|
1 :autocommit = 1
|
|
*/
|
|
static MYSQL_SYSVAR_INT(
|
|
remote_autocommit,
|
|
spider_remote_autocommit,
|
|
PLUGIN_VAR_RQCMDARG,
|
|
"Set autocommit mode at connecting for improvement performance of connection if you know",
|
|
NULL,
|
|
NULL,
|
|
-1,
|
|
-1,
|
|
1,
|
|
0
|
|
);
|
|
|
|
SPIDER_SYSVAR_VALUE_FUNC(int, remote_autocommit)
|
|
|
|
static char *spider_remote_time_zone;
|
|
/*
|
|
*/
|
|
static MYSQL_SYSVAR_STR(
|
|
remote_time_zone,
|
|
spider_remote_time_zone,
|
|
PLUGIN_VAR_MEMALLOC |
|
|
PLUGIN_VAR_RQCMDARG,
|
|
"Set remote time_zone at connecting for improvement performance of connection if you know",
|
|
NULL,
|
|
NULL,
|
|
NULL
|
|
);
|
|
|
|
SPIDER_SYSVAR_VALUE_FUNC(char *, remote_time_zone)
|
|
|
|
static int spider_remote_sql_log_off;
|
|
/*
|
|
-1 :don't know the value on all data nodes, or does not matter
|
|
0 :sql_log_off = 0 on all data nodes
|
|
1 :sql_log_off = 1 on all data nodes
|
|
*/
|
|
static MYSQL_SYSVAR_INT(
|
|
remote_sql_log_off,
|
|
spider_remote_sql_log_off,
|
|
PLUGIN_VAR_RQCMDARG,
|
|
"Set SQL_LOG_OFF mode on connecting for improved performance of connection, if you know",
|
|
NULL,
|
|
NULL,
|
|
-1,
|
|
-1,
|
|
1,
|
|
0
|
|
);
|
|
|
|
SPIDER_SYSVAR_VALUE_FUNC(int, remote_sql_log_off)
|
|
|
|
static int spider_remote_trx_isolation;
|
|
/*
|
|
-1 :don't set
|
|
0 :READ UNCOMMITTED
|
|
1 :READ COMMITTED
|
|
2 :REPEATABLE READ
|
|
3 :SERIALIZABLE
|
|
*/
|
|
static MYSQL_SYSVAR_INT(
|
|
remote_trx_isolation,
|
|
spider_remote_trx_isolation,
|
|
PLUGIN_VAR_RQCMDARG,
|
|
"Set transaction isolation level at connecting for improvement performance of connection if you know",
|
|
NULL,
|
|
NULL,
|
|
-1,
|
|
-1,
|
|
3,
|
|
0
|
|
);
|
|
|
|
SPIDER_SYSVAR_VALUE_FUNC(int, remote_trx_isolation)
|
|
|
|
static char *spider_remote_default_database;
|
|
/*
|
|
*/
|
|
static MYSQL_SYSVAR_STR(
|
|
remote_default_database,
|
|
spider_remote_default_database,
|
|
PLUGIN_VAR_MEMALLOC |
|
|
PLUGIN_VAR_RQCMDARG,
|
|
"Set remote database at connecting for improvement performance of connection if you know",
|
|
NULL,
|
|
NULL,
|
|
NULL
|
|
);
|
|
|
|
SPIDER_SYSVAR_VALUE_FUNC(char *, remote_default_database)
|
|
|
|
/*
|
|
0-:connect retry interval (micro second)
|
|
*/
|
|
static MYSQL_THDVAR_LONGLONG(
|
|
connect_retry_interval, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Connect retry interval", /* comment */
|
|
NULL, /* check */
|
|
NULL, /* update */
|
|
1000, /* def */
|
|
0, /* min */
|
|
9223372036854775807LL, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
longlong spider_param_connect_retry_interval(
|
|
THD *thd
|
|
) {
|
|
DBUG_ENTER("spider_param_connect_retry_interval");
|
|
if (thd)
|
|
DBUG_RETURN(THDVAR(thd, connect_retry_interval));
|
|
DBUG_RETURN(0);
|
|
}
|
|
|
|
/*
|
|
0-:connect retry count
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
connect_retry_count, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Connect retry count", /* comment */
|
|
NULL, /* check */
|
|
NULL, /* update */
|
|
2, /* def */
|
|
0, /* min */
|
|
2147483647, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
int spider_param_connect_retry_count(
|
|
THD *thd
|
|
) {
|
|
DBUG_ENTER("spider_param_connect_retry_count");
|
|
if (thd)
|
|
DBUG_RETURN(THDVAR(thd, connect_retry_count));
|
|
DBUG_RETURN(0);
|
|
}
|
|
|
|
/*
|
|
*/
|
|
static MYSQL_THDVAR_STR(
|
|
bka_engine, /* name */
|
|
PLUGIN_VAR_MEMALLOC |
|
|
PLUGIN_VAR_RQCMDARG,
|
|
"Temporary table's engine for BKA", /* comment */
|
|
NULL, /* check */
|
|
NULL, /* update */
|
|
NULL /* def */
|
|
);
|
|
|
|
char *spider_param_bka_engine(
|
|
THD *thd,
|
|
char *bka_engine
|
|
) {
|
|
DBUG_ENTER("spider_param_bka_engine");
|
|
DBUG_RETURN(bka_engine ? bka_engine : THDVAR(thd, bka_engine));
|
|
}
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0 :use union all
|
|
1 :use temporary table
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
bka_mode, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Mode of BKA for Spider", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
1, /* def */
|
|
-1, /* min */
|
|
2, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(int, bka_mode)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0 :return error if error
|
|
1 :return 0 record if error
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
error_read_mode, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Read error mode if error", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
0, /* def */
|
|
-1, /* min */
|
|
1, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(int, error_read_mode)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0 :return error if error
|
|
1 :return 0 record if error
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
error_write_mode, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Write error mode if error", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
0, /* def */
|
|
-1, /* min */
|
|
1, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(int, error_write_mode)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0 :not skip
|
|
1 :skip
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
skip_default_condition, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Skip generating internal default condition", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
0, /* def */
|
|
-1, /* min */
|
|
1, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(int, skip_default_condition)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0 :not skip
|
|
1 :skip parallel search if query is not SELECT statement
|
|
2 :skip parallel search if query has SQL_NO_CACHE
|
|
3 :1+2
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
skip_parallel_search, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Skip parallel search by specific conditions", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
0, /* def */
|
|
-1, /* min */
|
|
3, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(int, skip_parallel_search)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0 :not send directly
|
|
1-:send directly
|
|
*/
|
|
static MYSQL_THDVAR_LONGLONG(
|
|
direct_order_limit, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Send 'ORDER BY' and 'LIMIT' to remote server directly", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_longlong, /* update */
|
|
9223372036854775807LL, /* def */
|
|
-1, /* min */
|
|
9223372036854775807LL, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(longlong, direct_order_limit)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0 :writable
|
|
1 :read only
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
read_only_mode, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Read only", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
0, /* def */
|
|
-1, /* min */
|
|
1, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(int, read_only_mode)
|
|
|
|
static my_bool spider_general_log;
|
|
static MYSQL_SYSVAR_BOOL(
|
|
general_log,
|
|
spider_general_log,
|
|
PLUGIN_VAR_OPCMDARG,
|
|
"Log query to remote server in general log",
|
|
NULL,
|
|
NULL,
|
|
FALSE
|
|
);
|
|
|
|
SPIDER_SYSVAR_VALUE_FUNC(my_bool, general_log)
|
|
|
|
/*
|
|
FALSE: no pushdown hints
|
|
TRUE: pushdown hints
|
|
*/
|
|
static MYSQL_THDVAR_BOOL(
|
|
index_hint_pushdown, /* name */
|
|
PLUGIN_VAR_OPCMDARG, /* opt */
|
|
"switch to control if push down index hint, like force_index", /* comment */
|
|
NULL, /* check */
|
|
NULL, /* update */
|
|
FALSE /* def */
|
|
);
|
|
|
|
SPIDER_THDVAR_VALUE_FUNC(my_bool, index_hint_pushdown)
|
|
|
|
static uint spider_max_connections;
|
|
static MYSQL_SYSVAR_UINT(
|
|
max_connections,
|
|
spider_max_connections,
|
|
PLUGIN_VAR_RQCMDARG,
|
|
"the values, as the max conncetion from spider to remote mysql. Default 0, mean unlimit the connections",
|
|
NULL,
|
|
NULL,
|
|
0, /* def */
|
|
0, /* min */
|
|
99999, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_SYSVAR_VALUE_FUNC(uint, max_connections)
|
|
|
|
static uint spider_conn_wait_timeout;
|
|
static MYSQL_SYSVAR_UINT(
|
|
conn_wait_timeout,
|
|
spider_conn_wait_timeout,
|
|
PLUGIN_VAR_RQCMDARG,
|
|
"the values, as the max waiting time when spider get a remote conn",
|
|
NULL,
|
|
NULL,
|
|
10, /* def */
|
|
0, /* min */
|
|
1000, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_SYSVAR_VALUE_FUNC(uint, conn_wait_timeout)
|
|
|
|
static uint spider_log_result_errors;
|
|
/*
|
|
0: no log
|
|
1: log error
|
|
2: log warning summary
|
|
3: log warning
|
|
4: log info
|
|
*/
|
|
static MYSQL_SYSVAR_UINT(
|
|
log_result_errors,
|
|
spider_log_result_errors,
|
|
PLUGIN_VAR_RQCMDARG,
|
|
"Log error from remote server in error log",
|
|
NULL,
|
|
NULL,
|
|
0,
|
|
0,
|
|
4,
|
|
0
|
|
);
|
|
|
|
SPIDER_SYSVAR_VALUE_FUNC(uint, log_result_errors)
|
|
|
|
static uint spider_log_result_error_with_sql;
|
|
/*
|
|
0: no log
|
|
1: log spider sql at logging result errors
|
|
2: log user sql at logging result errors
|
|
3: log both sql at logging result errors
|
|
*/
|
|
static MYSQL_SYSVAR_UINT(
|
|
log_result_error_with_sql,
|
|
spider_log_result_error_with_sql,
|
|
PLUGIN_VAR_RQCMDARG,
|
|
"Log sql at logging result errors",
|
|
NULL,
|
|
NULL,
|
|
0,
|
|
0,
|
|
3,
|
|
0
|
|
);
|
|
|
|
SPIDER_SYSVAR_VALUE_FUNC(uint, log_result_error_with_sql)
|
|
|
|
/*
|
|
0: server_id + thread_id
|
|
1: server_id + thread_id + query_id
|
|
*/
|
|
static MYSQL_THDVAR_UINT(
|
|
internal_xa_id_type, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"The type of internal_xa id", /* comment */
|
|
NULL, /* check */
|
|
NULL, /* update */
|
|
0, /* def */
|
|
0, /* min */
|
|
1, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_VALUE_FUNC(uint, internal_xa_id_type)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0 :OFF
|
|
1 :automatic channel
|
|
2-63 :use custom channel
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
casual_read, /* name */
|
|
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_DEPRECATED, /* opt */
|
|
"Read casually if it is possible", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
0, /* def */
|
|
-1, /* min */
|
|
63, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(int, casual_read)
|
|
|
|
static my_bool spider_dry_access;
|
|
static MYSQL_SYSVAR_BOOL(
|
|
dry_access,
|
|
spider_dry_access,
|
|
PLUGIN_VAR_OPCMDARG | PLUGIN_VAR_READONLY,
|
|
"dry access",
|
|
NULL,
|
|
NULL,
|
|
FALSE
|
|
);
|
|
|
|
SPIDER_SYSVAR_VALUE_FUNC(my_bool, dry_access)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0 :fast
|
|
1 :correct delete row number
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
delete_all_rows_type, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"The type of delete_all_rows", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
1, /* def */
|
|
-1, /* min */
|
|
1, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(int, delete_all_rows_type)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0 :compact
|
|
1 :add original table name
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
bka_table_name_type, /* name */
|
|
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_DEPRECATED, /* opt */
|
|
"The type of temporary table name for bka", /* comment */
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
0, /* def */
|
|
-1, /* min */
|
|
1, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(int, bka_table_name_type)
|
|
|
|
/*
|
|
-1 :fallback to default
|
|
0 :off
|
|
1 :on
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
use_cond_other_than_pk_for_update, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Use all conditions even if condition has pk", /* comment */
|
|
NULL, /* check */
|
|
NULL, /* update */
|
|
1, /* def */
|
|
0, /* min */
|
|
1, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_VALUE_FUNC(int, use_cond_other_than_pk_for_update)
|
|
|
|
static int spider_store_last_sts;
|
|
/*
|
|
-1 : fallback to default
|
|
0 : do not store
|
|
1 : do store
|
|
*/
|
|
static MYSQL_SYSVAR_INT(
|
|
store_last_sts,
|
|
spider_store_last_sts,
|
|
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_DEPRECATED,
|
|
"Store last sts result into system table",
|
|
NULL,
|
|
spider_var_deprecated_int,
|
|
1,
|
|
-1,
|
|
1,
|
|
0
|
|
);
|
|
|
|
SPIDER_SYSVAR_OVERRIDE_VALUE_FUNC(int, store_last_sts)
|
|
|
|
static int spider_store_last_crd;
|
|
/*
|
|
-1 : fallback to default
|
|
0 : do not store
|
|
1 : do store
|
|
*/
|
|
static MYSQL_SYSVAR_INT(
|
|
store_last_crd,
|
|
spider_store_last_crd,
|
|
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_DEPRECATED,
|
|
"Store last crd result into system table",
|
|
NULL,
|
|
spider_var_deprecated_int,
|
|
1,
|
|
-1,
|
|
1,
|
|
0
|
|
);
|
|
|
|
SPIDER_SYSVAR_OVERRIDE_VALUE_FUNC(int, store_last_crd)
|
|
|
|
static int spider_load_sts_at_startup;
|
|
/*
|
|
-1 : fallback to default
|
|
0 : do not load
|
|
1 : do load
|
|
*/
|
|
static MYSQL_SYSVAR_INT(
|
|
load_sts_at_startup,
|
|
spider_load_sts_at_startup,
|
|
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_DEPRECATED,
|
|
"Load sts from system table at startup",
|
|
NULL,
|
|
spider_var_deprecated_int,
|
|
1,
|
|
-1,
|
|
1,
|
|
0
|
|
);
|
|
|
|
SPIDER_SYSVAR_OVERRIDE_VALUE_FUNC(int, load_sts_at_startup)
|
|
|
|
static int spider_load_crd_at_startup;
|
|
/*
|
|
-1 : fallback to default
|
|
0 : do not load
|
|
1 : do load
|
|
*/
|
|
static MYSQL_SYSVAR_INT(
|
|
load_crd_at_startup,
|
|
spider_load_crd_at_startup,
|
|
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_DEPRECATED,
|
|
"Load crd from system table at startup",
|
|
NULL,
|
|
spider_var_deprecated_int,
|
|
1,
|
|
-1,
|
|
1,
|
|
0
|
|
);
|
|
|
|
SPIDER_SYSVAR_OVERRIDE_VALUE_FUNC(int, load_crd_at_startup)
|
|
|
|
static uint spider_table_sts_thread_count;
|
|
/*
|
|
1-: thread count
|
|
*/
|
|
static MYSQL_SYSVAR_UINT(
|
|
table_sts_thread_count,
|
|
spider_table_sts_thread_count,
|
|
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY | PLUGIN_VAR_DEPRECATED,
|
|
"Deprecated parameter with no effect",
|
|
NULL,
|
|
NULL,
|
|
1,
|
|
1,
|
|
4294967295U,
|
|
0
|
|
);
|
|
|
|
SPIDER_SYSVAR_VALUE_FUNC(uint, table_sts_thread_count)
|
|
|
|
static uint spider_table_crd_thread_count;
|
|
/*
|
|
1-: thread count
|
|
*/
|
|
static MYSQL_SYSVAR_UINT(
|
|
table_crd_thread_count,
|
|
spider_table_crd_thread_count,
|
|
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY | PLUGIN_VAR_DEPRECATED,
|
|
"Deprecated parameter with no effect",
|
|
NULL,
|
|
NULL,
|
|
1,
|
|
1,
|
|
4294967295U,
|
|
0
|
|
);
|
|
|
|
SPIDER_SYSVAR_VALUE_FUNC(uint, table_crd_thread_count)
|
|
|
|
static int spider_slave_trx_isolation;
|
|
/*
|
|
-1 :off
|
|
0 :read uncommitted
|
|
1 :read committed
|
|
2 :repeatable read
|
|
3 :serializable
|
|
*/
|
|
static MYSQL_SYSVAR_INT(
|
|
slave_trx_isolation,
|
|
spider_slave_trx_isolation,
|
|
PLUGIN_VAR_RQCMDARG,
|
|
"Transaction isolation level when Spider table is used by slave SQL thread",
|
|
NULL, /* check */
|
|
NULL, /* update */
|
|
-1, /* def */
|
|
-1, /* min */
|
|
3, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_SYSVAR_VALUE_FUNC(int, slave_trx_isolation)
|
|
|
|
/*
|
|
-1 :not set
|
|
0-:seconds of timeout
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
remote_wait_timeout, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Wait timeout on remote server", /* comment */
|
|
NULL, /* check */
|
|
NULL, /* update */
|
|
-1, /* def */
|
|
-1, /* min */
|
|
2147483647, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
int spider_param_remote_wait_timeout(
|
|
THD *thd
|
|
) {
|
|
DBUG_ENTER("spider_param_remote_wait_timeout");
|
|
if (likely(thd))
|
|
DBUG_RETURN(THDVAR(thd, remote_wait_timeout));
|
|
DBUG_RETURN(-1);
|
|
}
|
|
|
|
/*
|
|
-1 :not set
|
|
0-:seconds of timeout
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
wait_timeout, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Wait timeout of setting to remote server", /* comment */
|
|
NULL, /* check */
|
|
NULL, /* update */
|
|
604800, /* def */
|
|
-1, /* min */
|
|
2147483647, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
int spider_param_wait_timeout(
|
|
THD *thd
|
|
) {
|
|
DBUG_ENTER("spider_param_wait_timeout");
|
|
if (likely(thd))
|
|
DBUG_RETURN(THDVAR(thd, wait_timeout));
|
|
DBUG_RETURN(604800);
|
|
}
|
|
|
|
/*
|
|
FALSE: no sync
|
|
TRUE: sync
|
|
*/
|
|
static MYSQL_THDVAR_BOOL(
|
|
sync_sql_mode, /* name */
|
|
PLUGIN_VAR_OPCMDARG, /* opt */
|
|
"Sync sql_mode", /* comment */
|
|
NULL, /* check */
|
|
NULL, /* update */
|
|
TRUE /* def */
|
|
);
|
|
|
|
SPIDER_THDVAR_VALUE_FUNC(bool, sync_sql_mode)
|
|
|
|
/*
|
|
-1 : fallback to default
|
|
0 : do not strict
|
|
1 : do strict
|
|
*/
|
|
static MYSQL_THDVAR_INT(
|
|
strict_group_by, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Use columns in select clause strictly for group by clause",
|
|
NULL, /* check */
|
|
spider_var_deprecated_int, /* update */
|
|
1, /* def */
|
|
-1, /* min */
|
|
1, /* max */
|
|
0 /* blk */
|
|
);
|
|
|
|
SPIDER_THDVAR_OVERRIDE_VALUE_FUNC(int, strict_group_by)
|
|
|
|
/*
|
|
-1 : use table parameter
|
|
0 : do not strict
|
|
1 : do strict
|
|
*/
|
|
static MYSQL_THDVAR_BOOL(
|
|
direct_aggregate, /* name */
|
|
PLUGIN_VAR_RQCMDARG, /* opt */
|
|
"Whether to enable direct aggregate",
|
|
NULL, /* check */
|
|
NULL, /* update */
|
|
TRUE /* def */
|
|
);
|
|
|
|
SPIDER_THDVAR_VALUE_FUNC(bool, direct_aggregate)
|
|
|
|
static MYSQL_THDVAR_BOOL(
|
|
disable_group_by_handler, /* name */
|
|
PLUGIN_VAR_OPCMDARG, /* opt */
|
|
"Disables the group by handler", /* comment */
|
|
NULL, /* check */
|
|
NULL, /* update */
|
|
FALSE /* def */
|
|
);
|
|
|
|
SPIDER_THDVAR_VALUE_FUNC(bool, disable_group_by_handler)
|
|
|
|
static MYSQL_THDVAR_BOOL(
|
|
disable_select_handler, /* name */
|
|
PLUGIN_VAR_OPCMDARG, /* opt */
|
|
"Disables the select handler", /* comment */
|
|
NULL, /* check */
|
|
NULL, /* update */
|
|
FALSE /* def */
|
|
);
|
|
|
|
SPIDER_THDVAR_VALUE_FUNC(bool, disable_select_handler)
|
|
|
|
static MYSQL_THDVAR_BOOL(
|
|
suppress_comment_ignored_warning,
|
|
PLUGIN_VAR_RQCMDARG,
|
|
"Whether to suppress warnings that table COMMENT or CONNECTION strings "
|
|
"are ignored due to specified table options",
|
|
NULL,
|
|
NULL,
|
|
FALSE
|
|
);
|
|
|
|
SPIDER_THDVAR_VALUE_FUNC(bool, suppress_comment_ignored_warning)
|
|
|
|
static MYSQL_THDVAR_BOOL(
|
|
ignore_comments,
|
|
PLUGIN_VAR_RQCMDARG,
|
|
"Whether to unconditionally ignore COMMENT and CONNECTION strings "
|
|
"without checking whether table options are specified",
|
|
NULL,
|
|
NULL,
|
|
FALSE
|
|
);
|
|
|
|
SPIDER_THDVAR_VALUE_FUNC(bool, ignore_comments)
|
|
|
|
static struct st_mysql_storage_engine spider_storage_engine =
|
|
{ MYSQL_HANDLERTON_INTERFACE_VERSION };
|
|
|
|
static struct st_mysql_sys_var* spider_system_variables[] = {
|
|
MYSQL_SYSVAR(support_xa),
|
|
MYSQL_SYSVAR(table_init_error_interval),
|
|
MYSQL_SYSVAR(use_table_charset),
|
|
MYSQL_SYSVAR(conn_recycle_mode),
|
|
MYSQL_SYSVAR(conn_recycle_strict),
|
|
MYSQL_SYSVAR(sync_trx_isolation),
|
|
MYSQL_SYSVAR(use_consistent_snapshot),
|
|
MYSQL_SYSVAR(internal_xa),
|
|
MYSQL_SYSVAR(internal_xa_snapshot),
|
|
MYSQL_SYSVAR(force_commit),
|
|
MYSQL_SYSVAR(xa_register_mode),
|
|
MYSQL_SYSVAR(internal_offset),
|
|
MYSQL_SYSVAR(internal_limit),
|
|
MYSQL_SYSVAR(split_read),
|
|
MYSQL_SYSVAR(semi_split_read),
|
|
MYSQL_SYSVAR(semi_split_read_limit),
|
|
MYSQL_SYSVAR(init_sql_alloc_size),
|
|
MYSQL_SYSVAR(reset_sql_alloc),
|
|
MYSQL_SYSVAR(multi_split_read),
|
|
MYSQL_SYSVAR(max_order),
|
|
MYSQL_SYSVAR(semi_trx_isolation),
|
|
MYSQL_SYSVAR(semi_table_lock),
|
|
MYSQL_SYSVAR(semi_table_lock_connection),
|
|
MYSQL_SYSVAR(block_size),
|
|
MYSQL_SYSVAR(selupd_lock_mode),
|
|
MYSQL_SYSVAR(sync_autocommit),
|
|
MYSQL_SYSVAR(use_default_database),
|
|
MYSQL_SYSVAR(internal_sql_log_off),
|
|
MYSQL_SYSVAR(bulk_size),
|
|
MYSQL_SYSVAR(bulk_update_mode),
|
|
MYSQL_SYSVAR(bulk_update_size),
|
|
MYSQL_SYSVAR(buffer_size),
|
|
MYSQL_SYSVAR(internal_optimize),
|
|
MYSQL_SYSVAR(internal_optimize_local),
|
|
MYSQL_SYSVAR(use_flash_logs),
|
|
MYSQL_SYSVAR(use_snapshot_with_flush_tables),
|
|
MYSQL_SYSVAR(use_all_conns_snapshot),
|
|
MYSQL_SYSVAR(lock_exchange),
|
|
MYSQL_SYSVAR(internal_unlock),
|
|
MYSQL_SYSVAR(semi_trx),
|
|
MYSQL_SYSVAR(connect_timeout),
|
|
MYSQL_SYSVAR(net_read_timeout),
|
|
MYSQL_SYSVAR(net_write_timeout),
|
|
MYSQL_SYSVAR(quick_mode),
|
|
MYSQL_SYSVAR(quick_page_size),
|
|
MYSQL_SYSVAR(quick_page_byte),
|
|
MYSQL_SYSVAR(low_mem_read),
|
|
MYSQL_SYSVAR(select_column_mode),
|
|
MYSQL_SYSVAR(bgs_mode),
|
|
MYSQL_SYSVAR(bgs_first_read),
|
|
MYSQL_SYSVAR(bgs_second_read),
|
|
MYSQL_SYSVAR(first_read),
|
|
MYSQL_SYSVAR(second_read),
|
|
MYSQL_SYSVAR(crd_interval),
|
|
MYSQL_SYSVAR(crd_mode),
|
|
MYSQL_SYSVAR(crd_sync),
|
|
MYSQL_SYSVAR(store_last_crd),
|
|
MYSQL_SYSVAR(load_crd_at_startup),
|
|
MYSQL_SYSVAR(crd_type),
|
|
MYSQL_SYSVAR(crd_weight),
|
|
MYSQL_SYSVAR(crd_bg_mode),
|
|
MYSQL_SYSVAR(sts_interval),
|
|
MYSQL_SYSVAR(sts_mode),
|
|
MYSQL_SYSVAR(sts_sync),
|
|
MYSQL_SYSVAR(store_last_sts),
|
|
MYSQL_SYSVAR(load_sts_at_startup),
|
|
MYSQL_SYSVAR(sts_bg_mode),
|
|
MYSQL_SYSVAR(ping_interval_at_trx_start),
|
|
MYSQL_SYSVAR(auto_increment_mode),
|
|
MYSQL_SYSVAR(same_server_link),
|
|
MYSQL_SYSVAR(local_lock_table),
|
|
MYSQL_SYSVAR(use_pushdown_udf),
|
|
MYSQL_SYSVAR(direct_dup_insert),
|
|
MYSQL_SYSVAR(remote_access_charset),
|
|
MYSQL_SYSVAR(remote_autocommit),
|
|
MYSQL_SYSVAR(remote_time_zone),
|
|
MYSQL_SYSVAR(remote_sql_log_off),
|
|
MYSQL_SYSVAR(remote_trx_isolation),
|
|
MYSQL_SYSVAR(remote_default_database),
|
|
MYSQL_SYSVAR(connect_retry_interval),
|
|
MYSQL_SYSVAR(connect_retry_count),
|
|
MYSQL_SYSVAR(connect_mutex),
|
|
MYSQL_SYSVAR(bka_engine),
|
|
MYSQL_SYSVAR(bka_mode),
|
|
MYSQL_SYSVAR(error_read_mode),
|
|
MYSQL_SYSVAR(error_write_mode),
|
|
MYSQL_SYSVAR(skip_default_condition),
|
|
MYSQL_SYSVAR(skip_parallel_search),
|
|
MYSQL_SYSVAR(direct_order_limit),
|
|
MYSQL_SYSVAR(read_only_mode),
|
|
MYSQL_SYSVAR(general_log),
|
|
MYSQL_SYSVAR(index_hint_pushdown),
|
|
MYSQL_SYSVAR(max_connections),
|
|
MYSQL_SYSVAR(conn_wait_timeout),
|
|
MYSQL_SYSVAR(log_result_errors),
|
|
MYSQL_SYSVAR(log_result_error_with_sql),
|
|
MYSQL_SYSVAR(internal_xa_id_type),
|
|
MYSQL_SYSVAR(casual_read),
|
|
MYSQL_SYSVAR(dry_access),
|
|
MYSQL_SYSVAR(delete_all_rows_type),
|
|
MYSQL_SYSVAR(bka_table_name_type),
|
|
MYSQL_SYSVAR(use_cond_other_than_pk_for_update),
|
|
MYSQL_SYSVAR(connect_error_interval),
|
|
MYSQL_SYSVAR(table_sts_thread_count),
|
|
MYSQL_SYSVAR(table_crd_thread_count),
|
|
MYSQL_SYSVAR(slave_trx_isolation),
|
|
MYSQL_SYSVAR(remote_wait_timeout),
|
|
MYSQL_SYSVAR(wait_timeout),
|
|
MYSQL_SYSVAR(sync_sql_mode),
|
|
MYSQL_SYSVAR(strict_group_by),
|
|
MYSQL_SYSVAR(direct_aggregate),
|
|
MYSQL_SYSVAR(disable_group_by_handler),
|
|
MYSQL_SYSVAR(disable_select_handler),
|
|
MYSQL_SYSVAR(suppress_comment_ignored_warning),
|
|
MYSQL_SYSVAR(ignore_comments),
|
|
NULL
|
|
};
|
|
|
|
mysql_declare_plugin(spider)
|
|
{
|
|
MYSQL_STORAGE_ENGINE_PLUGIN,
|
|
&spider_storage_engine,
|
|
"SPIDER",
|
|
"Kentoku Shiba",
|
|
"Spider storage engine",
|
|
PLUGIN_LICENSE_GPL,
|
|
spider_db_init,
|
|
spider_db_done,
|
|
SPIDER_HEX_VERSION,
|
|
spider_status_variables,
|
|
spider_system_variables,
|
|
NULL,
|
|
0,
|
|
},
|
|
spider_i_s_alloc_mem,
|
|
spider_i_s_wrapper_protocols
|
|
mysql_declare_plugin_end;
|
|
|
|
maria_declare_plugin(spider)
|
|
{
|
|
MYSQL_STORAGE_ENGINE_PLUGIN,
|
|
&spider_storage_engine,
|
|
"SPIDER",
|
|
"Kentoku Shiba",
|
|
"Spider storage engine",
|
|
PLUGIN_LICENSE_GPL,
|
|
spider_db_init,
|
|
spider_db_done,
|
|
SPIDER_HEX_VERSION,
|
|
spider_status_variables,
|
|
spider_system_variables,
|
|
SPIDER_DETAIL_VERSION,
|
|
MariaDB_PLUGIN_MATURITY_STABLE
|
|
},
|
|
spider_i_s_alloc_mem_maria,
|
|
spider_i_s_wrapper_protocols_maria
|
|
maria_declare_plugin_end;
|