1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-01 03:47:19 +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 # along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # 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) MACRO(CHECK_SYSTEMD)
IF(UNIX) 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") SET(WITH_SYSTEMD "auto" CACHE STRING "Enable systemd scripts and notification support")
IF(WITH_SYSTEMD STREQUAL "yes" OR WITH_SYSTEMD STREQUAL "auto") IF(WITH_SYSTEMD STREQUAL "yes" OR WITH_SYSTEMD STREQUAL "auto")
IF(PKG_CONFIG_FOUND) IF(PKG_CONFIG_FOUND)

View File

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

View File

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

View File

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

View File

@ -11,8 +11,8 @@
# check if START SLAVE, RESET SLAVE, CHANGE MASTER reset Last_slave_error and # 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) # 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/have_innodb.inc;
source include/master-slave.inc;
--disable_query_log --disable_query_log
CALL mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT"); 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 # BUG#55322: SHOW BINLOG EVENTS increases @@SESSION.MAX_ALLOWED_PACKET
# max-out size db name # max-out size db name
source include/master-slave.inc;
source include/have_binlog_format_row.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("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"); 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_____________________; 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. # 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/have_innodb.inc
--source include/master-slave.inc
connection slave; connection slave;
# Test that SUPER is required to change @@replicate_events_marked_for_skip. # 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. # IO thread does not do it in an uncontrolled manner.
--source include/have_binlog_format_statement.inc --source include/have_binlog_format_statement.inc
--source include/master-slave.inc
--source include/have_innodb.inc --source include/have_innodb.inc
--source include/master-slave.inc
--disable_query_log --disable_query_log
CREATE TABLE t1 (c1 TEXT) engine=InnoDB; CREATE TABLE t1 (c1 TEXT) engine=InnoDB;

View File

@ -32,12 +32,12 @@
# Configuring the environment # Configuring the environment
######################################################################################## ########################################################################################
--echo =====Configuring the enviroment=======; --echo =====Configuring the enviroment=======;
--source include/master-slave.inc
--source include/not_embedded.inc --source include/not_embedded.inc
--source include/not_valgrind.inc --source include/not_valgrind.inc
--source include/have_debug.inc --source include/have_debug.inc
--source include/have_innodb.inc --source include/have_innodb.inc
--source include/not_crashrep.inc --source include/not_crashrep.inc
--source include/master-slave.inc
call mtr.add_suppression('Attempting backtrace'); call mtr.add_suppression('Attempting backtrace');
call mtr.add_suppression("Recovery from master pos .* and file master-bin.000001"); 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 view v1;
drop table t1; drop table t1;
SET @@sql_mode= @save_mode; 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 Table Op Msg_type Msg_text
test.t1 optimize status OK test.t1 optimize status OK
DROP TABLE t1; 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'; show variables like 'myisam_block_size';
Variable_name Value Variable_name Value
myisam_block_size 1024 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 Warning 1264 Out of range value for column 'b' at row 1
DROP TABLE t1; DROP TABLE t1;
SET @@global.mysql56_temporal_format=DEFAULT; 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 # Bug#20821: INSERT DELAYED fails to write some rows to binlog
--echo # --echo #
--source include/master-slave.inc
--source include/not_embedded.inc --source include/not_embedded.inc
--source include/not_windows.inc --source include/not_windows.inc
--source include/master-slave.inc
--disable_warnings --disable_warnings
CREATE SCHEMA IF NOT EXISTS mysqlslap; CREATE SCHEMA IF NOT EXISTS mysqlslap;

View File

@ -1,5 +1,6 @@
--source include/innodb_page_size_small.inc --source include/innodb_page_size_small.inc
--source include/innodb_encrypt_log.inc --source include/innodb_encrypt_log.inc
--source include/have_debug.inc
--source include/have_debug_sync.inc --source include/have_debug_sync.inc
let $innodb_metrics_select= 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_repair_threads=@@global.aria_repair_threads;
SET aria_sort_buffer_size=@@global.aria_sort_buffer_size; SET aria_sort_buffer_size=@@global.aria_sort_buffer_size;
DROP TABLE t1; 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; SET aria_sort_buffer_size=@@global.aria_sort_buffer_size;
DROP TABLE t1; 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 # End of test
# #

