Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
df96eb5d
Commit
df96eb5d
authored
Feb 18, 2016
by
sjaakola
Committed by
Nirbhay Choubey
Aug 21, 2016
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Refs: MW-248
- test cases from PXC for reproducing the issue - initial fix
parent
a53ac77c
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
341 additions
and
12 deletions
+341
-12
mysql-test/suite/galera/r/galera_as_slave_autoinc.result
mysql-test/suite/galera/r/galera_as_slave_autoinc.result
+61
-0
mysql-test/suite/galera/r/galera_binlog_stmt_autoinc.result
mysql-test/suite/galera/r/galera_binlog_stmt_autoinc.result
+74
-0
mysql-test/suite/galera/t/galera_as_slave_autoinc.cnf
mysql-test/suite/galera/t/galera_as_slave_autoinc.cnf
+1
-0
mysql-test/suite/galera/t/galera_as_slave_autoinc.test
mysql-test/suite/galera/t/galera_as_slave_autoinc.test
+79
-0
mysql-test/suite/galera/t/galera_binlog_stmt_autoinc.test
mysql-test/suite/galera/t/galera_binlog_stmt_autoinc.test
+114
-0
sql/sql_class.h
sql/sql_class.h
+1
-0
sql/sql_parse.cc
sql/sql_parse.cc
+11
-12
No files found.
mysql-test/suite/galera/r/galera_as_slave_autoinc.result
0 → 100644
View file @
df96eb5d
START SLAVE USER='root';
Warnings:
Note 1759 Sending passwords in plain text without SSL/TLS is extremely insecure.
SET SESSION binlog_format='STATEMENT';
CREATE TABLE t1 (
i int(11) NOT NULL AUTO_INCREMENT,
c char(32) DEFAULT 'dummy_text',
PRIMARY KEY (i)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
insert into t1(i) values(null);
select * from t1;
i c
1 dummy_text
insert into t1(i) values(null), (null), (null);
select * from t1;
i c
1 dummy_text
2 dummy_text
3 dummy_text
4 dummy_text
show variables like 'binlog_format';
Variable_name Value
binlog_format STATEMENT
show variables like '%auto_increment%';
Variable_name Value
auto_increment_increment 1
auto_increment_offset 1
wsrep_auto_increment_control ON
select * from t1;
i c
1 dummy_text
2 dummy_text
3 dummy_text
4 dummy_text
show variables like 'binlog_format';
Variable_name Value
binlog_format ROW
show variables like '%auto_increment%';
Variable_name Value
auto_increment_increment 2
auto_increment_offset 1
wsrep_auto_increment_control ON
select * from t1;
i c
1 dummy_text
2 dummy_text
3 dummy_text
4 dummy_text
show variables like 'binlog_format';
Variable_name Value
binlog_format ROW
show variables like '%auto_increment%';
Variable_name Value
auto_increment_increment 2
auto_increment_offset 2
wsrep_auto_increment_control ON
DROP TABLE t1;
STOP SLAVE;
RESET SLAVE ALL;
SET GLOBAL binlog_format='ROW';
RESET MASTER;
mysql-test/suite/galera/r/galera_binlog_stmt_autoinc.result
0 → 100644
View file @
df96eb5d
SET GLOBAL wsrep_forced_binlog_format='STATEMENT';
SET GLOBAL wsrep_forced_binlog_format='STATEMENT';
CREATE TABLE t1 (
i int(11) NOT NULL AUTO_INCREMENT,
c char(32) DEFAULT 'dummy_text',
PRIMARY KEY (i)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
insert into t1(i) values(null);
select * from t1;
i c
1 dummy_text
insert into t1(i) values(null), (null), (null);
select * from t1;
i c
1 dummy_text
3 dummy_text
5 dummy_text
7 dummy_text
select * from t1;
i c
1 dummy_text
3 dummy_text
5 dummy_text
7 dummy_text
SET GLOBAL wsrep_forced_binlog_format='none';
SET GLOBAL wsrep_forced_binlog_format='none';
drop table t1;
SET SESSION binlog_format='STATEMENT';
show variables like 'binlog_format';
Variable_name Value
binlog_format STATEMENT
SET GLOBAL wsrep_auto_increment_control='OFF';
SET SESSION auto_increment_increment = 3;
SET SESSION auto_increment_offset = 1;
CREATE TABLE t1 (
i int(11) NOT NULL AUTO_INCREMENT,
c char(32) DEFAULT 'dummy_text',
PRIMARY KEY (i)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
insert into t1(i) values(null);
select * from t1;
i c
1 dummy_text
insert into t1(i) values(null), (null), (null);
select * from t1;
i c
1 dummy_text
4 dummy_text
7 dummy_text
10 dummy_text
select * from t1;
i c
1 dummy_text
4 dummy_text
7 dummy_text
10 dummy_text
SET GLOBAL wsrep_auto_increment_control='ON';
SET SESSION binlog_format='ROW';
show variables like 'binlog_format';
Variable_name Value
binlog_format ROW
show variables like '%auto_increment%';
Variable_name Value
auto_increment_increment 2
auto_increment_offset 1
wsrep_auto_increment_control ON
SET GLOBAL wsrep_auto_increment_control='OFF';
show variables like '%auto_increment%';
Variable_name Value
auto_increment_increment 3
auto_increment_offset 1
wsrep_auto_increment_control OFF
SET GLOBAL wsrep_auto_increment_control='ON';
drop table t1;
mysql-test/suite/galera/t/galera_as_slave_autoinc.cnf
0 → 100644
View file @
df96eb5d
!include ../galera_2nodes_as_slave.cnf
mysql-test/suite/galera/t/galera_as_slave_autoinc.test
0 → 100644
View file @
df96eb5d
#
# Test Galera as a slave to a MySQL master
#
# The galera/galera_2node_slave.cnf describes the setup of the nodes
#
--
source
include
/
have_innodb
.
inc
--
source
include
/
have_log_bin
.
inc
# As node #1 is not a Galera node, we connect to node #2 in order to run include/galera_cluster.inc
--
connect
node_2a
,
127.0
.
0.1
,
root
,
,
test
,
$NODE_MYPORT_2
--
source
include
/
galera_cluster
.
inc
--
connection
node_2
--
disable_query_log
--
eval
CHANGE
MASTER
TO
MASTER_HOST
=
'127.0.0.1'
,
MASTER_PORT
=
$NODE_MYPORT_1
;
--
enable_query_log
START
SLAVE
USER
=
'root'
;
--
connection
node_1
##
## Verify the correct operation of the auto-increment when
## the binlog format set to the 'STATEMENT' on the master node:
##
SET
SESSION
binlog_format
=
'STATEMENT'
;
CREATE
TABLE
t1
(
i
int
(
11
)
NOT
NULL
AUTO_INCREMENT
,
c
char
(
32
)
DEFAULT
'dummy_text'
,
PRIMARY
KEY
(
i
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
latin1
;
insert
into
t1
(
i
)
values
(
null
);
select
*
from
t1
;
insert
into
t1
(
i
)
values
(
null
),
(
null
),
(
null
);
select
*
from
t1
;
show
variables
like
'binlog_format'
;
show
variables
like
'%auto_increment%'
;
--
connection
node_2
--
let
$wait_condition
=
SELECT
COUNT
(
*
)
=
1
FROM
INFORMATION_SCHEMA
.
TABLES
WHERE
TABLE_NAME
=
't1'
;
--
source
include
/
wait_condition
.
inc
--
let
$wait_condition
=
SELECT
COUNT
(
*
)
=
4
FROM
t1
;
--
source
include
/
wait_condition
.
inc
select
*
from
t1
;
show
variables
like
'binlog_format'
;
show
variables
like
'%auto_increment%'
;
--
connect
node_3
,
127.0
.
0.1
,
root
,
,
test
,
$NODE_MYPORT_3
select
*
from
t1
;
show
variables
like
'binlog_format'
;
show
variables
like
'%auto_increment%'
;
--
connection
node_1
DROP
TABLE
t1
;
--
connection
node_2
--
let
$wait_condition
=
SELECT
COUNT
(
*
)
=
0
FROM
INFORMATION_SCHEMA
.
TABLES
WHERE
TABLE_NAME
=
't1'
;
--
source
include
/
wait_condition
.
inc
STOP
SLAVE
;
RESET
SLAVE
ALL
;
--
connection
node_1
SET
GLOBAL
binlog_format
=
'ROW'
;
RESET
MASTER
;
mysql-test/suite/galera/t/galera_binlog_stmt_autoinc.test
0 → 100644
View file @
df96eb5d
##
## Tests the auto-increment with binlog in STATEMENT mode.
##
--
source
include
/
galera_cluster
.
inc
--
source
include
/
have_innodb
.
inc
##
## Verify the correct operation of the auto-increment when the binlog
## format artificially set to the 'STATEMENT' (although this mode is
## not recommended in the current version):
##
--
connection
node_2
SET
GLOBAL
wsrep_forced_binlog_format
=
'STATEMENT'
;
--
connection
node_1
SET
GLOBAL
wsrep_forced_binlog_format
=
'STATEMENT'
;
CREATE
TABLE
t1
(
i
int
(
11
)
NOT
NULL
AUTO_INCREMENT
,
c
char
(
32
)
DEFAULT
'dummy_text'
,
PRIMARY
KEY
(
i
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
latin1
;
insert
into
t1
(
i
)
values
(
null
);
select
*
from
t1
;
insert
into
t1
(
i
)
values
(
null
),
(
null
),
(
null
);
select
*
from
t1
;
--
connection
node_2
select
*
from
t1
;
SET
GLOBAL
wsrep_forced_binlog_format
=
'none'
;
--
connection
node_1
SET
GLOBAL
wsrep_forced_binlog_format
=
'none'
;
drop
table
t1
;
##
## Check the operation when the automatic control over the auto-increment
## settings is switched off, that is, when we use the increment step and
## the offset specified by the user. In the current session, the binlog
## format is set to 'STATEMENT'. It is important that the values of the
## auto-increment options does not changed on other node - it allows us
## to check the correct transmission of the auto-increment options to
## other nodes:
##
--
disable_warnings
SET
SESSION
binlog_format
=
'STATEMENT'
;
--
enable_warnings
show
variables
like
'binlog_format'
;
SET
GLOBAL
wsrep_auto_increment_control
=
'OFF'
;
SET
SESSION
auto_increment_increment
=
3
;
SET
SESSION
auto_increment_offset
=
1
;
CREATE
TABLE
t1
(
i
int
(
11
)
NOT
NULL
AUTO_INCREMENT
,
c
char
(
32
)
DEFAULT
'dummy_text'
,
PRIMARY
KEY
(
i
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
latin1
;
insert
into
t1
(
i
)
values
(
null
);
select
*
from
t1
;
insert
into
t1
(
i
)
values
(
null
),
(
null
),
(
null
);
select
*
from
t1
;
--
connection
node_2
select
*
from
t1
;
--
connection
node_1
##
## Verify the return to automatic calculation of the step
## and offset of the auto-increment:
##
SET
GLOBAL
wsrep_auto_increment_control
=
'ON'
;
SET
SESSION
binlog_format
=
'ROW'
;
show
variables
like
'binlog_format'
;
show
variables
like
'%auto_increment%'
;
##
## Verify the recovery of original user-defined values after
## stopping the automatic control over auto-increment:
##
SET
GLOBAL
wsrep_auto_increment_control
=
'OFF'
;
show
variables
like
'%auto_increment%'
;
##
## Restore original options and drop test table:
##
SET
GLOBAL
wsrep_auto_increment_control
=
'ON'
;
drop
table
t1
;
sql/sql_class.h
View file @
df96eb5d
...
...
@@ -660,6 +660,7 @@ typedef struct system_variables
uint
wsrep_sync_wait
;
ulong
wsrep_retry_autocommit
;
ulong
wsrep_OSU_method
;
ulong
wsrep_auto_increment_control
;
#endif
double
long_query_time_double
;
...
...
sql/sql_parse.cc
View file @
df96eb5d
...
...
@@ -6805,18 +6805,17 @@ void THD::reset_for_next_command()
transactions. Appliers and replayers are either processing ROW
events or get autoinc variable values from Query_log_event.
*/
if
(
WSREP
(
thd
)
&&
thd
->
wsrep_exec_mode
==
LOCAL_STATE
)
{
if
(
wsrep_auto_increment_control
)
{
if
(
thd
->
variables
.
auto_increment_offset
!=
global_system_variables
.
auto_increment_offset
)
thd
->
variables
.
auto_increment_offset
=
global_system_variables
.
auto_increment_offset
;
if
(
thd
->
variables
.
auto_increment_increment
!=
global_system_variables
.
auto_increment_increment
)
thd
->
variables
.
auto_increment_increment
=
global_system_variables
.
auto_increment_increment
;
}
if
(
WSREP
(
thd
)
&&
thd
->
wsrep_exec_mode
==
LOCAL_STATE
&&
!
thd
->
slave_thread
&&
wsrep_auto_increment_control
)
{
if
(
thd
->
variables
.
auto_increment_offset
!=
global_system_variables
.
auto_increment_offset
)
thd
->
variables
.
auto_increment_offset
=
global_system_variables
.
auto_increment_offset
;
if
(
thd
->
variables
.
auto_increment_increment
!=
global_system_variables
.
auto_increment_increment
)
thd
->
variables
.
auto_increment_increment
=
global_system_variables
.
auto_increment_increment
;
}
#endif
/* WITH_WSREP */
thd
->
query_start_used
=
0
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment