10.0-base merge
This commit is contained in:
commit
f9dcd5b540
@ -172,8 +172,9 @@ enum mysql_option
|
|||||||
MYSQL_OPT_SSL_CA, MYSQL_OPT_SSL_CAPATH, MYSQL_OPT_SSL_CIPHER,
|
MYSQL_OPT_SSL_CA, MYSQL_OPT_SSL_CAPATH, MYSQL_OPT_SSL_CIPHER,
|
||||||
MYSQL_OPT_SSL_CRL, MYSQL_OPT_SSL_CRLPATH,
|
MYSQL_OPT_SSL_CRL, MYSQL_OPT_SSL_CRLPATH,
|
||||||
/* MariaDB options */
|
/* MariaDB options */
|
||||||
MYSQL_OPT_NONBLOCK=6000,
|
MYSQL_PROGRESS_CALLBACK=5999,
|
||||||
MYSQL_PROGRESS_CALLBACK
|
MYSQL_OPT_NONBLOCK,
|
||||||
|
MYSQL_OPT_USE_THREAD_SPECIFIC_MEMORY
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -198,7 +199,7 @@ struct st_mysql_options {
|
|||||||
unsigned long max_allowed_packet;
|
unsigned long max_allowed_packet;
|
||||||
my_bool use_ssl; /* if to use SSL or not */
|
my_bool use_ssl; /* if to use SSL or not */
|
||||||
my_bool compress,named_pipe;
|
my_bool compress,named_pipe;
|
||||||
my_bool unused1;
|
my_bool use_thread_specific_memory;
|
||||||
my_bool unused2;
|
my_bool unused2;
|
||||||
my_bool unused3;
|
my_bool unused3;
|
||||||
my_bool unused4;
|
my_bool unused4;
|
||||||
|
@ -83,7 +83,7 @@ enum enum_mysql_set_option
|
|||||||
my_bool my_net_init(NET *net, Vio* vio, unsigned int my_flags);
|
my_bool my_net_init(NET *net, Vio* vio, unsigned int my_flags);
|
||||||
void my_net_local_init(NET *net);
|
void my_net_local_init(NET *net);
|
||||||
void net_end(NET *net);
|
void net_end(NET *net);
|
||||||
void net_clear(NET *net, my_bool clear_buffer);
|
void net_clear(NET *net, my_bool clear_buffer);
|
||||||
my_bool net_realloc(NET *net, size_t length);
|
my_bool net_realloc(NET *net, size_t length);
|
||||||
my_bool net_flush(NET *net);
|
my_bool net_flush(NET *net);
|
||||||
my_bool my_net_write(NET *net,const unsigned char *packet, size_t len);
|
my_bool my_net_write(NET *net,const unsigned char *packet, size_t len);
|
||||||
@ -266,8 +266,9 @@ enum mysql_option
|
|||||||
MYSQL_OPT_SSL_KEY, MYSQL_OPT_SSL_CERT,
|
MYSQL_OPT_SSL_KEY, MYSQL_OPT_SSL_CERT,
|
||||||
MYSQL_OPT_SSL_CA, MYSQL_OPT_SSL_CAPATH, MYSQL_OPT_SSL_CIPHER,
|
MYSQL_OPT_SSL_CA, MYSQL_OPT_SSL_CAPATH, MYSQL_OPT_SSL_CIPHER,
|
||||||
MYSQL_OPT_SSL_CRL, MYSQL_OPT_SSL_CRLPATH,
|
MYSQL_OPT_SSL_CRL, MYSQL_OPT_SSL_CRLPATH,
|
||||||
MYSQL_OPT_NONBLOCK=6000,
|
MYSQL_PROGRESS_CALLBACK=5999,
|
||||||
MYSQL_PROGRESS_CALLBACK
|
MYSQL_OPT_NONBLOCK,
|
||||||
|
MYSQL_OPT_USE_THREAD_SPECIFIC_MEMORY
|
||||||
};
|
};
|
||||||
struct st_mysql_options_extention;
|
struct st_mysql_options_extention;
|
||||||
struct st_mysql_options {
|
struct st_mysql_options {
|
||||||
@ -286,7 +287,7 @@ struct st_mysql_options {
|
|||||||
unsigned long max_allowed_packet;
|
unsigned long max_allowed_packet;
|
||||||
my_bool use_ssl;
|
my_bool use_ssl;
|
||||||
my_bool compress,named_pipe;
|
my_bool compress,named_pipe;
|
||||||
my_bool unused1;
|
my_bool use_thread_specific_memory;
|
||||||
my_bool unused2;
|
my_bool unused2;
|
||||||
my_bool unused3;
|
my_bool unused3;
|
||||||
my_bool unused4;
|
my_bool unused4;
|
||||||
|
@ -77,9 +77,9 @@ order by s_suppkey;
|
|||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 PRIMARY supplier ALL PRIMARY NULL NULL NULL 10 100.00 Using filesort
|
1 PRIMARY supplier ALL PRIMARY NULL NULL NULL 10 100.00 Using filesort
|
||||||
1 PRIMARY <derived3> ref key0 key0 5 dbt3_s001.supplier.s_suppkey 10 100.00 Using where
|
1 PRIMARY <derived3> ref key0 key0 5 dbt3_s001.supplier.s_suppkey 10 100.00 Using where
|
||||||
3 DERIVED lineitem range i_l_shipdate i_l_shipdate 4 NULL 268 0.20 Using where; Using temporary; Using filesort
|
3 DERIVED lineitem range i_l_shipdate i_l_shipdate 4 NULL 268 100.00 Using where; Using temporary; Using filesort
|
||||||
2 SUBQUERY <derived4> ALL NULL NULL NULL NULL 268 100.00
|
2 SUBQUERY <derived4> ALL NULL NULL NULL NULL 268 100.00
|
||||||
4 DERIVED lineitem range i_l_shipdate i_l_shipdate 4 NULL 268 0.20 Using where; Using temporary; Using filesort
|
4 DERIVED lineitem range i_l_shipdate i_l_shipdate 4 NULL 268 100.00 Using where; Using temporary; Using filesort
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select `dbt3_s001`.`supplier`.`s_suppkey` AS `s_suppkey`,`dbt3_s001`.`supplier`.`s_name` AS `s_name`,`dbt3_s001`.`supplier`.`s_address` AS `s_address`,`dbt3_s001`.`supplier`.`s_phone` AS `s_phone`,`revenue0`.`total_revenue` AS `total_revenue` from `dbt3_s001`.`supplier` join `dbt3_s001`.`revenue0` where ((`revenue0`.`supplier_no` = `dbt3_s001`.`supplier`.`s_suppkey`) and (`revenue0`.`total_revenue` = (select max(`revenue0`.`total_revenue`) from `dbt3_s001`.`revenue0`))) order by `dbt3_s001`.`supplier`.`s_suppkey`
|
Note 1003 select `dbt3_s001`.`supplier`.`s_suppkey` AS `s_suppkey`,`dbt3_s001`.`supplier`.`s_name` AS `s_name`,`dbt3_s001`.`supplier`.`s_address` AS `s_address`,`dbt3_s001`.`supplier`.`s_phone` AS `s_phone`,`revenue0`.`total_revenue` AS `total_revenue` from `dbt3_s001`.`supplier` join `dbt3_s001`.`revenue0` where ((`revenue0`.`supplier_no` = `dbt3_s001`.`supplier`.`s_suppkey`) and (`revenue0`.`total_revenue` = (select max(`revenue0`.`total_revenue`) from `dbt3_s001`.`revenue0`))) order by `dbt3_s001`.`supplier`.`s_suppkey`
|
||||||
select s_suppkey, s_name, s_address, s_phone, total_revenue
|
select s_suppkey, s_name, s_address, s_phone, total_revenue
|
||||||
|
@ -80,9 +80,9 @@ order by s_suppkey;
|
|||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 PRIMARY supplier index PRIMARY PRIMARY 4 NULL 10 100.00
|
1 PRIMARY supplier index PRIMARY PRIMARY 4 NULL 10 100.00
|
||||||
1 PRIMARY <derived3> ref key0 key0 5 dbt3_s001.supplier.s_suppkey 10 100.00 Using where
|
1 PRIMARY <derived3> ref key0 key0 5 dbt3_s001.supplier.s_suppkey 10 100.00 Using where
|
||||||
3 DERIVED lineitem range i_l_shipdate i_l_shipdate 4 NULL 228 0.14 Using where; Using temporary; Using filesort
|
3 DERIVED lineitem range i_l_shipdate i_l_shipdate 4 NULL 228 100.00 Using where; Using temporary; Using filesort
|
||||||
2 SUBQUERY <derived4> ALL NULL NULL NULL NULL 228 100.00
|
2 SUBQUERY <derived4> ALL NULL NULL NULL NULL 228 100.00
|
||||||
4 DERIVED lineitem range i_l_shipdate i_l_shipdate 4 NULL 228 0.14 Using where; Using temporary; Using filesort
|
4 DERIVED lineitem range i_l_shipdate i_l_shipdate 4 NULL 228 100.00 Using where; Using temporary; Using filesort
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select `dbt3_s001`.`supplier`.`s_suppkey` AS `s_suppkey`,`dbt3_s001`.`supplier`.`s_name` AS `s_name`,`dbt3_s001`.`supplier`.`s_address` AS `s_address`,`dbt3_s001`.`supplier`.`s_phone` AS `s_phone`,`revenue0`.`total_revenue` AS `total_revenue` from `dbt3_s001`.`supplier` join `dbt3_s001`.`revenue0` where ((`revenue0`.`supplier_no` = `dbt3_s001`.`supplier`.`s_suppkey`) and (`revenue0`.`total_revenue` = (select max(`revenue0`.`total_revenue`) from `dbt3_s001`.`revenue0`))) order by `dbt3_s001`.`supplier`.`s_suppkey`
|
Note 1003 select `dbt3_s001`.`supplier`.`s_suppkey` AS `s_suppkey`,`dbt3_s001`.`supplier`.`s_name` AS `s_name`,`dbt3_s001`.`supplier`.`s_address` AS `s_address`,`dbt3_s001`.`supplier`.`s_phone` AS `s_phone`,`revenue0`.`total_revenue` AS `total_revenue` from `dbt3_s001`.`supplier` join `dbt3_s001`.`revenue0` where ((`revenue0`.`supplier_no` = `dbt3_s001`.`supplier`.`s_suppkey`) and (`revenue0`.`total_revenue` = (select max(`revenue0`.`total_revenue`) from `dbt3_s001`.`revenue0`))) order by `dbt3_s001`.`supplier`.`s_suppkey`
|
||||||
select s_suppkey, s_name, s_address, s_phone, total_revenue
|
select s_suppkey, s_name, s_address, s_phone, total_revenue
|
||||||
|
@ -14,9 +14,9 @@ Note 1937 SLAVE '' started
|
|||||||
include/wait_for_slave_to_start.inc
|
include/wait_for_slave_to_start.inc
|
||||||
SET GLOBAL gtid_domain_id= 1;
|
SET GLOBAL gtid_domain_id= 1;
|
||||||
SET SESSION gtid_domain_id= 1;
|
SET SESSION gtid_domain_id= 1;
|
||||||
|
CREATE TABLE t3 (a INT PRIMARY KEY, b VARCHAR(10)) ENGINE=InnoDB;
|
||||||
CREATE TABLE t1 (a INT PRIMARY KEY, b VARCHAR(10));
|
CREATE TABLE t1 (a INT PRIMARY KEY, b VARCHAR(10));
|
||||||
INSERT INTO t1 VALUES (1, "initial");
|
INSERT INTO t1 VALUES (1, "initial");
|
||||||
CREATE TABLE t3 (a INT PRIMARY KEY, b VARCHAR(10)) ENGINE=InnoDB;
|
|
||||||
INSERT INTO t3 VALUES (101, "initial 1");
|
INSERT INTO t3 VALUES (101, "initial 1");
|
||||||
SET GLOBAL gtid_domain_id= 2;
|
SET GLOBAL gtid_domain_id= 2;
|
||||||
SET SESSION gtid_domain_id= 2;
|
SET SESSION gtid_domain_id= 2;
|
||||||
|
@ -32,11 +32,17 @@ start all slaves;
|
|||||||
--connection master1
|
--connection master1
|
||||||
SET GLOBAL gtid_domain_id= 1;
|
SET GLOBAL gtid_domain_id= 1;
|
||||||
SET SESSION gtid_domain_id= 1;
|
SET SESSION gtid_domain_id= 1;
|
||||||
|
CREATE TABLE t3 (a INT PRIMARY KEY, b VARCHAR(10)) ENGINE=InnoDB;
|
||||||
CREATE TABLE t1 (a INT PRIMARY KEY, b VARCHAR(10));
|
CREATE TABLE t1 (a INT PRIMARY KEY, b VARCHAR(10));
|
||||||
INSERT INTO t1 VALUES (1, "initial");
|
INSERT INTO t1 VALUES (1, "initial");
|
||||||
CREATE TABLE t3 (a INT PRIMARY KEY, b VARCHAR(10)) ENGINE=InnoDB;
|
|
||||||
INSERT INTO t3 VALUES (101, "initial 1");
|
INSERT INTO t3 VALUES (101, "initial 1");
|
||||||
|
|
||||||
|
# Make sure we have CREATE TABLE t3 from master1 before replicating INSERT INTO
|
||||||
|
# t3 from master2.
|
||||||
|
--connection slave1
|
||||||
|
--let $wait_condition= SELECT COUNT(*)=1 FROM information_schema.tables WHERE table_name = "t3" AND table_schema = "test"
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
--connection master2
|
--connection master2
|
||||||
SET GLOBAL gtid_domain_id= 2;
|
SET GLOBAL gtid_domain_id= 2;
|
||||||
SET SESSION gtid_domain_id= 2;
|
SET SESSION gtid_domain_id= 2;
|
||||||
|
@ -919,7 +919,9 @@ void free_old_query(MYSQL *mysql)
|
|||||||
if (mysql->fields)
|
if (mysql->fields)
|
||||||
free_root(&mysql->field_alloc,MYF(0));
|
free_root(&mysql->field_alloc,MYF(0));
|
||||||
/* Assume rowlength < 8192 */
|
/* Assume rowlength < 8192 */
|
||||||
init_alloc_root(&mysql->field_alloc, 8192, 0, MYF(MY_THREAD_SPECIFIC));
|
init_alloc_root(&mysql->field_alloc, 8192, 0,
|
||||||
|
MYF(mysql->options.use_thread_specific_memory ?
|
||||||
|
MY_THREAD_SPECIFIC : 0));
|
||||||
mysql->fields= 0;
|
mysql->fields= 0;
|
||||||
mysql->field_count= 0; /* For API */
|
mysql->field_count= 0; /* For API */
|
||||||
mysql->warning_count= 0;
|
mysql->warning_count= 0;
|
||||||
@ -1611,7 +1613,9 @@ MYSQL_DATA *cli_read_rows(MYSQL *mysql,MYSQL_FIELD *mysql_fields,
|
|||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
}
|
}
|
||||||
/* Assume rowlength < 8192 */
|
/* Assume rowlength < 8192 */
|
||||||
init_alloc_root(&result->alloc, 8192, 0, MYF(MY_THREAD_SPECIFIC));
|
init_alloc_root(&result->alloc, 8192, 0,
|
||||||
|
MYF(mysql->options.use_thread_specific_memory ?
|
||||||
|
MY_THREAD_SPECIFIC : 0));
|
||||||
result->alloc.min_malloc=sizeof(MYSQL_ROWS);
|
result->alloc.min_malloc=sizeof(MYSQL_ROWS);
|
||||||
prev_ptr= &result->data;
|
prev_ptr= &result->data;
|
||||||
result->rows=0;
|
result->rows=0;
|
||||||
@ -4254,6 +4258,9 @@ mysql_options(MYSQL *mysql,enum mysql_option option, const void *arg)
|
|||||||
case MYSQL_OPT_RECONNECT:
|
case MYSQL_OPT_RECONNECT:
|
||||||
mysql->reconnect= *(my_bool *) arg;
|
mysql->reconnect= *(my_bool *) arg;
|
||||||
break;
|
break;
|
||||||
|
case MYSQL_OPT_USE_THREAD_SPECIFIC_MEMORY:
|
||||||
|
mysql->options.use_thread_specific_memory= *(my_bool *) arg;
|
||||||
|
break;
|
||||||
case MYSQL_OPT_SSL_VERIFY_SERVER_CERT:
|
case MYSQL_OPT_SSL_VERIFY_SERVER_CERT:
|
||||||
if (*(my_bool*) arg)
|
if (*(my_bool*) arg)
|
||||||
mysql->options.client_flag|= CLIENT_SSL_VERIFY_SERVER_CERT;
|
mysql->options.client_flag|= CLIENT_SSL_VERIFY_SERVER_CERT;
|
||||||
|
@ -163,7 +163,7 @@ const TABLE_FIELD_TYPE event_table_fields[ET_FIELD_COUNT] =
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const TABLE_FIELD_DEF
|
static const TABLE_FIELD_DEF
|
||||||
event_table_def= {ET_FIELD_COUNT, event_table_fields};
|
event_table_def= {ET_FIELD_COUNT, event_table_fields, 0, (uint*) 0};
|
||||||
|
|
||||||
class Event_db_intact : public Table_check_intact
|
class Event_db_intact : public Table_check_intact
|
||||||
{
|
{
|
||||||
|
@ -225,3 +225,7 @@ void free_rpl_filter(const char *name, Rpl_filter *filter)
|
|||||||
delete filter;
|
delete filter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void free_all_rpl_filters()
|
||||||
|
{
|
||||||
|
rpl_filters.delete_elements((void (*)(const char*, uchar*)) free_rpl_filter);
|
||||||
|
}
|
||||||
|
@ -53,5 +53,6 @@ Rpl_filter *create_rpl_filter(const char *name, uint length);
|
|||||||
Rpl_filter *get_rpl_filter(LEX_STRING *filter_name);
|
Rpl_filter *get_rpl_filter(LEX_STRING *filter_name);
|
||||||
Rpl_filter *get_or_create_rpl_filter(const char *name, uint length);
|
Rpl_filter *get_or_create_rpl_filter(const char *name, uint length);
|
||||||
void free_rpl_filter(const char *name, Rpl_filter *filter);
|
void free_rpl_filter(const char *name, Rpl_filter *filter);
|
||||||
|
void free_all_rpl_filters(void);
|
||||||
|
|
||||||
#endif /* KEYCACHES_INCLUDED */
|
#endif /* KEYCACHES_INCLUDED */
|
||||||
|
@ -49,7 +49,8 @@ Relay_log_info::Relay_log_info(bool is_slave_recovery)
|
|||||||
no_storage(FALSE), replicate_same_server_id(::replicate_same_server_id),
|
no_storage(FALSE), replicate_same_server_id(::replicate_same_server_id),
|
||||||
info_fd(-1), cur_log_fd(-1), relay_log(&sync_relaylog_period),
|
info_fd(-1), cur_log_fd(-1), relay_log(&sync_relaylog_period),
|
||||||
sync_counter(0), is_relay_log_recovery(is_slave_recovery),
|
sync_counter(0), is_relay_log_recovery(is_slave_recovery),
|
||||||
save_temporary_tables(0), cur_log_old_open_count(0), group_relay_log_pos(0),
|
save_temporary_tables(0), mi(0),
|
||||||
|
cur_log_old_open_count(0), group_relay_log_pos(0),
|
||||||
event_relay_log_pos(0),
|
event_relay_log_pos(0),
|
||||||
#if HAVE_valgrind
|
#if HAVE_valgrind
|
||||||
is_fake(FALSE),
|
is_fake(FALSE),
|
||||||
@ -62,7 +63,7 @@ Relay_log_info::Relay_log_info(bool is_slave_recovery)
|
|||||||
gtid_sub_id(0), tables_to_lock(0), tables_to_lock_count(0),
|
gtid_sub_id(0), tables_to_lock(0), tables_to_lock_count(0),
|
||||||
last_event_start_time(0), deferred_events(NULL),m_flags(0),
|
last_event_start_time(0), deferred_events(NULL),m_flags(0),
|
||||||
row_stmt_start_timestamp(0), long_find_row_note_printed(false),
|
row_stmt_start_timestamp(0), long_find_row_note_printed(false),
|
||||||
m_annotate_event(0), mi(0)
|
m_annotate_event(0)
|
||||||
{
|
{
|
||||||
DBUG_ENTER("Relay_log_info::Relay_log_info");
|
DBUG_ENTER("Relay_log_info::Relay_log_info");
|
||||||
|
|
||||||
|
11
sql/slave.cc
11
sql/slave.cc
@ -884,6 +884,7 @@ void end_slave()
|
|||||||
master_info_index= 0;
|
master_info_index= 0;
|
||||||
active_mi= 0;
|
active_mi= 0;
|
||||||
mysql_mutex_unlock(&LOCK_active_mi);
|
mysql_mutex_unlock(&LOCK_active_mi);
|
||||||
|
free_all_rpl_filters();
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5025,6 +5026,7 @@ static int connect_to_master(THD* thd, MYSQL* mysql, Master_info* mi,
|
|||||||
int last_errno= -2; // impossible error
|
int last_errno= -2; // impossible error
|
||||||
ulong err_count=0;
|
ulong err_count=0;
|
||||||
char llbuff[22];
|
char llbuff[22];
|
||||||
|
my_bool my_true= 1;
|
||||||
DBUG_ENTER("connect_to_master");
|
DBUG_ENTER("connect_to_master");
|
||||||
|
|
||||||
#ifndef DBUG_OFF
|
#ifndef DBUG_OFF
|
||||||
@ -5036,6 +5038,8 @@ static int connect_to_master(THD* thd, MYSQL* mysql, Master_info* mi,
|
|||||||
|
|
||||||
mysql_options(mysql, MYSQL_OPT_CONNECT_TIMEOUT, (char *) &slave_net_timeout);
|
mysql_options(mysql, MYSQL_OPT_CONNECT_TIMEOUT, (char *) &slave_net_timeout);
|
||||||
mysql_options(mysql, MYSQL_OPT_READ_TIMEOUT, (char *) &slave_net_timeout);
|
mysql_options(mysql, MYSQL_OPT_READ_TIMEOUT, (char *) &slave_net_timeout);
|
||||||
|
mysql_options(mysql, MYSQL_OPT_USE_THREAD_SPECIFIC_MEMORY,
|
||||||
|
(char*) &my_true);
|
||||||
|
|
||||||
#ifdef HAVE_OPENSSL
|
#ifdef HAVE_OPENSSL
|
||||||
if (mi->ssl)
|
if (mi->ssl)
|
||||||
@ -5155,14 +5159,15 @@ MYSQL *rpl_connect_master(MYSQL *mysql)
|
|||||||
{
|
{
|
||||||
THD *thd= current_thd;
|
THD *thd= current_thd;
|
||||||
Master_info *mi= my_pthread_getspecific_ptr(Master_info*, RPL_MASTER_INFO);
|
Master_info *mi= my_pthread_getspecific_ptr(Master_info*, RPL_MASTER_INFO);
|
||||||
|
bool allocated= false;
|
||||||
|
my_bool my_true= 1;
|
||||||
|
|
||||||
if (!mi)
|
if (!mi)
|
||||||
{
|
{
|
||||||
sql_print_error("'rpl_connect_master' must be called in slave I/O thread context.");
|
sql_print_error("'rpl_connect_master' must be called in slave I/O thread context.");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool allocated= false;
|
|
||||||
|
|
||||||
if (!mysql)
|
if (!mysql)
|
||||||
{
|
{
|
||||||
if(!(mysql= mysql_init(NULL)))
|
if(!(mysql= mysql_init(NULL)))
|
||||||
@ -5182,6 +5187,8 @@ MYSQL *rpl_connect_master(MYSQL *mysql)
|
|||||||
*/
|
*/
|
||||||
mysql_options(mysql, MYSQL_OPT_CONNECT_TIMEOUT, (char *) &slave_net_timeout);
|
mysql_options(mysql, MYSQL_OPT_CONNECT_TIMEOUT, (char *) &slave_net_timeout);
|
||||||
mysql_options(mysql, MYSQL_OPT_READ_TIMEOUT, (char *) &slave_net_timeout);
|
mysql_options(mysql, MYSQL_OPT_READ_TIMEOUT, (char *) &slave_net_timeout);
|
||||||
|
mysql_options(mysql, MYSQL_OPT_USE_THREAD_SPECIFIC_MEMORY,
|
||||||
|
(char*) &my_true);
|
||||||
|
|
||||||
#ifdef HAVE_OPENSSL
|
#ifdef HAVE_OPENSSL
|
||||||
if (mi->ssl)
|
if (mi->ssl)
|
||||||
|
@ -168,7 +168,7 @@ TABLE_FIELD_TYPE proc_table_fields[MYSQL_PROC_FIELD_COUNT] =
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const TABLE_FIELD_DEF
|
static const TABLE_FIELD_DEF
|
||||||
proc_table_def= {MYSQL_PROC_FIELD_COUNT, proc_table_fields};
|
proc_table_def= {MYSQL_PROC_FIELD_COUNT, proc_table_fields, 0, (uint*) 0 };
|
||||||
|
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
|
|
||||||
|
@ -171,7 +171,7 @@ TABLE_FIELD_TYPE mysql_db_table_fields[MYSQL_DB_FIELD_COUNT] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const TABLE_FIELD_DEF
|
const TABLE_FIELD_DEF
|
||||||
mysql_db_table_def= {MYSQL_DB_FIELD_COUNT, mysql_db_table_fields};
|
mysql_db_table_def= {MYSQL_DB_FIELD_COUNT, mysql_db_table_fields, 0, (uint*) 0 };
|
||||||
|
|
||||||
static LEX_STRING native_password_plugin_name= {
|
static LEX_STRING native_password_plugin_name= {
|
||||||
C_STRING_WITH_LEN("mysql_native_password")
|
C_STRING_WITH_LEN("mysql_native_password")
|
||||||
|
@ -6901,6 +6901,18 @@ double JOIN::get_examined_rows()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
@brief
|
||||||
|
Get the selectivity of equalities between columns when joining a table
|
||||||
|
|
||||||
|
@param join The optimized join
|
||||||
|
@param idx The number of tables in the evaluated partual join
|
||||||
|
@param s The table to be joined for evaluation
|
||||||
|
@param rem_tables The bitmap of tables to be joined later
|
||||||
|
@param keyparts The number of key parts to used when joining s
|
||||||
|
@param ref_keyuse_steps Array of references to keyuses employed to join s
|
||||||
|
*/
|
||||||
|
|
||||||
static
|
static
|
||||||
double table_multi_eq_cond_selectivity(JOIN *join, uint idx, JOIN_TAB *s,
|
double table_multi_eq_cond_selectivity(JOIN *join, uint idx, JOIN_TAB *s,
|
||||||
table_map rem_tables, uint keyparts,
|
table_map rem_tables, uint keyparts,
|
||||||
@ -7011,6 +7023,19 @@ double table_multi_eq_cond_selectivity(JOIN *join, uint idx, JOIN_TAB *s,
|
|||||||
return sel;
|
return sel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
@brief
|
||||||
|
Get the selectivity of conditions when joining a table
|
||||||
|
|
||||||
|
@param join The optimized join
|
||||||
|
@param s The table to be joined for evaluation
|
||||||
|
@param rem_tables The bitmap of tables to be joined later
|
||||||
|
|
||||||
|
@retval
|
||||||
|
selectivity of the conditions imposed on the rows of s
|
||||||
|
*/
|
||||||
|
|
||||||
static
|
static
|
||||||
double table_cond_selectivity(JOIN *join, uint idx, JOIN_TAB *s,
|
double table_cond_selectivity(JOIN *join, uint idx, JOIN_TAB *s,
|
||||||
table_map rem_tables)
|
table_map rem_tables)
|
||||||
@ -7030,7 +7055,7 @@ double table_cond_selectivity(JOIN *join, uint idx, JOIN_TAB *s,
|
|||||||
{
|
{
|
||||||
if (pos->key == 0 && table_records > 0)
|
if (pos->key == 0 && table_records > 0)
|
||||||
{
|
{
|
||||||
sel*= table->quick_rows[s->quick->index]/table_records;
|
sel/= table->quick_rows[s->quick->index]/table_records;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (pos->key != 0)
|
else if (pos->key != 0)
|
||||||
@ -7081,6 +7106,11 @@ double table_cond_selectivity(JOIN *join, uint idx, JOIN_TAB *s,
|
|||||||
} while (keyuse->table == table && keyuse->key == key);
|
} while (keyuse->table == table && keyuse->key == key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
If the field f from the table is equal to a field from one the
|
||||||
|
earlier joined tables then the selectivity of the range conditions
|
||||||
|
over the field f must be discounted.
|
||||||
|
*/
|
||||||
for (Field **f_ptr=table->field ; (field= *f_ptr) ; f_ptr++)
|
for (Field **f_ptr=table->field ; (field= *f_ptr) ; f_ptr++)
|
||||||
{
|
{
|
||||||
if (!bitmap_is_set(read_set, field->field_index) ||
|
if (!bitmap_is_set(read_set, field->field_index) ||
|
||||||
@ -12270,9 +12300,9 @@ static COND *build_equal_items_for_cond(THD *thd, COND *cond,
|
|||||||
@endcode
|
@endcode
|
||||||
Thus, applying equalities from the where condition we basically
|
Thus, applying equalities from the where condition we basically
|
||||||
can get more freedom in performing join operations.
|
can get more freedom in performing join operations.
|
||||||
Althogh we don't use this property now, it probably makes sense to use
|
Although we don't use this property now, it probably makes sense to use
|
||||||
it in the future.
|
it in the future.
|
||||||
@param thd Thread handler
|
@param thd Thread handler
|
||||||
@param cond condition to build the multiple equalities for
|
@param cond condition to build the multiple equalities for
|
||||||
@param inherited path to all inherited multiple equality items
|
@param inherited path to all inherited multiple equality items
|
||||||
@param join_list list of join tables to which the condition
|
@param join_list list of join tables to which the condition
|
||||||
@ -12281,6 +12311,7 @@ static COND *build_equal_items_for_cond(THD *thd, COND *cond,
|
|||||||
for on expressions
|
for on expressions
|
||||||
@param[out] cond_equal_ref pointer to the structure to place built
|
@param[out] cond_equal_ref pointer to the structure to place built
|
||||||
equalities in
|
equalities in
|
||||||
|
@param link_equal_items equal fields are to be linked
|
||||||
|
|
||||||
@return
|
@return
|
||||||
pointer to the transformed condition containing multiple equalities
|
pointer to the transformed condition containing multiple equalities
|
||||||
|
@ -423,8 +423,10 @@ int federatedx_io_mysql::actual_query(const char *buffer, uint length)
|
|||||||
|
|
||||||
if (!mysql.net.vio)
|
if (!mysql.net.vio)
|
||||||
{
|
{
|
||||||
|
my_bool my_true= 1;
|
||||||
|
|
||||||
if (!(mysql_init(&mysql)))
|
if (!(mysql_init(&mysql)))
|
||||||
DBUG_RETURN(-1);
|
DBUG_RETURN(-1);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
BUG# 17044 Federated Storage Engine is not UTF8 clean
|
BUG# 17044 Federated Storage Engine is not UTF8 clean
|
||||||
@ -433,6 +435,8 @@ int federatedx_io_mysql::actual_query(const char *buffer, uint length)
|
|||||||
*/
|
*/
|
||||||
/* this sets the csname like 'set names utf8' */
|
/* this sets the csname like 'set names utf8' */
|
||||||
mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, get_charsetname());
|
mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, get_charsetname());
|
||||||
|
mysql_options(&mysql, MYSQL_OPT_USE_THREAD_SPECIFIC_MEMORY,
|
||||||
|
(char*) &my_true);
|
||||||
|
|
||||||
if (!mysql_real_connect(&mysql,
|
if (!mysql_real_connect(&mysql,
|
||||||
get_hostname(),
|
get_hostname(),
|
||||||
|
@ -3593,12 +3593,15 @@ int ha_federatedx::discover_assisted(handlerton *hton, THD* thd,
|
|||||||
MYSQL_RES *res;
|
MYSQL_RES *res;
|
||||||
MYSQL_ROW rdata;
|
MYSQL_ROW rdata;
|
||||||
ulong *rlen;
|
ulong *rlen;
|
||||||
|
my_bool my_true= 1;
|
||||||
|
|
||||||
if (parse_url(thd->mem_root, &tmp_share, table_s, 1))
|
if (parse_url(thd->mem_root, &tmp_share, table_s, 1))
|
||||||
return HA_WRONG_CREATE_OPTION;
|
return HA_WRONG_CREATE_OPTION;
|
||||||
|
|
||||||
mysql_init(&mysql);
|
mysql_init(&mysql);
|
||||||
mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, cs->csname);
|
mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, cs->csname);
|
||||||
|
mysql_options(&mysql, MYSQL_OPT_USE_THREAD_SPECIFIC_MEMORY,
|
||||||
|
(char*) &my_true);
|
||||||
|
|
||||||
if (!mysql_real_connect(&mysql, tmp_share.hostname, tmp_share.username,
|
if (!mysql_real_connect(&mysql, tmp_share.hostname, tmp_share.username,
|
||||||
tmp_share.password, tmp_share.database,
|
tmp_share.password, tmp_share.database,
|
||||||
|
@ -131,7 +131,7 @@ static const TABLE_FIELD_TYPE field_types[]=
|
|||||||
|
|
||||||
TABLE_FIELD_DEF
|
TABLE_FIELD_DEF
|
||||||
table_events_waits_current::m_field_def=
|
table_events_waits_current::m_field_def=
|
||||||
{ 19, field_types };
|
{ 19, field_types, 0, (uint*) 0 };
|
||||||
|
|
||||||
PFS_engine_table_share
|
PFS_engine_table_share
|
||||||
table_events_waits_current::m_share=
|
table_events_waits_current::m_share=
|
||||||
|
@ -67,7 +67,7 @@ static const TABLE_FIELD_TYPE field_types[]=
|
|||||||
|
|
||||||
TABLE_FIELD_DEF
|
TABLE_FIELD_DEF
|
||||||
table_ews_global_by_event_name::m_field_def=
|
table_ews_global_by_event_name::m_field_def=
|
||||||
{ 6, field_types };
|
{ 6, field_types, 0, (uint*) 0 };
|
||||||
|
|
||||||
PFS_engine_table_share
|
PFS_engine_table_share
|
||||||
table_ews_global_by_event_name::m_share=
|
table_ews_global_by_event_name::m_share=
|
||||||
|
@ -49,7 +49,7 @@ static const TABLE_FIELD_TYPE field_types[]=
|
|||||||
|
|
||||||
TABLE_FIELD_DEF
|
TABLE_FIELD_DEF
|
||||||
table_file_instances::m_field_def=
|
table_file_instances::m_field_def=
|
||||||
{ 3, field_types };
|
{ 3, field_types, 0, (uint*) 0 };
|
||||||
|
|
||||||
PFS_engine_table_share
|
PFS_engine_table_share
|
||||||
table_file_instances::m_share=
|
table_file_instances::m_share=
|
||||||
|
@ -59,7 +59,7 @@ static const TABLE_FIELD_TYPE fs_by_event_name_field_types[]=
|
|||||||
|
|
||||||
TABLE_FIELD_DEF
|
TABLE_FIELD_DEF
|
||||||
table_file_summary_by_event_name::m_field_def=
|
table_file_summary_by_event_name::m_field_def=
|
||||||
{ 5, fs_by_event_name_field_types };
|
{ 5, fs_by_event_name_field_types, 0, (uint*) 0 };
|
||||||
|
|
||||||
PFS_engine_table_share
|
PFS_engine_table_share
|
||||||
table_file_summary_by_event_name::m_share=
|
table_file_summary_by_event_name::m_share=
|
||||||
@ -222,7 +222,7 @@ static const TABLE_FIELD_TYPE fs_by_instance_field_types[]=
|
|||||||
|
|
||||||
TABLE_FIELD_DEF
|
TABLE_FIELD_DEF
|
||||||
table_file_summary_by_instance::m_field_def=
|
table_file_summary_by_instance::m_field_def=
|
||||||
{ 6, fs_by_instance_field_types };
|
{ 6, fs_by_instance_field_types, 0, (uint*) 0 };
|
||||||
|
|
||||||
PFS_engine_table_share
|
PFS_engine_table_share
|
||||||
table_file_summary_by_instance::m_share=
|
table_file_summary_by_instance::m_share=
|
||||||
|
@ -53,7 +53,7 @@ static const TABLE_FIELD_TYPE field_types[]=
|
|||||||
|
|
||||||
TABLE_FIELD_DEF
|
TABLE_FIELD_DEF
|
||||||
table_performance_timers::m_field_def=
|
table_performance_timers::m_field_def=
|
||||||
{ 4, field_types };
|
{ 4, field_types, 0, (uint*) 0 };
|
||||||
|
|
||||||
PFS_engine_table_share
|
PFS_engine_table_share
|
||||||
table_performance_timers::m_share=
|
table_performance_timers::m_share=
|
||||||
|
@ -108,7 +108,7 @@ static const TABLE_FIELD_TYPE field_types[]=
|
|||||||
|
|
||||||
TABLE_FIELD_DEF
|
TABLE_FIELD_DEF
|
||||||
table_setup_consumers::m_field_def=
|
table_setup_consumers::m_field_def=
|
||||||
{ 2, field_types };
|
{ 2, field_types, 0, (uint*) 0 };
|
||||||
|
|
||||||
PFS_engine_table_share
|
PFS_engine_table_share
|
||||||
table_setup_consumers::m_share=
|
table_setup_consumers::m_share=
|
||||||
|
@ -51,7 +51,7 @@ static const TABLE_FIELD_TYPE field_types[]=
|
|||||||
|
|
||||||
TABLE_FIELD_DEF
|
TABLE_FIELD_DEF
|
||||||
table_setup_instruments::m_field_def=
|
table_setup_instruments::m_field_def=
|
||||||
{ 3, field_types };
|
{ 3, field_types, 0, (uint*) 0 };
|
||||||
|
|
||||||
PFS_engine_table_share
|
PFS_engine_table_share
|
||||||
table_setup_instruments::m_share=
|
table_setup_instruments::m_share=
|
||||||
|
@ -65,7 +65,7 @@ static const TABLE_FIELD_TYPE field_types[]=
|
|||||||
|
|
||||||
TABLE_FIELD_DEF
|
TABLE_FIELD_DEF
|
||||||
table_setup_timers::m_field_def=
|
table_setup_timers::m_field_def=
|
||||||
{ 2, field_types };
|
{ 2, field_types, 0, (uint*) 0 };
|
||||||
|
|
||||||
PFS_engine_table_share
|
PFS_engine_table_share
|
||||||
table_setup_timers::m_share=
|
table_setup_timers::m_share=
|
||||||
|
@ -50,7 +50,7 @@ static const TABLE_FIELD_TYPE mutex_field_types[]=
|
|||||||
|
|
||||||
TABLE_FIELD_DEF
|
TABLE_FIELD_DEF
|
||||||
table_mutex_instances::m_field_def=
|
table_mutex_instances::m_field_def=
|
||||||
{ 3, mutex_field_types };
|
{ 3, mutex_field_types, 0, (uint*) 0 };
|
||||||
|
|
||||||
PFS_engine_table_share
|
PFS_engine_table_share
|
||||||
table_mutex_instances::m_share=
|
table_mutex_instances::m_share=
|
||||||
@ -219,7 +219,7 @@ static const TABLE_FIELD_TYPE rwlock_field_types[]=
|
|||||||
|
|
||||||
TABLE_FIELD_DEF
|
TABLE_FIELD_DEF
|
||||||
table_rwlock_instances::m_field_def=
|
table_rwlock_instances::m_field_def=
|
||||||
{ 4, rwlock_field_types };
|
{ 4, rwlock_field_types, 0, (uint*) 0 };
|
||||||
|
|
||||||
PFS_engine_table_share
|
PFS_engine_table_share
|
||||||
table_rwlock_instances::m_share=
|
table_rwlock_instances::m_share=
|
||||||
@ -385,7 +385,7 @@ static const TABLE_FIELD_TYPE cond_field_types[]=
|
|||||||
|
|
||||||
TABLE_FIELD_DEF
|
TABLE_FIELD_DEF
|
||||||
table_cond_instances::m_field_def=
|
table_cond_instances::m_field_def=
|
||||||
{ 2, cond_field_types };
|
{ 2, cond_field_types, 0, (uint*) 0 };
|
||||||
|
|
||||||
PFS_engine_table_share
|
PFS_engine_table_share
|
||||||
table_cond_instances::m_share=
|
table_cond_instances::m_share=
|
||||||
|
@ -98,7 +98,7 @@ static const TABLE_FIELD_TYPE field_types[]=
|
|||||||
|
|
||||||
TABLE_FIELD_DEF
|
TABLE_FIELD_DEF
|
||||||
table_threads::m_field_def=
|
table_threads::m_field_def=
|
||||||
{ 14, field_types };
|
{ 14, field_types, 0, (uint*) 0 };
|
||||||
|
|
||||||
PFS_engine_table_share
|
PFS_engine_table_share
|
||||||
table_threads::m_share=
|
table_threads::m_share=
|
||||||
|
@ -2333,7 +2333,11 @@ int ha_sphinx::write_row ( byte * )
|
|||||||
SPH_RET ( ER_OUT_OF_RESOURCES );
|
SPH_RET ( ER_OUT_OF_RESOURCES );
|
||||||
|
|
||||||
unsigned int uTimeout = 1;
|
unsigned int uTimeout = 1;
|
||||||
mysql_options ( pConn, MYSQL_OPT_CONNECT_TIMEOUT, (const char*)&uTimeout );
|
my_bool my_true= 1;
|
||||||
|
mysql_options(pConn, MYSQL_OPT_CONNECT_TIMEOUT,
|
||||||
|
(const char*) &uTimeout);
|
||||||
|
mysql_options(pConn, MYSQL_OPT_USE_THREAD_SPECIFIC_MEMORY,
|
||||||
|
(char*) &my_true);
|
||||||
|
|
||||||
if ( !mysql_real_connect ( pConn, m_pShare->m_sHost, "root", "", "", m_pShare->m_iPort, m_pShare->m_sSocket, 0 ) )
|
if ( !mysql_real_connect ( pConn, m_pShare->m_sHost, "root", "", "", m_pShare->m_iPort, m_pShare->m_sSocket, 0 ) )
|
||||||
SPH_RET ( HandleMysqlError ( pConn, ER_CONNECT_TO_FOREIGN_DATA_SOURCE ) );
|
SPH_RET ( HandleMysqlError ( pConn, ER_CONNECT_TO_FOREIGN_DATA_SOURCE ) );
|
||||||
@ -2392,7 +2396,11 @@ int ha_sphinx::delete_row ( const byte * )
|
|||||||
SPH_RET ( ER_OUT_OF_RESOURCES );
|
SPH_RET ( ER_OUT_OF_RESOURCES );
|
||||||
|
|
||||||
unsigned int uTimeout = 1;
|
unsigned int uTimeout = 1;
|
||||||
mysql_options ( pConn, MYSQL_OPT_CONNECT_TIMEOUT, (const char*)&uTimeout );
|
my_bool my_true= 1;
|
||||||
|
mysql_options(pConn, MYSQL_OPT_CONNECT_TIMEOUT,
|
||||||
|
(const char*) &uTimeout);
|
||||||
|
mysql_options(pConn, MYSQL_OPT_USE_THREAD_SPECIFIC_MEMORY,
|
||||||
|
(char*) &my_true);
|
||||||
|
|
||||||
if ( !mysql_real_connect ( pConn, m_pShare->m_sHost, "root", "", "", m_pShare->m_iPort, m_pShare->m_sSocket, 0 ) )
|
if ( !mysql_real_connect ( pConn, m_pShare->m_sHost, "root", "", "", m_pShare->m_iPort, m_pShare->m_sSocket, 0 ) )
|
||||||
SPH_RET ( HandleMysqlError ( pConn, ER_CONNECT_TO_FOREIGN_DATA_SOURCE ) );
|
SPH_RET ( HandleMysqlError ( pConn, ER_CONNECT_TO_FOREIGN_DATA_SOURCE ) );
|
||||||
|
@ -1462,7 +1462,6 @@ os_file_set_nocache(
|
|||||||
#endif
|
#endif
|
||||||
static int os_file_set_atomic_writes(os_file_t file, const char *name)
|
static int os_file_set_atomic_writes(os_file_t file, const char *name)
|
||||||
{
|
{
|
||||||
static int first_time = 1;
|
|
||||||
int atomic_option = 1;
|
int atomic_option = 1;
|
||||||
|
|
||||||
int ret = ioctl (file, DFS_IOCTL_ATOMIC_WRITE_SET, &atomic_option);
|
int ret = ioctl (file, DFS_IOCTL_ATOMIC_WRITE_SET, &atomic_option);
|
||||||
@ -2138,7 +2137,7 @@ os_file_set_size(
|
|||||||
"InnoDB: Error: preallocating data for"
|
"InnoDB: Error: preallocating data for"
|
||||||
" file %s failed at\n"
|
" file %s failed at\n"
|
||||||
"InnoDB: offset 0 size %lld %lld. Operating system"
|
"InnoDB: offset 0 size %lld %lld. Operating system"
|
||||||
" error number %llu.\n"
|
" error number %d.\n"
|
||||||
"InnoDB: Check that the disk is not full"
|
"InnoDB: Check that the disk is not full"
|
||||||
" or a disk quota exceeded.\n"
|
" or a disk quota exceeded.\n"
|
||||||
"InnoDB: Some operating system error numbers"
|
"InnoDB: Some operating system error numbers"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user