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:
@ -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)
|
||||
|
@ -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.
|
||||
|
@ -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');
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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");
|
||||
|
@ -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_____________________;
|
||||
|
@ -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.
|
||||
|
@ -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;
|
||||
|
@ -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");
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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=
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
#
|
||||
|
@ -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
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
--source include/master-slave.inc
|
||||
--source include/have_binlog_format_mixed.inc
|
||||
--source include/master-slave.inc
|
||||
|
||||
--enable_connect_log
|
||||
|
||||
|
@ -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
|
@ -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
|
||||
|
@ -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.');
|
||||
|
||||
|
@ -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");
|
||||
|
@ -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");
|
||||
|
||||
|
@ -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");
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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");
|
||||
|
@ -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");
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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");
|
||||
|
@ -1,5 +1,5 @@
|
||||
--source include/master-slave.inc
|
||||
--source include/have_binlog_format_statement.inc
|
||||
--source include/master-slave.inc
|
||||
|
||||
--connection slave
|
||||
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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";
|
||||
|
||||
|
@ -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");
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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.
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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`;
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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
|
||||
|
@ -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 ====
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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");
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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");
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 ====
|
||||
|
||||
|
@ -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;
|
@ -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.'");
|
||||
|
@ -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");
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
#
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
97
sql/field.cc
97
sql/field.cc
@ -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, <ime, ts, sec_part, 0);
|
||||
return store_time_dec(<ime, 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)
|
||||
{
|
||||
|
@ -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;
|
||||
|
@ -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() */
|
||||
|
@ -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.
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
17
sql/table.cc
17
sql/table.cc
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
@ -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})
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
Reference in New Issue
Block a user