View File

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

View File

@ -1,5 +1,5 @@
--source include/master-slave.inc
--source include/have_binlog_format_mixed.inc --source include/have_binlog_format_mixed.inc
--source include/master-slave.inc
--enable_connect_log --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/have_binlog_format_row.inc
--source include/master-slave.inc
--enable_connect_log --enable_connect_log
--connection master --connection master

View File

@ -5,9 +5,9 @@
# is replication unsafe. # is replication unsafe.
# #
source include/master-slave.inc;
source include/have_binlog_format_mixed.inc; source include/have_binlog_format_mixed.inc;
source include/have_innodb.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.'); 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_innodb.inc;
source include/have_binlog_format_statement.inc; source include/have_binlog_format_statement.inc;
source include/master-slave.inc;
connection slave; connection slave;
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT"); 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 # primary key lookup), and index/key with multiple matches (forcing an
# index search). # index search).
source include/master-slave.inc;
source include/have_blackhole.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"); 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. # 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_innodb.inc
--source include/have_binlog_format_statement.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("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");

View File

@ -8,8 +8,8 @@
# will be binlogged as # will be binlogged as
# 'INSERT INTO t1 VALUES (1) /*!10000, (2)*/ /* 99999 ,(3)*/'. # 'INSERT INTO t1 VALUES (1) /*!10000, (2)*/ /* 99999 ,(3)*/'.
############################################################################### ###############################################################################
source include/master-slave.inc;
source include/have_binlog_format_statement.inc; source include/have_binlog_format_statement.inc;
source include/master-slave.inc;
CREATE TABLE t1(c1 INT); CREATE TABLE t1(c1 INT);
source include/show_binlog_events.inc; 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 # along the way if error/no error is thrown and/or if replication starts
# working when expected. # working when expected.
--source include/master-slave.inc
--source include/have_binlog_format_mixed.inc --source include/have_binlog_format_mixed.inc
--source include/master-slave.inc
connection slave; connection slave;
STOP SLAVE; STOP SLAVE;

View File

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

View File

@ -4,8 +4,8 @@
# works fine. # works fine.
# #
--source include/master-slave.inc
--source include/have_binlog_format_statement.inc --source include/have_binlog_format_statement.inc
--source include/master-slave.inc
connection master; connection master;
# Test 'flush error logs' statement. # 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/have_binlog_format_row.inc;
source include/master-slave.inc;
# #
# Bug#48776, Bug#43784 # Bug#48776, Bug#43784

View File

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

View File

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

View File

@ -1,6 +1,6 @@
--source include/master-slave.inc
--source include/have_innodb.inc --source include/have_innodb.inc
--source include/have_debug.inc --source include/have_debug.inc
--source include/master-slave.inc
CREATE TABLE t1 (i int) ENGINE=InnoDB; 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. # Testing master to slave heartbeat protocol, test cases that need debug build.
--source include/master-slave.inc
--source include/have_debug.inc --source include/have_debug.inc
--source include/master-slave.inc
connection slave; connection slave;
--source include/stop_slave.inc --source include/stop_slave.inc

View File

@ -1,6 +1,6 @@
--source include/have_innodb.inc --source include/have_innodb.inc
--source include/master-slave.inc
--source include/have_binlog_format_row.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 # 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 # Bug#20821: INSERT DELAYED fails to write some rows to binlog
--echo # --echo #
--source include/master-slave.inc
--source include/not_embedded.inc --source include/not_embedded.inc
--source include/not_windows.inc --source include/not_windows.inc
--source include/master-slave.inc
disable_query_log; disable_query_log;
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT"); 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. # Features for Replication.
######################################### #########################################
--source include/master-slave.inc
--source include/have_innodb.inc --source include/have_innodb.inc
--source include/master-slave.inc
disable_query_log; disable_query_log;
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT"); 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. # if the path of the load data file is a symbolic link.
# #
--source include/not_windows.inc --source include/not_windows.inc
--source include/master-slave.inc
--source include/have_binlog_format_statement.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) ); 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; 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.inc
--source include/have_debug_sync.inc --source include/have_debug_sync.inc
--source include/have_binlog_format_row.inc --source include/have_binlog_format_row.inc
--source include/have_innodb.inc --source include/have_innodb.inc
--source include/master-slave.inc
connection master; connection master;

View File

@ -1,8 +1,8 @@
--source include/have_innodb.inc --source include/have_innodb.inc
--source include/master-slave.inc
--source include/not_embedded.inc --source include/not_embedded.inc
--source include/not_windows.inc --source include/not_windows.inc
--source include/have_binlog_format_row.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"); 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/have_binlog_format_statement.inc
--source include/master-slave.inc
--connection slave --connection slave

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -11,8 +11,8 @@
# 3 - NULL --> NOT NULL ( sql-mode != STRICT and no failures) # 3 - NULL --> NOT NULL ( sql-mode != STRICT and no failures)
# #
################################################################################# #################################################################################
--source include/master-slave.inc
--source include/have_binlog_format_row.inc --source include/have_binlog_format_row.inc
--source include/master-slave.inc
let $engine=MyISAM; let $engine=MyISAM;
--source extra/rpl_tests/rpl_not_null.test --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_perfschema.inc
--source include/have_binlog_format_mixed.inc --source include/have_binlog_format_mixed.inc
--source include/master-slave.inc
UPDATE performance_schema.setup_instruments SET ENABLED="NO"; UPDATE performance_schema.setup_instruments SET ENABLED="NO";

View File

@ -1,6 +1,6 @@
# Test case for BUG #11733 # Test case for BUG #11733
-- source include/master-slave.inc
-- source include/have_innodb.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"); 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 # case on doing SHOW SLAVE HOSTS on the master, we get the actual port number
# of the slave (ie. SLAVE_PORT). # of the slave (ie. SLAVE_PORT).
source include/master-slave.inc;
source include/have_binlog_format_mixed.inc; source include/have_binlog_format_mixed.inc;
source include/master-slave.inc;
connection master; connection master;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,6 +1,6 @@
-- source include/have_binlog_format_row.inc -- source include/have_binlog_format_row.inc
-- source include/master-slave.inc
-- source include/have_innodb.inc -- source include/have_innodb.inc
-- source include/master-slave.inc
# #
# BUG#52868 Wrong handling of NULL value during update, replication out of sync # 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 # This test issues SHOW [BINLOG|RELAYLOG] EVENTS both on master and slave after
# some statements have been issued. # some statements have been issued.
-- source include/master-slave.inc
-- source include/have_binlog_format_row.inc -- source include/have_binlog_format_row.inc
-- source include/master-slave.inc
-- source extra/rpl_tests/rpl_show_relaylog_events.inc -- source extra/rpl_tests/rpl_show_relaylog_events.inc
--source include/rpl_end.inc --source include/rpl_end.inc

View File

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

View File

@ -6,8 +6,8 @@
# table was binlogged in RBR. # table was binlogged in RBR.
# #
--source include/master-slave.inc
--source include/have_binlog_format_row.inc --source include/have_binlog_format_row.inc
--source include/master-slave.inc
#This statement is not binlogged in RBR. #This statement is not binlogged in RBR.
CREATE TEMPORARY TABLE t1(c1 INTEGER); 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_binlog_format_row.inc
-- source include/have_utf16.inc -- source include/have_utf16.inc
-- source include/master-slave.inc
# #
# BUG#51716: Char column with utf16 character set gives wrong padding on slave # BUG#51716: Char column with utf16 character set gives wrong padding on slave

View File

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

View File

@ -1,5 +1,5 @@
--source include/master-slave.inc
--source include/have_innodb.inc --source include/have_innodb.inc
--source include/master-slave.inc
--echo # --echo #
--echo # Bug#50124 Rpl failure on DROP table with concurrent txn/non-txn --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 # b. nullifying the list and resuming of taking binlog from the very beginning with
# executing events this time # executing events this time
source include/master-slave.inc;
source include/have_binlog_format_mixed.inc; source include/have_binlog_format_mixed.inc;
source include/master-slave.inc;
connection slave; connection slave;

View File

@ -1,6 +1,6 @@
-- source include/have_binlog_format_mixed_or_row.inc -- source include/have_binlog_format_mixed_or_row.inc
-- source include/master-slave.inc
-- source include/have_innodb.inc -- source include/have_innodb.inc
-- source include/master-slave.inc
-- let $engine= InnoDB -- let $engine= InnoDB
-- source extra/rpl_tests/rpl_set_null.test -- 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 in this test: BUG#30594: rpl.rpl_skip_error is nondeterministic:
# BUG#39393: slave-skip-errors does not work when using ROW based replication # 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/have_innodb.inc;
source include/master-slave.inc;
--echo ==== Test Without sql_mode=strict_trans_tables ==== --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/have_debug.inc
--source include/master-slave.inc
connection master; connection master;
SET GLOBAL BINLOG_CHECKSUM=NONE; SET GLOBAL BINLOG_CHECKSUM=NONE;

View File

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

View File

@ -4,8 +4,8 @@
# test for MIXED mode. # test for MIXED mode.
source include/have_binlog_format_mixed.inc; source include/have_binlog_format_mixed.inc;
source include/master-slave.inc;
source include/have_innodb.inc; source include/have_innodb.inc;
source include/master-slave.inc;
connection slave; connection slave;
source include/have_innodb.inc; 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 # Note that due to the sleep() command the insert is written to the binary
# log in row format. # log in row format.
source include/master-slave.inc;
source include/have_binlog_format_statement.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("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"); 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/have_innodb.inc
--source include/master-slave.inc
--source include/not_embedded.inc --source include/not_embedded.inc
--source include/not_windows.inc --source include/not_windows.inc
--source include/have_binlog_format_statement.inc --source include/have_binlog_format_statement.inc
--source include/master-slave.inc
--source extra/rpl_tests/rpl_binlog_max_cache_size.test --source extra/rpl_tests/rpl_binlog_max_cache_size.test
--source include/rpl_end.inc --source include/rpl_end.inc

View File

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

View File

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

View File

@ -12,8 +12,8 @@
########## ##########
# Includes # Includes
-- source include/master-slave.inc
-- source include/have_binlog_format_statement.inc -- source include/have_binlog_format_statement.inc
-- source include/master-slave.inc
disable_query_log; disable_query_log;
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT"); 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 # 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_binlog_format_statement.inc
--source include/have_innodb.inc --source include/have_innodb.inc
--source include/master-slave.inc
# make innodb updates run fast # make innodb updates run fast
--connection slave --connection slave

View File

@ -2,8 +2,8 @@
# BUG#49562: SBR out of sync when using numeric data types + user variable # 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/have_binlog_format_statement.inc
-- source include/master-slave.inc
## Setup user variables for several numeric types, so that we get ## Setup user variables for several numeric types, so that we get
## coverage on the User_var_log_event different val types ## 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. # 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_binlog_format_mixed.inc;
source include/have_innodb.inc; source include/have_innodb.inc;
source include/master-slave.inc;
--echo ==== Initialize ==== --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/have_binlog_format_row.inc;
source include/master-slave.inc;
source include/have_innodb.inc; source include/have_innodb.inc;
source include/master-slave.inc;
call mtr.add_suppression("Deadlock found"); call mtr.add_suppression("Deadlock found");
call mtr.add_suppression("Can't find record in 't.'"); 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/have_binlog_format_statement.inc;
source include/master-slave.inc;
call mtr.add_suppression("Unsafe statement written to the binary log"); call mtr.add_suppression("Unsafe statement written to the binary log");

View File

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

View File

@ -602,3 +602,13 @@ remove_file $MYSQLD_DATADIR/test/t1.txt;
drop view v1; drop view v1;
drop table t1; drop table t1;
SET @@sql_mode= @save_mode; 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; OPTIMIZE TABLE t1;
DROP 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 # Check some variables
# #

View File

@ -83,3 +83,39 @@ SELECT TO_DAYS(a), TO_DAYS(b) FROM t1;
DROP TABLE t1; DROP TABLE t1;
SET @@global.mysql56_temporal_format=DEFAULT; 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/have_stat_tables.inc
--source include/master-slave.inc
--source include/have_binlog_format_row.inc --source include/have_binlog_format_row.inc
--source include/master-slave.inc
--echo # --echo #
--echo # Bug mdev-485: unexpected failure with replication of DROP/ALTER table --echo # Bug mdev-485: unexpected failure with replication of DROP/ALTER table

View File

@ -69,7 +69,7 @@ parse_arguments() {
wsrep_recover_position() { wsrep_recover_position() {
# Redirect server's error log to the log file. # Redirect server's error log to the log file.
eval /usr/sbin/mysqld $cmdline_args --user=$user --wsrep_recover \ eval /usr/sbin/mysqld $cmdline_args --user=$user --wsrep_recover \
--log-error="$log_file" --disable-log-error 2> "$log_file"
ret=$? ret=$?
if [ $ret -ne 0 ]; then if [ $ret -ne 0 ]; then
# Something went wrong, let us also print the error log so that it # 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 euid=$(id -u)
local ret=0 local ret=0
local wr_logfile=$(mktemp $DATADIR/wsrep_recovery.XXXXXX) local wr_logfile=$(mktemp wsrep_recovery.XXXXXX)
# safety checks # safety checks
if [ -z $wr_logfile ]; then if [ -z $wr_logfile ]; then
@ -263,11 +263,11 @@ wsrep_recover_position() {
local wr_pidfile="$DATADIR/"`@HOSTNAME@`"-recover.pid" 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" 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)" local rp="$(grep 'WSREP: Recovered position:' $wr_logfile)"
if [ -z "$rp" ]; then 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. 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, my_time_t Field_timestamp::get_timestamp(const uchar *pos,
ulong *sec_part) const 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) double Field_timestamp::val_real(void)
{ {
return (double) Field_timestamp::val_int(); 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) bool Field_timestamp::get_date(MYSQL_TIME *ltime, ulonglong fuzzydate)
{ {
THD *thd= get_thd();
thd->time_zone_used= 1;
ulong sec_part; ulong sec_part;
my_time_t temp= get_timestamp(&sec_part); my_time_t ts= get_timestamp(&sec_part);
if (temp == 0 && sec_part == 0) return timestamp_to_TIME(get_thd(), ltime, ts, sec_part, fuzzydate);
{ /* 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;
} }
@ -5104,36 +5141,6 @@ int Field_timestamp::set_time()
return 0; 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 #ifdef NOT_USED
static void store_native(ulonglong num, uchar *to, uint bytes) 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_real(Copy_field *copy);
static void do_field_string(Copy_field *copy); static void do_field_string(Copy_field *copy);
static void do_field_temporal(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); static void do_field_decimal(Copy_field *copy);
public: public:
static void *operator new(size_t size, MEM_ROOT *mem_root) throw () 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(longlong nr, bool unsigned_val)=0;
virtual int store_decimal(const my_decimal *d)=0; virtual int store_decimal(const my_decimal *d)=0;
virtual int store_time_dec(MYSQL_TIME *ltime, uint dec); 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) int store_time(MYSQL_TIME *ltime)
{ return store_time_dec(ltime, TIME_SECOND_PART_DIGITS); } { return store_time_dec(ltime, TIME_SECOND_PART_DIGITS); }
int store(const char *to, uint length, CHARSET_INFO *cs, 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); 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 Evaluates the @c UPDATE default function, if one exists, and stores the
@ -2389,11 +2391,14 @@ public:
TABLE_SHARE *share); TABLE_SHARE *share);
const Type_handler *type_handler() const { return &type_handler_timestamp; } const Type_handler *type_handler() const { return &type_handler_timestamp; }
enum ha_base_keytype key_type() const { return HA_KEYTYPE_ULONG_INT; } 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(const char *to,uint length,CHARSET_INFO *charset);
int store(double nr); int store(double nr);
int store(longlong nr, bool unsigned_val); int store(longlong nr, bool unsigned_val);
int store_time_dec(MYSQL_TIME *ltime, uint dec); int store_time_dec(MYSQL_TIME *ltime, uint dec);
int store_decimal(const my_decimal *); 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); double val_real(void);
longlong val_int(void); longlong val_int(void);
String *val_str(String*,String *); String *val_str(String*,String *);
@ -2404,7 +2409,6 @@ public:
void sql_type(String &str) const; void sql_type(String &str) const;
bool zero_pack() const { return 0; } bool zero_pack() const { return 0; }
int set_time(); int set_time();
bool set_explicit_default(Item *value);
int evaluate_update_default_function() int evaluate_update_default_function()
{ {
int res= 0; 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) void Field::do_field_temporal(Copy_field *copy)
{ {
MYSQL_TIME ltime; 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 Field::Copy_func *Field_temporal::get_copy_func(const Field *from) const
{ {
/* If types are not 100 % identical then convert trough get_date() */ /* 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(')'); 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 Converts current time in my_time_t to MYSQL_TIME represenatation for local
time zone. Defines time zone (local) used for whole NOW function. 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: public:
Item_func_now_local(THD *thd, uint dec): Item_func_now(thd, dec) {} Item_func_now_local(THD *thd, uint dec): Item_func_now(thd, dec) {}
const char *func_name() const { return "current_timestamp"; } 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 void store_now_in_TIME(THD *thd, MYSQL_TIME *now_time);
virtual enum Functype functype() const { return NOW_FUNC; } virtual enum Functype functype() const { return NOW_FUNC; }
Item *get_copy(THD *thd, MEM_ROOT *mem_root) 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 This class is an internal error handler implementation for
DROP TABLE statements. The thing is that there may be warnings during 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) int TABLE_LIST::view_check_option(THD *thd, bool ignore_failure)
{
if (check_option)
{ {
/* VIEW's CHECK OPTION CLAUSE */ /* 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(); TABLE_LIST *main_view= top_table();
const char *name_db= (main_view->view ? main_view->view_db.str : 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); name_db, name_table);
return ignore_failure ? VIEW_CHECK_SKIP : VIEW_CHECK_ERROR; 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. */ return table->verify_constraints(ignore_failure);
if (thd->is_error())
return(VIEW_CHECK_ERROR);
return result;
} }

View File

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

View File

@ -8,7 +8,7 @@
/***********************************************************************/ /***********************************************************************/
typedef struct _datpar { typedef struct _datpar {
const char *Format; // Points to format to decode 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 *InFmt; // Start of input format
char *OutFmt; // Start of output format char *OutFmt; // Start of output format
int Index[8]; // Indexes of date values 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 m_Rc; // Return code from command
//int AftRows; // The number of affected rows //int AftRows; // The number of affected rows
int N; // The current table index 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 Nparm; // The number of statement parameters
//int Quoted; // The identifier quoting level //int Quoted; // The identifier quoting level
}; // end of class TDBMYSQL }; // 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}; FLD_REM, FLD_NO, FLD_CHARSET};
unsigned int length[] = {0, 4, 16, 4, 4, 4, 4, 4, 0, 32, 32}; unsigned int length[] = {0, 4, 16, 4, 4, 4, 4, 4, 0, 32, 32};
PCSZ fmt; 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 i, n, ncol = sizeof(buftyp) / sizeof(int);
int prec, len, type, scale; int prec, len, type, scale;
int zconv = GetConvSize(); int zconv = GetConvSize();
@ -185,7 +185,7 @@ PQRYRES TabColumns(PGLOBAL g, THD *thd, const char *db,
colname = (char *)fp->field_name.str; colname = (char *)fp->field_name.str;
crp->Kdata->SetValue(colname, i); crp->Kdata->SetValue(colname, i);
chset = (char *)fp->charset()->name; // chset = (char *)fp->charset()->name;
// v = (!strcmp(chset, "binary")) ? 'B' : 0; // v = (!strcmp(chset, "binary")) ? 'B' : 0;
v = 0; v = 0;

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