1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

Merge branch '10.2' into bb-10.2-ext

This commit is contained in:
Sergei Golubchik
2017-09-23 20:22:30 +02:00
104 changed files with 457 additions and 160 deletions

View File

View File

@ -13,11 +13,10 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
INCLUDE(FindPkgConfig)
# http://www.cmake.org/cmake/help/v3.0/module/FindPkgConfig.html
MACRO(CHECK_SYSTEMD)
IF(UNIX)
INCLUDE(FindPkgConfig)
# http://www.cmake.org/cmake/help/v3.0/module/FindPkgConfig.html
SET(WITH_SYSTEMD "auto" CACHE STRING "Enable systemd scripts and notification support")
IF(WITH_SYSTEMD STREQUAL "yes" OR WITH_SYSTEMD STREQUAL "auto")
IF(PKG_CONFIG_FOUND)

View File

@ -18,8 +18,8 @@
# and replication is started from it.
#
--source include/master-slave.inc
--source include/have_binlog_format_mixed.inc
--source include/master-slave.inc
--connection slave
# Make sure the slave is stopped while we are messing with master.

View File

@ -7,9 +7,9 @@
# WL2540 replication events checksum
# Testing configuration parameters
--source include/master-slave.inc
--source include/have_debug.inc
--source include/have_binlog_format_mixed.inc
--source include/master-slave.inc
call mtr.add_suppression('Slave can not handle replication events with the checksum that master is configured to log');
call mtr.add_suppression('Replication event checksum verification failed');

View File

@ -35,8 +35,8 @@
# Configuring the Environment
######################################################################
source include/have_debug.inc;
source include/master-slave.inc;
source include/have_log_bin.inc;
source include/master-slave.inc;
connection slave;

View File

@ -11,8 +11,8 @@
# check if START SLAVE, RESET SLAVE, CHANGE MASTER reset Last_slave_error and
# Last_slave_errno in SHOW SLAVE STATUS (1st and 3rd commands did not: bug 986)
-- source include/master-slave.inc
source include/have_innodb.inc;
source include/master-slave.inc;
--disable_query_log
CALL mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");

View File

@ -15,8 +15,9 @@
# BUG#55322: SHOW BINLOG EVENTS increases @@SESSION.MAX_ALLOWED_PACKET
# max-out size db name
source include/master-slave.inc;
source include/have_binlog_format_row.inc;
source include/master-slave.inc;
call mtr.add_suppression("Slave I/O: Got a packet bigger than 'slave_max_allowed_packet' bytes, .*error.* 1153");
call mtr.add_suppression("Log entry on master is longer than slave_max_allowed_packet");
let $db= DB_NAME_OF_MAX_LENGTH_AKA_NAME_LEN_64_BYTES_____________________;

View File

@ -16,8 +16,8 @@
# so if it is needed, it should be set explicitly before each call.
#
--source include/master-slave.inc
--source include/have_innodb.inc
--source include/master-slave.inc
connection slave;
# Test that SUPER is required to change @@replicate_events_marked_for_skip.

View File

@ -25,8 +25,8 @@
# IO thread does not do it in an uncontrolled manner.
--source include/have_binlog_format_statement.inc
--source include/master-slave.inc
--source include/have_innodb.inc
--source include/master-slave.inc
--disable_query_log
CREATE TABLE t1 (c1 TEXT) engine=InnoDB;

View File

@ -32,12 +32,12 @@
# Configuring the environment
########################################################################################
--echo =====Configuring the enviroment=======;
--source include/master-slave.inc
--source include/not_embedded.inc
--source include/not_valgrind.inc
--source include/have_debug.inc
--source include/have_innodb.inc
--source include/not_crashrep.inc
--source include/master-slave.inc
call mtr.add_suppression('Attempting backtrace');
call mtr.add_suppression("Recovery from master pos .* and file master-bin.000001");

View File

@ -745,3 +745,9 @@ f1 f2
drop view v1;
drop table t1;
SET @@sql_mode= @save_mode;
CREATE TABLE t1 (f INT);
CREATE VIEW v1 AS SELECT * FROM t1 WHERE f <=> 'foo' WITH CHECK OPTION;
REPLACE INTO v1 SET f = NULL;
ERROR 22007: Truncated incorrect DOUBLE value: 'foo'
DROP VIEW v1;
DROP TABLE t1;

View File

@ -2569,6 +2569,14 @@ OPTIMIZE TABLE t1;
Table Op Msg_type Msg_text
test.t1 optimize status OK
DROP TABLE t1;
CREATE TABLE t1(a INT, b CHAR(10), KEY(a), KEY(b)) engine=myisam;
INSERT INTO t1 VALUES(1,'0'),(2,'0'),(3,'0'),(4,'0'),(5,'0'),
(6,'0'),(7,'0');
flush tables test.t1 for export;
insert into t1 values (8,'0');
ERROR HY000: Table 't1' was locked with a READ lock and can't be updated
unlock tables;
drop table t1;
show variables like 'myisam_block_size';
Variable_name Value
myisam_block_size 1024

View File

@ -127,3 +127,56 @@ Warning 1264 Out of range value for column 'a' at row 1
Warning 1264 Out of range value for column 'b' at row 1
DROP TABLE t1;
SET @@global.mysql56_temporal_format=DEFAULT;
set time_zone='Europe/Moscow';
set global mysql56_temporal_format=false;
create table t1 (a timestamp);
set timestamp=1288477526;
insert t1 values (null);
insert t1 values ();
set timestamp=1288481126;
insert t1 values (null);
insert t1 values ();
select a, unix_timestamp(a) from t1;
a unix_timestamp(a)
2010-10-31 02:25:26 1288477526
2010-10-31 02:25:26 1288477526
2010-10-31 02:25:26 1288481126
2010-10-31 02:25:26 1288481126
set global mysql56_temporal_format=true;
select a, unix_timestamp(a) from t1;
a unix_timestamp(a)
2010-10-31 02:25:26 1288477526
2010-10-31 02:25:26 1288477526
2010-10-31 02:25:26 1288481126
2010-10-31 02:25:26 1288481126
alter table t1 modify a timestamp;
select a, unix_timestamp(a) from t1;
a unix_timestamp(a)
2010-10-31 02:25:26 1288477526
2010-10-31 02:25:26 1288477526
2010-10-31 02:25:26 1288481126
2010-10-31 02:25:26 1288481126
drop table t1;
set global mysql56_temporal_format=false;
create table t1 (a timestamp);
set timestamp=1288477526;
insert t1 values (null);
set timestamp=1288481126;
insert t1 values (null);
select a, unix_timestamp(a) from t1;
a unix_timestamp(a)
2010-10-31 02:25:26 1288477526
2010-10-31 02:25:26 1288481126
set global mysql56_temporal_format=true;
select a, unix_timestamp(a) from t1;
a unix_timestamp(a)
2010-10-31 02:25:26 1288477526
2010-10-31 02:25:26 1288481126
create table t2 (a timestamp);
insert t2 select a from t1;
select a, unix_timestamp(a) from t2;
a unix_timestamp(a)
2010-10-31 02:25:26 1288477526
2010-10-31 02:25:26 1288481126
drop table t1, t2;
set time_zone=DEFAULT;

View File

@ -2,9 +2,9 @@
--echo # Bug#20821: INSERT DELAYED fails to write some rows to binlog
--echo #
--source include/master-slave.inc
--source include/not_embedded.inc
--source include/not_windows.inc
--source include/master-slave.inc
--disable_warnings
CREATE SCHEMA IF NOT EXISTS mysqlslap;

View File

@ -1,5 +1,6 @@
--source include/innodb_page_size_small.inc
--source include/innodb_encrypt_log.inc
--source include/have_debug.inc
--source include/have_debug_sync.inc
let $innodb_metrics_select=

View File

@ -2790,3 +2790,11 @@ test.t1 check status OK
SET aria_repair_threads=@@global.aria_repair_threads;
SET aria_sort_buffer_size=@@global.aria_sort_buffer_size;
DROP TABLE t1;
CREATE TABLE t1(a INT, b CHAR(10), KEY(a), KEY(b));
INSERT INTO t1 VALUES(1,'0'),(2,'0'),(3,'0'),(4,'0'),(5,'0'),
(6,'0'),(7,'0');
flush tables test.t1 for export;
insert into t1 values (8,'0');
ERROR HY000: Table 't1' was locked with a READ lock and can't be updated
unlock tables;
drop table t1;

View File

@ -2018,6 +2018,19 @@ SET aria_repair_threads=@@global.aria_repair_threads;
SET aria_sort_buffer_size=@@global.aria_sort_buffer_size;
DROP TABLE t1;
#
# Check FLUSH FOR EXPORT
#
CREATE TABLE t1(a INT, b CHAR(10), KEY(a), KEY(b));
INSERT INTO t1 VALUES(1,'0'),(2,'0'),(3,'0'),(4,'0'),(5,'0'),
(6,'0'),(7,'0');
flush tables test.t1 for export;
--error ER_TABLE_NOT_LOCKED_FOR_WRITE
insert into t1 values (8,'0');
unlock tables;
drop table t1;
#
# End of test
#

View File

@ -1,7 +1,7 @@
--source include/have_partition.inc
--source include/have_innodb.inc
--source include/master-slave.inc
--source include/big_test.inc
--source include/master-slave.inc
--vertical_results

View File

@ -1,5 +1,5 @@
--source include/master-slave.inc
--source include/have_binlog_format_mixed.inc
--source include/master-slave.inc
--enable_connect_log

View File

@ -0,0 +1,32 @@
include/master-slave.inc
[connection master]
connection slave;
set global time_zone='Europe/Moscow';
set time_zone='UTC';
stop slave;
start slave;
connection master;
set global mysql56_temporal_format=false;
set global time_zone='Europe/Moscow';
set time_zone='UTC';
create table t1 (pk int primary key, t timestamp not null);
set timestamp = 1288477526;
insert into t1 values (1,null);
set timestamp = 1288481126;
insert into t1 values (2,null);
connection slave;
select pk, t, unix_timestamp(t) from t1;
pk t unix_timestamp(t)
1 2010-10-30 22:25:26 1288477526
2 2010-10-30 23:25:26 1288481126
set time_zone=default;
select pk, t, unix_timestamp(t) from t1;
pk t unix_timestamp(t)
1 2010-10-31 02:25:26 1288477526
2 2010-10-31 02:25:26 1288481126
set global time_zone=default;
connection master;
drop table t1;
set global time_zone=default;
set global mysql56_temporal_format=default;
include/rpl_end.inc

View File

@ -1,5 +1,5 @@
--source include/master-slave.inc
--source include/have_binlog_format_row.inc
--source include/master-slave.inc
--enable_connect_log
--connection master

View File

@ -5,9 +5,9 @@
# is replication unsafe.
#
source include/master-slave.inc;
source include/have_binlog_format_mixed.inc;
source include/have_innodb.inc;
source include/master-slave.inc;
call mtr.add_suppression('Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.');

View File

@ -1,6 +1,6 @@
source include/master-slave.inc;
source include/have_innodb.inc;
source include/have_binlog_format_statement.inc;
source include/master-slave.inc;
connection slave;
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");

View File

@ -15,8 +15,8 @@
# primary key lookup), and index/key with multiple matches (forcing an
# index search).
source include/master-slave.inc;
source include/have_blackhole.inc;
source include/master-slave.inc;
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");

View File

@ -17,9 +17,9 @@
# log, the error is ignored and only the non-transactional tables are changed.
###############################################################################
--source include/master-slave.inc
--source include/have_innodb.inc
--source include/have_binlog_format_statement.inc
--source include/master-slave.inc
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");

View File

@ -8,8 +8,8 @@
# will be binlogged as
# 'INSERT INTO t1 VALUES (1) /*!10000, (2)*/ /* 99999 ,(3)*/'.
###############################################################################
source include/master-slave.inc;
source include/have_binlog_format_statement.inc;
source include/master-slave.inc;
CREATE TABLE t1(c1 INT);
source include/show_binlog_events.inc;

View File

@ -16,8 +16,8 @@
# along the way if error/no error is thrown and/or if replication starts
# working when expected.
--source include/master-slave.inc
--source include/have_binlog_format_mixed.inc
--source include/master-slave.inc
connection slave;
STOP SLAVE;

View File

@ -2,8 +2,8 @@
# Purpose: To test having extra columns on the master WL#3915
#############################################################
-- source include/have_binlog_format_row.inc
-- source include/master-slave.inc
-- source include/have_innodb.inc
-- source include/master-slave.inc
let $engine_type = 'InnoDB';
--source extra/rpl_tests/rpl_extra_col_master.test

View File

@ -4,8 +4,8 @@
# works fine.
#
--source include/master-slave.inc
--source include/have_binlog_format_statement.inc
--source include/master-slave.inc
connection master;
# Test 'flush error logs' statement.

View File

@ -1,5 +1,5 @@
source include/master-slave.inc;
source include/have_binlog_format_row.inc;
source include/master-slave.inc;
#
# Bug#48776, Bug#43784

View File

@ -8,9 +8,9 @@
# Finish the following tests by calling its common test script:
# extra/rpl_tests/rpl_get_master_version_and_clock.test.
source include/master-slave.inc;
source include/have_debug.inc;
source include/have_debug_sync.inc;
source include/master-slave.inc;
#
# The test is not supposed to have any binglog affairs.

View File

@ -1,7 +1,7 @@
# Tests of grants and users
source include/master-slave.inc;
source include/not_embedded.inc;
source include/master-slave.inc;
connection master;

View File

@ -1,6 +1,6 @@
--source include/master-slave.inc
--source include/have_innodb.inc
--source include/have_debug.inc
--source include/master-slave.inc
CREATE TABLE t1 (i int) ENGINE=InnoDB;

View File

@ -1,7 +1,7 @@
# Testing master to slave heartbeat protocol, test cases that need debug build.
--source include/master-slave.inc
--source include/have_debug.inc
--source include/master-slave.inc
connection slave;
--source include/stop_slave.inc

View File

@ -1,6 +1,6 @@
--source include/have_innodb.inc
--source include/master-slave.inc
--source include/have_binlog_format_row.inc
--source include/master-slave.inc
#
# Bug#68220: innodb_rows_updated is misleading on slave when *info_repository=TABLE

View File

@ -2,9 +2,9 @@
--echo # Bug#20821: INSERT DELAYED fails to write some rows to binlog
--echo #
--source include/master-slave.inc
--source include/not_embedded.inc
--source include/not_windows.inc
--source include/master-slave.inc
disable_query_log;
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");

View File

@ -5,8 +5,8 @@
# Features for Replication.
#########################################
--source include/master-slave.inc
--source include/have_innodb.inc
--source include/master-slave.inc
disable_query_log;
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");

View File

@ -4,8 +4,8 @@
# if the path of the load data file is a symbolic link.
#
--source include/not_windows.inc
--source include/master-slave.inc
--source include/have_binlog_format_statement.inc
--source include/master-slave.inc
create table t1(a int not null auto_increment, b int, primary key(a) );
load data infile '../../std_data/rpl_loaddata.dat' into table t1;

View File

@ -1,8 +1,8 @@
--source include/master-slave.inc
--source include/have_debug.inc
--source include/have_debug_sync.inc
--source include/have_binlog_format_row.inc
--source include/have_innodb.inc
--source include/master-slave.inc
connection master;

View File

@ -1,8 +1,8 @@
--source include/have_innodb.inc
--source include/master-slave.inc
--source include/not_embedded.inc
--source include/not_windows.inc
--source include/have_binlog_format_row.inc
--source include/master-slave.inc
########################################################################################
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");

View File

@ -1,5 +1,5 @@
--source include/master-slave.inc
--source include/have_binlog_format_statement.inc
--source include/master-slave.inc
--connection slave

View File

@ -1,8 +1,8 @@
--source include/have_innodb.inc
--source include/master-slave.inc
--source include/not_embedded.inc
--source include/not_windows.inc
--source include/have_binlog_format_mixed.inc
--source include/master-slave.inc
--source extra/rpl_tests/rpl_binlog_max_cache_size.test
--source include/rpl_end.inc

View File

@ -3,8 +3,8 @@
################################################################################
--source include/have_udf.inc
--source include/have_binlog_format_mixed.inc
--source include/master-slave.inc
--source include/have_innodb.inc
--source include/master-slave.inc
--let $engine=Innodb
set session storage_engine=innodb;

View File

@ -3,8 +3,8 @@
# tables. For further details, please, read WL#2687 and WL#5072.
###################################################################################
--source include/have_binlog_format_mixed.inc
--source include/master-slave.inc
--source include/have_innodb.inc
--source include/master-slave.inc
let $engine_type=Innodb;
let $database_name=test;

View File

@ -3,8 +3,8 @@
# tables. For further details, please, read WL#2687 and WL#5072.
###################################################################################
--source include/have_binlog_format_mixed.inc
--source include/master-slave.inc
--source include/have_innodb.inc
--source include/master-slave.inc
--disable_query_log
SET SESSION binlog_direct_non_transactional_updates = OFF;

View File

@ -11,9 +11,9 @@
# 3 - NULL --> NOT NULL ( sql-mode != STRICT and no failures)
#
#################################################################################
--source include/master-slave.inc
--source include/have_innodb.inc
--source include/have_binlog_format_row.inc
--source include/master-slave.inc
let $engine=Innodb;
--source extra/rpl_tests/rpl_not_null.test

View File

@ -11,8 +11,8 @@
# 3 - NULL --> NOT NULL ( sql-mode != STRICT and no failures)
#
#################################################################################
--source include/master-slave.inc
--source include/have_binlog_format_row.inc
--source include/master-slave.inc
let $engine=MyISAM;
--source extra/rpl_tests/rpl_not_null.test

View File

@ -1,6 +1,6 @@
--source include/master-slave.inc
--source include/have_perfschema.inc
--source include/have_binlog_format_mixed.inc
--source include/master-slave.inc
UPDATE performance_schema.setup_instruments SET ENABLED="NO";

View File

@ -1,6 +1,6 @@
# Test case for BUG #11733
-- source include/master-slave.inc
-- source include/have_innodb.inc
-- source include/master-slave.inc
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");

View File

@ -17,8 +17,8 @@
# case on doing SHOW SLAVE HOSTS on the master, we get the actual port number
# of the slave (ie. SLAVE_PORT).
source include/master-slave.inc;
source include/have_binlog_format_mixed.inc;
source include/master-slave.inc;
connection master;

View File

@ -1,8 +1,8 @@
--source include/have_innodb.inc
--source include/master-slave.inc
--source include/not_embedded.inc
--source include/not_windows.inc
--source include/have_binlog_format_row.inc
--source include/master-slave.inc
--source extra/rpl_tests/rpl_binlog_max_cache_size.test
--source include/rpl_end.inc

View File

@ -6,8 +6,8 @@
# having columns that are smaller (shorter) than the slave. #
##################################################################
-- source include/master-slave.inc
-- source include/have_binlog_format_row.inc
-- source include/master-slave.inc
--disable_warnings
DROP TABLE IF EXISTS t1;

View File

@ -1,7 +1,7 @@
#
--source include/master-slave.inc
--source include/have_debug.inc
--source include/have_binlog_format_row.inc
--source include/master-slave.inc
# BUG#11753004: 44360: REPLICATION FAILED

View File

@ -1,8 +1,8 @@
# Testing table creations for row-based replication.
--source include/have_binlog_format_row.inc
--source include/master-slave.inc
--source include/have_innodb.inc
--source include/master-slave.inc
connection slave;
--source include/have_innodb.inc
connection master;

View File

@ -16,8 +16,8 @@
# has been fixed.
#
-- source include/master-slave.inc
-- source include/have_binlog_format_row.inc
-- source include/master-slave.inc
#
# Case #1: master has key, but slave has not.

View File

@ -3,8 +3,8 @@
################################################################################
--source include/have_udf.inc
--source include/have_binlog_format_row.inc
--source include/master-slave.inc
--source include/have_innodb.inc
--source include/master-slave.inc
--let $engine=Innodb
set session storage_engine=innodb;

View File

@ -1,7 +1,7 @@
--source include/have_binlog_format_row.inc
--source include/master-slave.inc
--source include/have_debug.inc
--source include/have_innodb.inc
--source include/master-slave.inc
# Bug#58997: Row-based replication breaks on table with only fulltext index:
connection master;

View File

@ -12,8 +12,8 @@
# deletes their contents through the merge table. Finally, the slave
# is synchronized with the master and (after the fix) it won't crash.
#
--source include/master-slave.inc
--source include/have_binlog_format_row.inc
--source include/master-slave.inc
--connection master
CREATE TABLE t1 (a int) ENGINE=MyISAM;

View File

@ -1,6 +1,6 @@
-- source include/have_binlog_format_row.inc
-- source include/master-slave.inc
-- source include/have_innodb.inc
-- source include/master-slave.inc
#
# BUG#52868 Wrong handling of NULL value during update, replication out of sync

View File

@ -12,8 +12,8 @@
# This test issues SHOW [BINLOG|RELAYLOG] EVENTS both on master and slave after
# some statements have been issued.
-- source include/master-slave.inc
-- source include/have_binlog_format_row.inc
-- source include/master-slave.inc
-- source extra/rpl_tests/rpl_show_relaylog_events.inc
--source include/rpl_end.inc

View File

@ -26,9 +26,9 @@
# with mysqlbinlog reporting that it was unable to succeed in
# reading the event.
-- source include/master-slave.inc
-- source include/have_innodb.inc
-- source include/have_binlog_format_row.inc
-- source include/master-slave.inc
-- disable_warnings
DROP TABLE IF EXISTS `t1`;

View File

@ -6,8 +6,8 @@
# table was binlogged in RBR.
#
--source include/master-slave.inc
--source include/have_binlog_format_row.inc
--source include/master-slave.inc
#This statement is not binlogged in RBR.
CREATE TEMPORARY TABLE t1(c1 INTEGER);

View File

@ -1,6 +1,6 @@
-- source include/master-slave.inc
-- source include/have_binlog_format_row.inc
-- source include/have_utf16.inc
-- source include/master-slave.inc
#
# BUG#51716: Char column with utf16 character set gives wrong padding on slave

View File

@ -8,8 +8,8 @@
# in corrupt binlog
##################################################################
-- source include/master-slave.inc
-- source include/have_binlog_format_row.inc
-- source include/master-slave.inc
--disable_warnings
DROP TABLE IF EXISTS t300;

View File

@ -1,5 +1,5 @@
--source include/master-slave.inc
--source include/have_innodb.inc
--source include/master-slave.inc
--echo #
--echo # Bug#50124 Rpl failure on DROP table with concurrent txn/non-txn

View File

@ -17,8 +17,8 @@
# b. nullifying the list and resuming of taking binlog from the very beginning with
# executing events this time
source include/master-slave.inc;
source include/have_binlog_format_mixed.inc;
source include/master-slave.inc;
connection slave;

View File

@ -1,6 +1,6 @@
-- source include/have_binlog_format_mixed_or_row.inc
-- source include/master-slave.inc
-- source include/have_innodb.inc
-- source include/master-slave.inc
-- let $engine= InnoDB
-- source extra/rpl_tests/rpl_set_null.test

View File

@ -23,8 +23,8 @@
# bug in this test: BUG#30594: rpl.rpl_skip_error is nondeterministic:
# BUG#39393: slave-skip-errors does not work when using ROW based replication
source include/master-slave.inc;
source include/have_innodb.inc;
source include/master-slave.inc;
--echo ==== Test Without sql_mode=strict_trans_tables ====

View File

@ -1,5 +1,5 @@
--source include/master-slave.inc
--source include/have_debug.inc
--source include/master-slave.inc
connection master;
SET GLOBAL BINLOG_CHECKSUM=NONE;

View File

@ -20,9 +20,9 @@
--source include/have_binlog_format_statement.inc
--source include/have_innodb.inc
--source include/have_debug.inc
--source include/master-slave.inc
--source include/not_embedded.inc
--source include/not_var_link.inc
--source include/master-slave.inc
##########################################################################
# Loading data

View File

@ -4,8 +4,8 @@
# test for MIXED mode.
source include/have_binlog_format_mixed.inc;
source include/master-slave.inc;
source include/have_innodb.inc;
source include/master-slave.inc;
connection slave;
source include/have_innodb.inc;

View File

@ -25,8 +25,8 @@
# Note that due to the sleep() command the insert is written to the binary
# log in row format.
source include/master-slave.inc;
source include/have_binlog_format_statement.inc;
source include/master-slave.inc;
CALL mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
call mtr.add_suppression("Slave SQL.*Request to stop slave SQL Thread received while applying a group that has non-transactional changes; waiting for completion of the group");

View File

@ -1,8 +1,8 @@
--source include/have_innodb.inc
--source include/master-slave.inc
--source include/not_embedded.inc
--source include/not_windows.inc
--source include/have_binlog_format_statement.inc
--source include/master-slave.inc
--source extra/rpl_tests/rpl_binlog_max_cache_size.test
--source include/rpl_end.inc

View File

@ -5,8 +5,8 @@
###################################################################################
--source include/big_test.inc
--source include/have_binlog_format_statement.inc
--source include/master-slave.inc
--source include/have_innodb.inc
--source include/master-slave.inc
--source extra/rpl_tests/rpl_drop_create_temp_table.test
--source include/rpl_end.inc

View File

@ -3,8 +3,8 @@
################################################################################
--source include/have_udf.inc
--source include/have_binlog_format_statement.inc
--source include/master-slave.inc
--source include/have_innodb.inc
--source include/master-slave.inc
--let $engine=Innodb
set session storage_engine=innodb;

View File

@ -12,8 +12,8 @@
##########
# Includes
-- source include/master-slave.inc
-- source include/have_binlog_format_statement.inc
-- source include/master-slave.inc
disable_query_log;
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");

View File

@ -1,9 +1,9 @@
################################################################################
# Please, check ./extra/rpl_tests/rpl_start_stop_slave.test
################################################################################
--source include/master-slave.inc
--source include/have_binlog_format_statement.inc
--source include/have_innodb.inc
--source include/master-slave.inc
# make innodb updates run fast
--connection slave

View File

@ -2,8 +2,8 @@
# BUG#49562: SBR out of sync when using numeric data types + user variable
#
-- source include/master-slave.inc
-- source include/have_binlog_format_statement.inc
-- source include/master-slave.inc
## Setup user variables for several numeric types, so that we get
## coverage on the User_var_log_event different val types

View File

@ -9,9 +9,9 @@
# 4: sync to slave and check the number of temp tables on slave.
#
source include/master-slave.inc;
source include/have_binlog_format_mixed.inc;
source include/have_innodb.inc;
source include/master-slave.inc;
--echo ==== Initialize ====

View File

@ -0,0 +1,37 @@
#
# MDEV-12672 Replicated TIMESTAMP fields given wrong value near DST change
#
source include/have_binlog_format_row.inc;
source include/master-slave.inc;
connection slave;
set global time_zone='Europe/Moscow';
set time_zone='UTC';
stop slave;
start slave;
connection master;
set global mysql56_temporal_format=false;
set global time_zone='Europe/Moscow';
set time_zone='UTC';
create table t1 (pk int primary key, t timestamp not null);
set timestamp = 1288477526;
insert into t1 values (1,null);
set timestamp = 1288481126;
insert into t1 values (2,null);
sync_slave_with_master;
select pk, t, unix_timestamp(t) from t1;
set time_zone=default;
select pk, t, unix_timestamp(t) from t1;
set global time_zone=default;
connection master;
drop table t1;
set global time_zone=default;
set global mysql56_temporal_format=default;
source include/rpl_end.inc;

View File

@ -1,6 +1,6 @@
source include/have_binlog_format_row.inc;
source include/master-slave.inc;
source include/have_innodb.inc;
source include/master-slave.inc;
call mtr.add_suppression("Deadlock found");
call mtr.add_suppression("Can't find record in 't.'");

View File

@ -1,5 +1,5 @@
source include/master-slave.inc;
source include/have_binlog_format_statement.inc;
source include/master-slave.inc;
call mtr.add_suppression("Unsafe statement written to the binary log");

View File

@ -3,9 +3,9 @@
#
--source include/have_debug.inc
--source include/master-slave.inc
--source include/have_binlog_format_row.inc
--source include/have_innodb.inc
--source include/master-slave.inc
--disable_warnings
drop table if exists t1;

View File

@ -602,3 +602,13 @@ remove_file $MYSQLD_DATADIR/test/t1.txt;
drop view v1;
drop table t1;
SET @@sql_mode= @save_mode;
#
# MDEV-13861 Assertion `0' failed in Protocol::end_statement
#
CREATE TABLE t1 (f INT);
CREATE VIEW v1 AS SELECT * FROM t1 WHERE f <=> 'foo' WITH CHECK OPTION;
--error ER_TRUNCATED_WRONG_VALUE
REPLACE INTO v1 SET f = NULL;
DROP VIEW v1;
DROP TABLE t1;

View File

@ -1769,6 +1769,19 @@ ALTER TABLE t1 DISABLE KEYS;
OPTIMIZE TABLE t1;
DROP TABLE t1;
#
# Check FLUSH FOR EXPORT
#
CREATE TABLE t1(a INT, b CHAR(10), KEY(a), KEY(b)) engine=myisam;
INSERT INTO t1 VALUES(1,'0'),(2,'0'),(3,'0'),(4,'0'),(5,'0'),
(6,'0'),(7,'0');
flush tables test.t1 for export;
--error ER_TABLE_NOT_LOCKED_FOR_WRITE
insert into t1 values (8,'0');
unlock tables;
drop table t1;
#
# Check some variables
#

View File

@ -83,3 +83,39 @@ SELECT TO_DAYS(a), TO_DAYS(b) FROM t1;
DROP TABLE t1;
SET @@global.mysql56_temporal_format=DEFAULT;
#
# MDEV-12672 Replicated TIMESTAMP fields given wrong value near DST change
#
# Copy_field
set time_zone='Europe/Moscow';
set global mysql56_temporal_format=false;
create table t1 (a timestamp);
set timestamp=1288477526;
insert t1 values (null);
insert t1 values ();
set timestamp=1288481126;
insert t1 values (null);
insert t1 values ();
select a, unix_timestamp(a) from t1;
set global mysql56_temporal_format=true;
select a, unix_timestamp(a) from t1;
alter table t1 modify a timestamp;
select a, unix_timestamp(a) from t1;
drop table t1;
# field_conv_incompatible()
set global mysql56_temporal_format=false;
create table t1 (a timestamp);
set timestamp=1288477526;
insert t1 values (null);
set timestamp=1288481126;
insert t1 values (null);
select a, unix_timestamp(a) from t1;
set global mysql56_temporal_format=true;
select a, unix_timestamp(a) from t1;
create table t2 (a timestamp);
insert t2 select a from t1;
select a, unix_timestamp(a) from t2;
drop table t1, t2;
set time_zone=DEFAULT;

View File

@ -1,6 +1,6 @@
--source include/have_stat_tables.inc
--source include/master-slave.inc
--source include/have_binlog_format_row.inc
--source include/master-slave.inc
--echo #
--echo # Bug mdev-485: unexpected failure with replication of DROP/ALTER table

View File

@ -69,7 +69,7 @@ parse_arguments() {
wsrep_recover_position() {
# Redirect server's error log to the log file.
eval /usr/sbin/mysqld $cmdline_args --user=$user --wsrep_recover \
--log-error="$log_file"
--disable-log-error 2> "$log_file"
ret=$?
if [ $ret -ne 0 ]; then
# Something went wrong, let us also print the error log so that it

View File

@ -245,7 +245,7 @@ wsrep_recover_position() {
local euid=$(id -u)
local ret=0
local wr_logfile=$(mktemp $DATADIR/wsrep_recovery.XXXXXX)
local wr_logfile=$(mktemp wsrep_recovery.XXXXXX)
# safety checks
if [ -z $wr_logfile ]; then
@ -263,11 +263,11 @@ wsrep_recover_position() {
local wr_pidfile="$DATADIR/"`@HOSTNAME@`"-recover.pid"
local wr_options="--log_error='$wr_logfile' --pid-file='$wr_pidfile'"
local wr_options="--disable-log-error --pid-file='$wr_pidfile'"
log_notice "WSREP: Running position recovery with $wr_options"
eval_log_error "$mysqld_cmd --wsrep_recover $wr_options"
eval_log_error "$mysqld_cmd --wsrep_recover $wr_options 2> $wr_logfile"
local rp="$(grep 'WSREP: Recovered position:' $wr_logfile)"
if [ -z "$rp" ]; then

View File

@ -1713,6 +1713,33 @@ int Field::store(const char *to, uint length, CHARSET_INFO *cs,
}
static int timestamp_to_TIME(THD *thd, MYSQL_TIME *ltime, my_time_t ts,
ulong sec_part, ulonglong fuzzydate)
{
thd->time_zone_used= 1;
if (ts == 0 && sec_part == 0)
{
if (fuzzydate & TIME_NO_ZERO_DATE)
return 1;
set_zero_time(ltime, MYSQL_TIMESTAMP_DATETIME);
}
else
{
thd->variables.time_zone->gmt_sec_to_TIME(ltime, ts);
ltime->second_part= sec_part;
}
return 0;
}
int Field::store_timestamp(my_time_t ts, ulong sec_part)
{
MYSQL_TIME ltime;
THD *thd= get_thd();
timestamp_to_TIME(thd, &ltime, ts, sec_part, 0);
return store_time_dec(&ltime, decimals());
}
/**
Pack the field into a format suitable for storage and transfer.
@ -4810,6 +4837,13 @@ Field_timestamp::Field_timestamp(uchar *ptr_arg, uint32 len_arg,
}
int Field_timestamp::save_in_field(Field *to)
{
ulong sec_part;
my_time_t ts= get_timestamp(&sec_part);
return to->store_timestamp(ts, sec_part);
}
my_time_t Field_timestamp::get_timestamp(const uchar *pos,
ulong *sec_part) const
{
@ -4936,6 +4970,22 @@ int Field_timestamp::store(longlong nr, bool unsigned_val)
}
int Field_timestamp::store_timestamp(my_time_t ts, ulong sec_part)
{
store_TIME(ts, sec_part);
if (ts == 0 && sec_part == 0 &&
get_thd()->variables.sql_mode & TIME_NO_ZERO_DATE)
{
ErrConvString s(
STRING_WITH_LEN("0000-00-00 00:00:00.000000") - (decimals() ? 6 - decimals() : 7),
system_charset_info);
set_datetime_warning(WARN_DATA_TRUNCATED, &s, MYSQL_TIMESTAMP_DATETIME, 1);
return 1;
}
return 0;
}
double Field_timestamp::val_real(void)
{
return (double) Field_timestamp::val_int();
@ -5039,22 +5089,9 @@ Field_timestamp::validate_value_in_record(THD *thd, const uchar *record) const
bool Field_timestamp::get_date(MYSQL_TIME *ltime, ulonglong fuzzydate)
{
THD *thd= get_thd();
thd->time_zone_used= 1;
ulong sec_part;
my_time_t temp= get_timestamp(&sec_part);
if (temp == 0 && sec_part == 0)
{ /* Zero time is "000000" */
if (fuzzydate & TIME_NO_ZERO_DATE)
return 1;
set_zero_time(ltime, MYSQL_TIMESTAMP_DATETIME);
}
else
{
thd->variables.time_zone->gmt_sec_to_TIME(ltime, (my_time_t)temp);
ltime->second_part= sec_part;
}
return 0;
my_time_t ts= get_timestamp(&sec_part);
return timestamp_to_TIME(get_thd(), ltime, ts, sec_part, fuzzydate);
}
@ -5104,36 +5141,6 @@ int Field_timestamp::set_time()
return 0;
}
/**
Mark the field as having an explicit default value.
@param value if available, the value that the field is being set to
@returns whether the explicit default bit was set
@note
Fields that have an explicit default value should not be updated
automatically via the DEFAULT or ON UPDATE functions. The functions
that deal with data change functionality (INSERT/UPDATE/LOAD),
determine if there is an explicit value for each field before performing
the data change, and call this method to mark the field.
For timestamp columns, the only case where a column is not marked
as been given a value are:
- It's explicitly assigned with DEFAULT
- We assign NULL to a timestamp field that is defined as NOT NULL.
This is how MySQL has worked since it's start.
*/
bool Field_timestamp::set_explicit_default(Item *value)
{
if (((value->type() == Item::DEFAULT_VALUE_ITEM &&
!((Item_default_value*)value)->arg) ||
(!maybe_null() && value->null_value)))
return false;
set_has_explicit_value();
return true;
}
#ifdef NOT_USED
static void store_native(ulonglong num, uchar *to, uint bytes)
{

View File

@ -657,6 +657,7 @@ protected:
static void do_field_real(Copy_field *copy);
static void do_field_string(Copy_field *copy);
static void do_field_temporal(Copy_field *copy);
static void do_field_timestamp(Copy_field *copy);
static void do_field_decimal(Copy_field *copy);
public:
static void *operator new(size_t size, MEM_ROOT *mem_root) throw ()
@ -814,6 +815,7 @@ public:
virtual int store(longlong nr, bool unsigned_val)=0;
virtual int store_decimal(const my_decimal *d)=0;
virtual int store_time_dec(MYSQL_TIME *ltime, uint dec);
virtual int store_timestamp(my_time_t timestamp, ulong sec_part);
int store_time(MYSQL_TIME *ltime)
{ return store_time_dec(ltime, TIME_SECOND_PART_DIGITS); }
int store(const char *to, uint length, CHARSET_INFO *cs,
@ -980,7 +982,7 @@ public:
{
return bitmap_is_set(&table->has_value_set, field_index);
}
virtual bool set_explicit_default(Item *value);
bool set_explicit_default(Item *value);
/**
Evaluates the @c UPDATE default function, if one exists, and stores the
@ -2389,11 +2391,14 @@ public:
TABLE_SHARE *share);
const Type_handler *type_handler() const { return &type_handler_timestamp; }
enum ha_base_keytype key_type() const { return HA_KEYTYPE_ULONG_INT; }
Copy_func *get_copy_func(const Field *from) const;
int store(const char *to,uint length,CHARSET_INFO *charset);
int store(double nr);
int store(longlong nr, bool unsigned_val);
int store_time_dec(MYSQL_TIME *ltime, uint dec);
int store_decimal(const my_decimal *);
int store_timestamp(my_time_t timestamp, ulong sec_part);
int save_in_field(Field *to);
double val_real(void);
longlong val_int(void);
String *val_str(String*,String *);
@ -2404,7 +2409,6 @@ public:
void sql_type(String &str) const;
bool zero_pack() const { return 0; }
int set_time();
bool set_explicit_default(Item *value);
int evaluate_update_default_function()
{
int res= 0;

View File

@ -417,6 +417,13 @@ void Field::do_field_decimal(Copy_field *copy)
}
void Field::do_field_timestamp(Copy_field *copy)
{
// XXX why couldn't we do it everywhere?
copy->from_field->save_in_field(copy->to_field);
}
void Field::do_field_temporal(Copy_field *copy)
{
MYSQL_TIME ltime;
@ -706,6 +713,16 @@ void Copy_field::set(Field *to,Field *from,bool save)
}
Field::Copy_func *Field_timestamp::get_copy_func(const Field *from) const
{
Field::Copy_func *copy= Field_temporal::get_copy_func(from);
if (copy == do_field_temporal && from->type() == MYSQL_TYPE_TIMESTAMP)
return do_field_timestamp;
else
return copy;
}
Field::Copy_func *Field_temporal::get_copy_func(const Field *from) const
{
/* If types are not 100 % identical then convert trough get_date() */

View File

@ -1706,6 +1706,25 @@ void Item_func_now::print(String *str, enum_query_type query_type)
str->append(')');
}
int Item_func_now_local::save_in_field(Field *field, bool no_conversions)
{
if (field->type() == MYSQL_TYPE_TIMESTAMP)
{
THD *thd= field->get_thd();
my_time_t ts= thd->query_start();
uint dec= MY_MIN(decimals, field->decimals());
ulong sec_part= dec ? thd->query_start_sec_part() : 0;
sec_part-= my_time_fraction_remainder(sec_part, dec);
field->set_notnull();
((Field_timestamp*)field)->store_TIME(ts, sec_part);
return 0;
}
else
return Item_temporal_func::save_in_field(field, no_conversions);
}
/**
Converts current time in my_time_t to MYSQL_TIME represenatation for local
time zone. Defines time zone (local) used for whole NOW function.

View File

@ -729,6 +729,7 @@ class Item_func_now_local :public Item_func_now
public:
Item_func_now_local(THD *thd, uint dec): Item_func_now(thd, dec) {}
const char *func_name() const { return "current_timestamp"; }
int save_in_field(Field *field, bool no_conversions);
virtual void store_now_in_TIME(THD *thd, MYSQL_TIME *now_time);
virtual enum Functype functype() const { return NOW_FUNC; }
Item *get_copy(THD *thd, MEM_ROOT *mem_root)

View File

@ -1635,6 +1635,29 @@ public:
};
/**
Implements the trivial error handler which counts errors as they happen.
*/
class Counting_error_handler : public Internal_error_handler
{
public:
int errors;
bool handle_condition(THD *thd,
uint sql_errno,
const char* sqlstate,
Sql_condition::enum_warning_level *level,
const char* msg,
Sql_condition ** cond_hdl)
{
if (*level == Sql_condition::WARN_LEVEL_ERROR)
errors++;
return false;
}
Counting_error_handler() : errors(0) {}
};
/**
This class is an internal error handler implementation for
DROP TABLE statements. The thing is that there may be warnings during

View File

@ -5076,9 +5076,17 @@ void TABLE_LIST::cleanup_items()
int TABLE_LIST::view_check_option(THD *thd, bool ignore_failure)
{
if (check_option)
{
/* VIEW's CHECK OPTION CLAUSE */
if (check_option && check_option->val_int() == 0)
Counting_error_handler ceh;
thd->push_internal_handler(&ceh);
bool res= check_option->val_int() == 0;
thd->pop_internal_handler();
if (ceh.errors)
return(VIEW_CHECK_ERROR);
if (res)
{
TABLE_LIST *main_view= top_table();
const char *name_db= (main_view->view ? main_view->view_db.str :
@ -5089,11 +5097,8 @@ int TABLE_LIST::view_check_option(THD *thd, bool ignore_failure)
name_db, name_table);
return ignore_failure ? VIEW_CHECK_SKIP : VIEW_CHECK_ERROR;
}
int result= table->verify_constraints(ignore_failure);
/* We check thd->error() because it can be set by conversion problem. */
if (thd->is_error())
return(VIEW_CHECK_ERROR);
return result;
}
return table->verify_constraints(ignore_failure);
}

View File

@ -247,7 +247,7 @@ ENDIF(CONNECT_WITH_ODBC)
#
# JDBC with MongoDB Java Driver included but disabled
#
OPTION(CONNECT_WITH_MONGO "Compile CONNECT storage engine with MONGO support" ON)
#OPTION(CONNECT_WITH_MONGO "Compile CONNECT storage engine with MONGO support" ON)
OPTION(CONNECT_WITH_JDBC "Compile CONNECT storage engine with JDBC support" ON)
IF(CONNECT_WITH_JDBC)
@ -303,7 +303,7 @@ IF(CONNECT_WITH_MONGO)
C:/mongo-c-driver/lib
D:/mongo-c-driver/lib)
ENDIF(WIN32)
FIND_PACKAGE(libmongoc-1.0 1.7)
FIND_PACKAGE(libmongoc-1.0 1.7 QUIET)
IF (libmongoc-1.0_FOUND)
INCLUDE_DIRECTORIES(${MONGOC_INCLUDE_DIRS})
SET(MONGOC_LIBRARY ${MONGOC_LIBRARIES})

View File

@ -8,7 +8,7 @@
/***********************************************************************/
typedef struct _datpar {
const char *Format; // Points to format to decode
char *Curp; // Points to current parsing position
const char *Curp; // Points to current parsing position
char *InFmt; // Start of input format
char *OutFmt; // Start of output format
int Index[8]; // Indexes of date values

View File

@ -135,7 +135,7 @@ class TDBMYSQL : public TDBEXT {
int m_Rc; // Return code from command
//int AftRows; // The number of affected rows
int N; // The current table index
int Port; // MySQL port number (0 = default)
unsigned Port; // MySQL port number (0 = default)
//int Nparm; // The number of statement parameters
//int Quoted; // The identifier quoting level
}; // end of class TDBMYSQL

View File

@ -120,7 +120,7 @@ PQRYRES TabColumns(PGLOBAL g, THD *thd, const char *db,
FLD_REM, FLD_NO, FLD_CHARSET};
unsigned int length[] = {0, 4, 16, 4, 4, 4, 4, 4, 0, 32, 32};
PCSZ fmt;
char *pn, *tn, *fld, *colname, *chset, v;
char *pn, *tn, *fld, *colname, v; //, *chset;
int i, n, ncol = sizeof(buftyp) / sizeof(int);
int prec, len, type, scale;
int zconv = GetConvSize();
@ -185,7 +185,7 @@ PQRYRES TabColumns(PGLOBAL g, THD *thd, const char *db,
colname = (char *)fp->field_name.str;
crp->Kdata->SetValue(colname, i);
chset = (char *)fp->charset()->name;
// chset = (char *)fp->charset()->name;
// v = (!strcmp(chset, "binary")) ? 'B' : 0;
v = 0;

Some files were not shown because too many files have changed in this diff Show More