Commit 281b58b1 authored by Kentoku SHIBA's avatar Kentoku SHIBA

fix bug of auto_increment_mode=0 and 1

parent 762713bf
......@@ -1174,6 +1174,9 @@ int ha_spider::external_lock(
#if MYSQL_VERSION_ID < 50500
DBUG_PRINT("info",("spider thd->options=%x", (int) thd->options));
#endif
#ifdef HANDLER_HAS_NEED_INFO_FOR_AUTO_INC
info_auto_called = FALSE;
#endif
sql_command = thd_sql_command(thd);
if (sql_command == SQLCOM_BEGIN)
......@@ -7721,6 +7724,15 @@ int ha_spider::info(
("spider difftime=%f", difftime(tmp_time, share->sts_get_time)));
DBUG_PRINT("info",
("spider sts_interval=%f", sts_interval));
int tmp_auto_increment_mode = 0;
if (flag & HA_STATUS_AUTO)
{
tmp_auto_increment_mode = spider_param_auto_increment_mode(thd,
share->auto_increment_mode);
#ifdef HANDLER_HAS_NEED_INFO_FOR_AUTO_INC
info_auto_called = TRUE;
#endif
}
if (!share->sts_init)
{
pthread_mutex_lock(&share->sts_mutex);
......@@ -7746,10 +7758,21 @@ int ha_spider::info(
pthread_mutex_unlock(&share->sts_mutex);
sts_interval = 0;
#ifdef WITH_PARTITION_STORAGE_ENGINE
int tmp_auto_increment_mode = spider_param_auto_increment_mode(thd,
share->auto_increment_mode);
if (tmp_auto_increment_mode == 1)
sts_sync = 0;
#endif
}
}
if (flag & HA_STATUS_AUTO)
{
if (
share->partition_share &&
tmp_auto_increment_mode == 1 &&
!share->auto_increment_init
) {
sts_interval = 0;
#ifdef WITH_PARTITION_STORAGE_ENGINE
sts_sync = 0;
#endif
}
}
......@@ -7881,8 +7904,42 @@ int ha_spider::info(
stats.records = 2;
}
if (flag & HA_STATUS_AUTO)
{
#ifdef WITH_PARTITION_STORAGE_ENGINE
if (share->partition_share && table->next_number_field)
{
ulonglong first_value, nb_reserved_values;
if (
tmp_auto_increment_mode == 0 &&
!(
table->next_number_field->val_int() != 0 ||
(table->auto_increment_field_not_null &&
thd->variables.sql_mode & MODE_NO_AUTO_VALUE_ON_ZERO)
)
) {
get_auto_increment(0, 0, 0, &first_value, &nb_reserved_values);
share->auto_increment_value = first_value;
share->auto_increment_lclval = first_value;
share->auto_increment_init = TRUE;
DBUG_PRINT("info",("spider init auto_increment_lclval=%llu",
share->auto_increment_lclval));
stats.auto_increment_value = first_value;
} else if (tmp_auto_increment_mode == 1 && !share->auto_increment_init)
{
share->auto_increment_lclval = share->auto_increment_value;
share->auto_increment_init = TRUE;
stats.auto_increment_value = share->auto_increment_value;
} else {
stats.auto_increment_value = share->auto_increment_value;
}
} else {
#endif
stats.auto_increment_value = share->auto_increment_value;
#ifdef WITH_PARTITION_STORAGE_ENGINE
}
#endif
}
}
if (flag & HA_STATUS_ERRKEY)
errkey = dup_key_idx;
DBUG_RETURN(0);
......@@ -8423,6 +8480,24 @@ uint8 ha_spider::table_cache_type()
DBUG_RETURN(HA_CACHE_TBL_NOCACHE);
}
#ifdef HANDLER_HAS_NEED_INFO_FOR_AUTO_INC
bool ha_spider::need_info_for_auto_inc()
{
THD *thd = ha_thd();
DBUG_ENTER("ha_spider::need_info_for_auto_inc");
DBUG_PRINT("info",("spider this=%p", this));
DBUG_PRINT("info",("spider return=%s", (
!spider_param_auto_increment_mode(thd, share->auto_increment_mode) &&
!info_auto_called
) ? "TRUE" : "FALSE"));
DBUG_RETURN((
!spider_param_auto_increment_mode(thd, share->auto_increment_mode) &&
!info_auto_called
));
}
#endif
int ha_spider::update_auto_increment()
{
int error_num;
......@@ -9375,7 +9450,7 @@ int ha_spider::delete_all_rows()
DBUG_PRINT("info",("spider reset auto increment"));
pthread_mutex_lock(&share->auto_increment_mutex);
share->auto_increment_lclval = 1;
share->auto_increment_init = TRUE;
share->auto_increment_init = FALSE;
share->auto_increment_value = 1;
DBUG_PRINT("info",("spider init auto_increment_lclval=%llu",
share->auto_increment_lclval));
......@@ -9415,7 +9490,7 @@ int ha_spider::truncate()
DBUG_PRINT("info",("spider reset auto increment"));
pthread_mutex_lock(&share->auto_increment_mutex);
share->auto_increment_lclval = 1;
share->auto_increment_init = TRUE;
share->auto_increment_init = FALSE;
share->auto_increment_value = 1;
DBUG_PRINT("info",("spider init auto_increment_lclval=%llu",
share->auto_increment_lclval));
......@@ -11095,10 +11170,8 @@ int ha_spider::index_handler_init()
) {
tmp_conn_kind1 = SPIDER_CONN_KIND_HS_WRITE;
} else {
#endif
#endif
tmp_conn_kind1 = conn_kind[roop_count];
#if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET)
#ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS
}
#endif
......
......@@ -163,6 +163,9 @@ class ha_spider: public handler
uint sql_command;
int selupd_lock_mode;
bool bulk_insert;
#ifdef HANDLER_HAS_NEED_INFO_FOR_AUTO_INC
bool info_auto_called;
#endif
int bulk_size;
int direct_dup_insert;
int store_error_num;
......@@ -493,6 +496,9 @@ class ha_spider: public handler
uint max_supported_key_length() const;
uint max_supported_key_part_length() const;
uint8 table_cache_type();
#ifdef HANDLER_HAS_NEED_INFO_FOR_AUTO_INC
bool need_info_for_auto_inc();
#endif
int update_auto_increment();
void get_auto_increment(
ulonglong offset,
......
......@@ -188,3 +188,7 @@ let $MASTER_1_AUTO_INCREMENT_OFFSET2=
'srv "s_2_1"') $STR_SEMICOLON
SELECT spider_bg_direct_sql('SET SESSION AUTO_INCREMENT_OFFSET = 3', '',
'srv "s_2_2"');
let $MASTER_1_AUTO_INCREMENT_OFFSET3=
SET SESSION AUTO_INCREMENT_OFFSET = 1;
let $MASTER_1_AUTO_INCREMENT_OFFSET4=
SET SESSION AUTO_INCREMENT_OFFSET = 777;
......@@ -9,12 +9,16 @@ SET SESSION sql_log_bin= 0;
--source have_trigger.inc
--source ../include/init_slave1_1.inc
--source have_engine.inc
eval CHANGE MASTER TO
--let $SLAVE1_1_SLAVE_STATUS=`SHOW SLAVE STATUS`
if (!$SLAVE1_1_SLAVE_STATUS)
{
eval CHANGE MASTER TO
MASTER_HOST = '127.0.0.1',
MASTER_USER = 'root',
MASTER_PASSWORD = '',
MASTER_PORT = $MASTER_1_MYPORT
;
;
}
START SLAVE;
--connection master_1
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
......
......@@ -1372,6 +1372,16 @@ if ($USE_CHILD_GROUP2)
}
}
--connection master_1
if ($USE_REPLICATION)
{
save_master_pos;
--connection slave1_1
sync_with_master;
--connection master_1
--disable_query_log
SET SESSION sql_log_bin= 0;
--enable_query_log
}
--disable_warnings
DROP TABLE IF EXISTS t1;
--enable_warnings
......@@ -1539,6 +1549,16 @@ if ($HAVE_PARTITION)
}
}
--connection master_1
if ($USE_REPLICATION)
{
save_master_pos;
--connection slave1_1
sync_with_master;
--connection master_1
--disable_query_log
SET SESSION sql_log_bin= 0;
--enable_query_log
}
--disable_warnings
DROP TABLE IF EXISTS t1;
--enable_warnings
......
......@@ -180,3 +180,7 @@ let $MASTER_1_AUTO_INCREMENT_OFFSET2=
'srv "s_2_1"') $STR_SEMICOLON
SELECT spider_bg_direct_sql('SET SESSION AUTO_INCREMENT_OFFSET = 3', '',
'srv "s_2_2"');
let $MASTER_1_AUTO_INCREMENT_OFFSET3=
SET SESSION AUTO_INCREMENT_OFFSET = 1;
let $MASTER_1_AUTO_INCREMENT_OFFSET4=
SET SESSION AUTO_INCREMENT_OFFSET = 777;
......@@ -9,12 +9,16 @@ SET SESSION sql_log_bin= 0;
--source have_trigger.inc
--source ../include/init_slave1_1.inc
--source have_engine.inc
eval CHANGE MASTER TO
--let $SLAVE1_1_SLAVE_STATUS=`SHOW SLAVE STATUS`
if (!$SLAVE1_1_SLAVE_STATUS)
{
eval CHANGE MASTER TO
MASTER_HOST = '127.0.0.1',
MASTER_USER = 'root',
MASTER_PASSWORD = '',
MASTER_PORT = $MASTER_1_MYPORT
;
;
}
START SLAVE;
--connection master_1
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
......
......@@ -1372,6 +1372,16 @@ if ($USE_CHILD_GROUP2)
}
}
--connection master_1
if ($USE_REPLICATION)
{
save_master_pos;
--connection slave1_1
sync_with_master;
--connection master_1
--disable_query_log
SET SESSION sql_log_bin= 0;
--enable_query_log
}
--disable_warnings
DROP TABLE IF EXISTS t1;
--enable_warnings
......@@ -1539,6 +1549,16 @@ if ($HAVE_PARTITION)
}
}
--connection master_1
if ($USE_REPLICATION)
{
save_master_pos;
--connection slave1_1
sync_with_master;
--connection master_1
--disable_query_log
SET SESSION sql_log_bin= 0;
--enable_query_log
}
--disable_warnings
DROP TABLE IF EXISTS t1;
--enable_warnings
......
......@@ -180,3 +180,7 @@ let $MASTER_1_AUTO_INCREMENT_OFFSET2=
'srv "s_2_1"') $STR_SEMICOLON
SELECT spider_bg_direct_sql('SET SESSION AUTO_INCREMENT_OFFSET = 3', '',
'srv "s_2_2"');
let $MASTER_1_AUTO_INCREMENT_OFFSET3=
SET SESSION AUTO_INCREMENT_OFFSET = 1;
let $MASTER_1_AUTO_INCREMENT_OFFSET4=
SET SESSION AUTO_INCREMENT_OFFSET = 777;
--let $CHILD3_1_ENGINE_TYPE=Spider
--let $CHILD3_1_ENGINE=ENGINE=Spider
--source ../../include/init_spider.inc
--source ../include/init_spider.inc
eval INSERT INTO mysql.spider_link_mon_servers
(db_name, table_name, link_id, sid, server, scheme, host, port, socket,
username, password, ssl_ca, ssl_capath, ssl_cert, ssl_cipher, ssl_key,
......
--let $CHILD3_2_ENGINE_TYPE=Spider
--let $CHILD3_2_ENGINE=ENGINE=Spider
--source ../../include/init_spider.inc
--source ../include/init_spider.inc
eval INSERT INTO mysql.spider_link_mon_servers
(db_name, table_name, link_id, sid, server, scheme, host, port, socket,
username, password, ssl_ca, ssl_capath, ssl_cert, ssl_cipher, ssl_key,
......
--let $CHILD3_3_ENGINE_TYPE=Spider
--let $CHILD3_3_ENGINE=ENGINE=Spider
--source ../../include/init_spider.inc
--source ../include/init_spider.inc
eval INSERT INTO mysql.spider_link_mon_servers
(db_name, table_name, link_id, sid, server, scheme, host, port, socket,
username, password, ssl_ca, ssl_capath, ssl_cert, ssl_cipher, ssl_key,
......
--source ../../include/init_spider.inc
--source ../include/init_spider.inc
SET spider_direct_order_limit= 10000;
SET spider_init_sql_alloc_size= 1;
SET spider_conn_recycle_mode= 2;
......@@ -143,3 +143,7 @@ let $MASTER_1_AUTO_INCREMENT_OFFSET2=
SELECT spider_direct_sql('begin execute immediate \'DROP SEQUENCE "seq_t1_2"\'$STR_SEMICOLON exception when others then null$STR_SEMICOLON end$STR_SEMICOLON', '', 'srv "s_2_2"')
$STR_SEMICOLON
SELECT spider_direct_sql('CREATE SEQUENCE "seq_t1_2" START WITH 3 INCREMENT BY 4', '', 'srv "s_2_2"');
let $MASTER_1_AUTO_INCREMENT_OFFSET3=
SET SESSION AUTO_INCREMENT_OFFSET = 1;
let $MASTER_1_AUTO_INCREMENT_OFFSET4=
SET SESSION AUTO_INCREMENT_OFFSET = 777;
......@@ -99,8 +99,8 @@ Spider_direct_order_limit 0
SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
a b date_format(c, '%Y-%m-%d %H:%i:%s')
1 a 2008-08-02 10:21:39
2 b 2000-01-02 00:00:00
3 x 2011-10-18 00:00:00
2 b 2000-01-03 00:00:00
3 x 2011-10-17 00:00:00
4 d 2003-12-01 05:01:03
5 c 2002-01-01 23:59:59
delete by primary key with order and limit
......@@ -112,7 +112,7 @@ Spider_direct_order_limit 0
SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
a b date_format(c, '%Y-%m-%d %H:%i:%s')
1 a 2008-08-02 10:21:39
3 x 2011-10-18 00:00:00
3 x 2011-10-17 00:00:00
4 d 2003-12-01 05:01:03
5 c 2002-01-01 23:59:59
delete by a column without index
......@@ -124,7 +124,7 @@ Spider_direct_order_limit 0
SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
a b date_format(c, '%Y-%m-%d %H:%i:%s')
1 a 2008-08-02 10:21:39
3 x 2011-10-18 00:00:00
3 x 2011-10-17 00:00:00
4 d 2003-12-01 05:01:03
delete by primary key
DELETE FROM ta_l WHERE a = 3;
......@@ -203,8 +203,8 @@ Spider_direct_order_limit 0
SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
a b date_format(c, '%Y-%m-%d %H:%i:%s')
1 a 2008-08-02 10:21:39
2 b 2000-01-02 00:00:00
3 x 2011-10-18 00:00:00
2 b 2000-01-03 00:00:00
3 x 2011-10-17 00:00:00
4 d 2003-12-01 05:01:03
5 c 2002-01-01 23:59:59
delete by primary key with order and limit
......@@ -216,7 +216,7 @@ Spider_direct_order_limit 0
SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
a b date_format(c, '%Y-%m-%d %H:%i:%s')
1 a 2008-08-02 10:21:39
3 x 2011-10-18 00:00:00
3 x 2011-10-17 00:00:00
4 d 2003-12-01 05:01:03
5 c 2002-01-01 23:59:59
delete by a column without index
......@@ -228,7 +228,7 @@ Spider_direct_order_limit 0
SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
a b date_format(c, '%Y-%m-%d %H:%i:%s')
1 a 2008-08-02 10:21:39
3 x 2011-10-18 00:00:00
3 x 2011-10-17 00:00:00
4 d 2003-12-01 05:01:03
delete by primary key
DELETE FROM ta_l2 WHERE a = 3;
......
......@@ -279,9 +279,9 @@ Spider_direct_aggregate 20
Spider_direct_order_limit 0
SELECT a, b, c FROM ta_l_int ORDER BY a LIMIT 3;
a b c
0 2 4
1 2 4
2 3 4
4 5 6
6 7 8
SHOW GLOBAL STATUS LIKE 'Spider_direct_order_limit%';
Variable_name Value
Spider_direct_aggregate 20
......
......@@ -9,12 +9,16 @@ SET SESSION sql_log_bin= 0;
--source have_trigger.inc
--source ../include/init_slave1_1.inc
--source have_engine.inc
eval CHANGE MASTER TO
--let $SLAVE1_1_SLAVE_STATUS=`SHOW SLAVE STATUS`
if (!$SLAVE1_1_SLAVE_STATUS)
{
eval CHANGE MASTER TO
MASTER_HOST = '127.0.0.1',
MASTER_USER = 'root',
MASTER_PASSWORD = '',
MASTER_PORT = $MASTER_1_MYPORT
;
;
}
START SLAVE;
--connection master_1
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
......
......@@ -1372,6 +1372,16 @@ if ($USE_CHILD_GROUP2)
}
}
--connection master_1
if ($USE_REPLICATION)
{
save_master_pos;
--connection slave1_1
sync_with_master;
--connection master_1
--disable_query_log
SET SESSION sql_log_bin= 0;
--enable_query_log
}
--disable_warnings
DROP TABLE IF EXISTS t1;
--enable_warnings
......@@ -1539,6 +1549,16 @@ if ($HAVE_PARTITION)
}
}
--connection master_1
if ($USE_REPLICATION)
{
save_master_pos;
--connection slave1_1
sync_with_master;
--connection master_1
--disable_query_log
SET SESSION sql_log_bin= 0;
--enable_query_log
}
--disable_warnings
DROP TABLE IF EXISTS t1;
--enable_warnings
......
--let $CHILD3_1_ENGINE_TYPE=Spider
--let $CHILD3_1_ENGINE=ENGINE=Spider
--source ../../include/init_spider.inc
--source ../include/init_spider.inc
eval INSERT INTO mysql.spider_link_mon_servers
(db_name, table_name, link_id, sid, server, scheme, host, port, socket,
username, password, ssl_ca, ssl_capath, ssl_cert, ssl_cipher, ssl_key,
......
--let $CHILD3_2_ENGINE_TYPE=Spider
--let $CHILD3_2_ENGINE=ENGINE=Spider
--source ../../include/init_spider.inc
--source ../include/init_spider.inc
eval INSERT INTO mysql.spider_link_mon_servers
(db_name, table_name, link_id, sid, server, scheme, host, port, socket,
username, password, ssl_ca, ssl_capath, ssl_cert, ssl_cipher, ssl_key,
......
--let $CHILD3_3_ENGINE_TYPE=Spider
--let $CHILD3_3_ENGINE=ENGINE=Spider
--source ../../include/init_spider.inc
--source ../include/init_spider.inc
eval INSERT INTO mysql.spider_link_mon_servers
(db_name, table_name, link_id, sid, server, scheme, host, port, socket,
username, password, ssl_ca, ssl_capath, ssl_cert, ssl_cipher, ssl_key,
......
--source ../../include/init_spider.inc
--source ../include/init_spider.inc
SET spider_direct_order_limit= 10000;
SET spider_init_sql_alloc_size= 1;
SET spider_conn_recycle_mode= 2;
......@@ -144,3 +144,7 @@ let $MASTER_1_AUTO_INCREMENT_OFFSET2=
SELECT spider_direct_sql('begin execute immediate \'DROP SEQUENCE "seq_t1_2"\'$STR_SEMICOLON exception when others then null$STR_SEMICOLON end$STR_SEMICOLON', '', 'srv "s_2_2"')
$STR_SEMICOLON
SELECT spider_direct_sql('CREATE SEQUENCE "seq_t1_2" START WITH 3 INCREMENT BY 4', '', 'srv "s_2_2"');
let $MASTER_1_AUTO_INCREMENT_OFFSET3=
SET SESSION AUTO_INCREMENT_OFFSET = 1;
let $MASTER_1_AUTO_INCREMENT_OFFSET4=
SET SESSION AUTO_INCREMENT_OFFSET = 777;
......@@ -99,8 +99,8 @@ Spider_direct_order_limit 0
SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
a b date_format(c, '%Y-%m-%d %H:%i:%s')
1 a 2008-08-02 10:21:39
2 b 2000-01-02 00:00:00
3 x 2011-10-18 00:00:00
2 b 2000-01-03 00:00:00
3 x 2011-10-17 00:00:00
4 d 2003-12-01 05:01:03
5 c 2002-01-01 23:59:59
delete by primary key with order and limit
......@@ -112,7 +112,7 @@ Spider_direct_order_limit 0
SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
a b date_format(c, '%Y-%m-%d %H:%i:%s')
1 a 2008-08-02 10:21:39
3 x 2011-10-18 00:00:00
3 x 2011-10-17 00:00:00
4 d 2003-12-01 05:01:03
5 c 2002-01-01 23:59:59
delete by a column without index
......@@ -124,7 +124,7 @@ Spider_direct_order_limit 0
SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
a b date_format(c, '%Y-%m-%d %H:%i:%s')
1 a 2008-08-02 10:21:39
3 x 2011-10-18 00:00:00
3 x 2011-10-17 00:00:00
4 d 2003-12-01 05:01:03
delete by primary key
DELETE FROM ta_l WHERE a = 3;
......@@ -203,8 +203,8 @@ Spider_direct_order_limit 0
SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
a b date_format(c, '%Y-%m-%d %H:%i:%s')
1 a 2008-08-02 10:21:39
2 b 2000-01-02 00:00:00
3 x 2011-10-18 00:00:00
2 b 2000-01-03 00:00:00
3 x 2011-10-17 00:00:00
4 d 2003-12-01 05:01:03
5 c 2002-01-01 23:59:59
delete by primary key with order and limit
......@@ -216,7 +216,7 @@ Spider_direct_order_limit 0
SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
a b date_format(c, '%Y-%m-%d %H:%i:%s')
1 a 2008-08-02 10:21:39
3 x 2011-10-18 00:00:00
3 x 2011-10-17 00:00:00
4 d 2003-12-01 05:01:03
5 c 2002-01-01 23:59:59
delete by a column without index
......@@ -228,7 +228,7 @@ Spider_direct_order_limit 0
SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
a b date_format(c, '%Y-%m-%d %H:%i:%s')
1 a 2008-08-02 10:21:39
3 x 2011-10-18 00:00:00
3 x 2011-10-17 00:00:00
4 d 2003-12-01 05:01:03
delete by primary key
DELETE FROM ta_l2 WHERE a = 3;
......
......@@ -279,9 +279,9 @@ Spider_direct_aggregate 20
Spider_direct_order_limit 0
SELECT a, b, c FROM ta_l_int ORDER BY a LIMIT 3;
a b c
0 2 4
1 2 4
2 3 4
4 5 6
6 7 8
SHOW GLOBAL STATUS LIKE 'Spider_direct_order_limit%';
Variable_name Value
Spider_direct_aggregate 20
......
......@@ -9,12 +9,16 @@ SET SESSION sql_log_bin= 0;
--source have_trigger.inc
--source ../include/init_slave1_1.inc
--source have_engine.inc
eval CHANGE MASTER TO
--let $SLAVE1_1_SLAVE_STATUS=`SHOW SLAVE STATUS`
if (!$SLAVE1_1_SLAVE_STATUS)
{
eval CHANGE MASTER TO
MASTER_HOST = '127.0.0.1',
MASTER_USER = 'root',
MASTER_PASSWORD = '',
MASTER_PORT = $MASTER_1_MYPORT
;
;
}
START SLAVE;
--connection master_1
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
......
......@@ -1372,6 +1372,16 @@ if ($USE_CHILD_GROUP2)
}
}
--connection master_1
if ($USE_REPLICATION)
{
save_master_pos;
--connection slave1_1
sync_with_master;
--connection master_1
--disable_query_log
SET SESSION sql_log_bin= 0;
--enable_query_log
}
--disable_warnings
DROP TABLE IF EXISTS t1;
--enable_warnings
......@@ -1539,6 +1549,16 @@ if ($HAVE_PARTITION)
}
}
--connection master_1
if ($USE_REPLICATION)
{
save_master_pos;
--connection slave1_1
sync_with_master;
--connection master_1
--disable_query_log
SET SESSION sql_log_bin= 0;
--enable_query_log
}
--disable_warnings
DROP TABLE IF EXISTS t1;
--enable_warnings
......
......@@ -9,12 +9,16 @@ SET SESSION sql_log_bin= 0;
--source have_trigger.inc
--source ../include/init_slave1_1.inc
--source have_engine.inc
eval CHANGE MASTER TO
--let $SLAVE1_1_SLAVE_STATUS=`SHOW SLAVE STATUS`
if (!$SLAVE1_1_SLAVE_STATUS)
{
eval CHANGE MASTER TO
MASTER_HOST = '127.0.0.1',
MASTER_USER = 'root',
MASTER_PASSWORD = '',
MASTER_PORT = $MASTER_1_MYPORT
;
;
}
START SLAVE;
--connection master_1
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
......
......@@ -1372,6 +1372,16 @@ if ($USE_CHILD_GROUP2)
}
}
--connection master_1
if ($USE_REPLICATION)
{
save_master_pos;
--connection slave1_1
sync_with_master;
--connection master_1
--disable_query_log
SET SESSION sql_log_bin= 0;
--enable_query_log
}
--disable_warnings
DROP TABLE IF EXISTS t1;
--enable_warnings
......@@ -1539,6 +1549,16 @@ if ($HAVE_PARTITION)
}
}
--connection master_1
if ($USE_REPLICATION)
{
save_master_pos;
--connection slave1_1
sync_with_master;
--connection master_1
--disable_query_log
SET SESSION sql_log_bin= 0;
--enable_query_log
}
--disable_warnings
DROP TABLE IF EXISTS t1;
--enable_warnings
......
......@@ -97,6 +97,8 @@ static const char *name_quote_str = SPIDER_SQL_NAME_QUOTE_STR;
#define SPIDER_SQL_SELECT_WRAPPER_TAIL_LEN sizeof(SPIDER_SQL_SELECT_WRAPPER_TAIL_STR) - 1
#define SPIDER_SQL_ROW_NUM_STR "row_num"
#define SPIDER_SQL_ROW_NUM_LEN sizeof(SPIDER_SQL_ROW_NUM_STR) - 1
#define SPIDER_SQL_ROWNUM_STR "rownum"
#define SPIDER_SQL_ROWNUM_LEN sizeof(SPIDER_SQL_ROWNUM_STR) - 1
#define SPIDER_SQL_NEXTVAL_STR ".nextval"
#define SPIDER_SQL_NEXTVAL_LEN sizeof(SPIDER_SQL_NEXTVAL_STR) - 1
#define SPIDER_SQL_CURRVAL_STR ".currval"
......@@ -1145,7 +1147,7 @@ void spider_db_oracle::bg_connect()
{
DBUG_PRINT("info",("spider create error handler error"));
stored_error_num = set_error(res, errhp, 0, NULL, NULL);
disconnect();
bg_disconnect();
goto error;
}
DBUG_PRINT("info",("spider OCI init errhp=%p", errhp));
......@@ -1155,7 +1157,7 @@ void spider_db_oracle::bg_connect()
{
DBUG_PRINT("info",("spider create server handler error"));
stored_error_num = set_error(res, errhp, 0, NULL, NULL);
disconnect();
bg_disconnect();
goto error;
}
DBUG_PRINT("info",("spider OCI init srvhp=%p", srvhp));
......@@ -1166,7 +1168,7 @@ void spider_db_oracle::bg_connect()
{
DBUG_PRINT("info",("spider attach server error"));
stored_error_num = set_error(res, errhp, 0, NULL, NULL);
disconnect();
bg_disconnect();
goto error;
}
......@@ -1175,7 +1177,7 @@ void spider_db_oracle::bg_connect()
{
DBUG_PRINT("info",("spider create service context error"));
stored_error_num = set_error(res, errhp, 0, NULL, NULL);
disconnect();
bg_disconnect();
goto error;
}
DBUG_PRINT("info",("spider OCI init svchp=%p", svchp));
......@@ -1185,7 +1187,7 @@ void spider_db_oracle::bg_connect()
{
DBUG_PRINT("info",("spider set server attr error"));
stored_error_num = set_error(res, errhp, 0, NULL, NULL);
disconnect();
bg_disconnect();
goto error;
}
......@@ -1194,7 +1196,7 @@ void spider_db_oracle::bg_connect()
{
DBUG_PRINT("info",("spider create session handler error"));
stored_error_num = set_error(res, errhp, 0, NULL, NULL);
disconnect();
bg_disconnect();
goto error;
}
DBUG_PRINT("info",("spider OCI init usrhp=%p", usrhp));
......@@ -1205,7 +1207,7 @@ void spider_db_oracle::bg_connect()
{
DBUG_PRINT("info",("spider set username attr error"));
stored_error_num = set_error(res, errhp, 0, NULL, NULL);
disconnect();
bg_disconnect();
goto error;
}
......@@ -1215,7 +1217,7 @@ void spider_db_oracle::bg_connect()
{
DBUG_PRINT("info",("spider set password attr error"));
stored_error_num = set_error(res, errhp, 0, NULL, NULL);
disconnect();
bg_disconnect();
goto error;
}
......@@ -1224,7 +1226,7 @@ void spider_db_oracle::bg_connect()
{
DBUG_PRINT("info",("spider session begin error"));
stored_error_num = set_error(res, errhp, 0, NULL, NULL);
disconnect();
bg_disconnect();
goto error;
}
DBUG_PRINT("info",("spider OCISessionBegin"));
......@@ -1235,7 +1237,7 @@ void spider_db_oracle::bg_connect()
{
DBUG_PRINT("info",("spider set session attr error"));
stored_error_num = set_error(res, errhp, 0, NULL, NULL);
disconnect();
bg_disconnect();
goto error;
}
......@@ -1248,7 +1250,7 @@ void spider_db_oracle::bg_connect()
SPIDER_SQL_SET_NLS_TIMESTAMP_FORMAT_LEN, -1))
) {
DBUG_PRINT("info",("spider init connection error"));
disconnect();
bg_disconnect();
goto error;
}
DBUG_VOID_RETURN;
......@@ -6506,6 +6508,7 @@ int spider_oracle_handler::append_condition_part(
{
case SPIDER_SQL_TYPE_SELECT_SQL:
case SPIDER_SQL_TYPE_TMP_SQL:
DBUG_PRINT("info",("spider case1 sql_type=%lu", sql_type));
if (test_flg)
{
str = NULL;
......@@ -6518,6 +6521,7 @@ int spider_oracle_handler::append_condition_part(
case SPIDER_SQL_TYPE_UPDATE_SQL:
case SPIDER_SQL_TYPE_DELETE_SQL:
case SPIDER_SQL_TYPE_BULK_UPDATE_SQL:
DBUG_PRINT("info",("spider case2 sql_type=%lu", sql_type));
if (test_flg)
{
str = NULL;
......@@ -6527,6 +6531,7 @@ int spider_oracle_handler::append_condition_part(
}
break;
case SPIDER_SQL_TYPE_HANDLER:
DBUG_PRINT("info",("spider case3 sql_type=%lu", sql_type));
if (test_flg)
{
str = NULL;
......@@ -6553,10 +6558,13 @@ int spider_oracle_handler::append_condition_part(
}
break;
default:
DBUG_PRINT("info",("spider default sql_type=%lu", sql_type));
DBUG_RETURN(0);
}
error_num = append_condition(str, alias, alias_length, start_where,
sql_type);
DBUG_PRINT("info",("spider str=%s", str ? str->c_ptr_safe() : "NULL"));
DBUG_PRINT("info",("spider length=%u", str ? str->length() : 0));
DBUG_RETURN(error_num);
}
......@@ -6570,6 +6578,11 @@ int spider_oracle_handler::append_condition(
int error_num, restart_pos = 0, start_where_pos;
SPIDER_CONDITION *tmp_cond = spider->condition;
DBUG_ENTER("spider_oracle_handler::append_condition");
DBUG_PRINT("info",("spider str=%p", str));
DBUG_PRINT("info",("spider alias=%p", alias));
DBUG_PRINT("info",("spider alias_length=%u", alias_length));
DBUG_PRINT("info",("spider start_where=%s", start_where ? "TRUE" : "FALSE"));
DBUG_PRINT("info",("spider sql_type=%lu", sql_type));
if (str && start_where)
{
start_where_pos = str->length();
......@@ -7151,6 +7164,8 @@ int spider_oracle_handler::append_key_order_for_direct_order_limit_with_alias(
sql_part.q_append(SPIDER_SQL_COMMA_STR, SPIDER_SQL_COMMA_LEN);
}
}
} else {
all_desc = FALSE;
}
uint pos_diff;
if (str == &update_sql)
......@@ -7642,6 +7657,8 @@ int spider_oracle_handler::append_limit_part(
DBUG_RETURN(0);
}
error_num = append_limit(str, offset, limit);
DBUG_PRINT("info",("spider str=%s", str->c_ptr_safe()));
DBUG_PRINT("info",("spider length=%u", str->length()));
DBUG_RETURN(error_num);
}
......@@ -7695,6 +7712,21 @@ int spider_oracle_handler::append_limit(
DBUG_PRINT("info", ("spider limit=%lld", limit));
if (offset || limit < 9223372036854775807LL)
{
if ((int) str->length() == where_pos)
{
if (offset)
{
int error_num;
if ((error_num = append_key_order_for_direct_order_limit_with_alias(
str, NULL, 0)))
DBUG_RETURN(error_num);
} else {
if (str->reserve(SPIDER_SQL_WHERE_LEN + SPIDER_SQL_ROWNUM_LEN))
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
str->q_append(SPIDER_SQL_WHERE_STR, SPIDER_SQL_WHERE_LEN);
str->q_append(SPIDER_SQL_ROWNUM_STR, SPIDER_SQL_ROWNUM_LEN);
}
}
if (offset)
{
if (str->reserve(SPIDER_SQL_BETWEEN_LEN + SPIDER_SQL_AND_LEN +
......@@ -7702,11 +7734,11 @@ int spider_oracle_handler::append_limit(
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
str->q_append(SPIDER_SQL_BETWEEN_STR, SPIDER_SQL_BETWEEN_LEN);
length = (uint32) (my_charset_bin.cset->longlong10_to_str)(
&my_charset_bin, buf, SPIDER_LONGLONG_LEN + 1, -10, offset);
&my_charset_bin, buf, SPIDER_LONGLONG_LEN + 1, -10, offset + 1);
str->q_append(buf, length);
str->q_append(SPIDER_SQL_AND_STR, SPIDER_SQL_AND_LEN);
length = (uint32) (my_charset_bin.cset->longlong10_to_str)(
&my_charset_bin, buf, SPIDER_LONGLONG_LEN + 1, -10, limit);
&my_charset_bin, buf, SPIDER_LONGLONG_LEN + 1, -10, limit + offset);
str->q_append(buf, length);
} else {
if (str->reserve(SPIDER_SQL_HS_LTEQUAL_LEN +
......@@ -7743,6 +7775,8 @@ int spider_oracle_handler::append_select_lock_part(
DBUG_RETURN(0);
}
error_num = append_select_lock(str);
DBUG_PRINT("info",("spider str=%s", str->c_ptr_safe()));
DBUG_PRINT("info",("spider length=%u", str->length()));
DBUG_RETURN(error_num);
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment