Commit 5d35b71d authored by Otto Kekäläinen's avatar Otto Kekäläinen

New upstream version 10.1.35

parent 7c477360
...@@ -179,6 +179,12 @@ ENDIF() ...@@ -179,6 +179,12 @@ ENDIF()
OPTION (WITH_UNIT_TESTS "Compile MySQL with unit tests" ON) OPTION (WITH_UNIT_TESTS "Compile MySQL with unit tests" ON)
MARK_AS_ADVANCED(CYBOZU) MARK_AS_ADVANCED(CYBOZU)
IF (WITHOUT_SERVER)
SET (SKIP_COMPONENTS "Server|IniFiles|SuportFiles|Readme")
ELSE()
SET (SKIP_COMPONENTS "N-O-N-E")
ENDIF()
OPTION(NOT_FOR_DISTRIBUTION "Allow linking with GPLv2-incompatible system libraries. Only set it you never plan to distribute the resulting binaries" OFF) OPTION(NOT_FOR_DISTRIBUTION "Allow linking with GPLv2-incompatible system libraries. Only set it you never plan to distribute the resulting binaries" OFF)
INCLUDE(check_compiler_flag) INCLUDE(check_compiler_flag)
...@@ -362,10 +368,6 @@ INCLUDE(maintainer) ...@@ -362,10 +368,6 @@ INCLUDE(maintainer)
IF(WITH_UNIT_TESTS) IF(WITH_UNIT_TESTS)
ENABLE_TESTING() ENABLE_TESTING()
# This is the only instance where ADD_TEST should be used,
# to make sure that make test will run MTR,
# use MY_ADD_TEST macro to add other tests
ADD_TEST(NAME MTR COMMAND ./mysql-test-run WORKING_DIRECTORY "mysql-test")
ADD_SUBDIRECTORY(unittest/mytap) ADD_SUBDIRECTORY(unittest/mytap)
ADD_SUBDIRECTORY(unittest/strings) ADD_SUBDIRECTORY(unittest/strings)
ADD_SUBDIRECTORY(unittest/examples) ADD_SUBDIRECTORY(unittest/examples)
......
commit: 9f848da640dd6c3f44d56eae18204370ae7f835c commit: 50c426200224a4527e84052aa2ab32be893f43f4
date: 2018-06-16 01:20:44 +0200 date: 2018-08-04 22:53:16 +0100
build-date: 2018-06-16 00:19:48 +0000 build-date: 2018-08-04 22:21:00 +0000
short: 9f848da short: 50c4262
branch: HEAD branch: HEAD
MariaDB source 10.1.34 MariaDB source 10.1.35
MYSQL_VERSION_MAJOR=10 MYSQL_VERSION_MAJOR=10
MYSQL_VERSION_MINOR=1 MYSQL_VERSION_MINOR=1
MYSQL_VERSION_PATCH=34 MYSQL_VERSION_PATCH=35
...@@ -71,7 +71,7 @@ ulong bytes_sent = 0L, bytes_received = 0L; ...@@ -71,7 +71,7 @@ ulong bytes_sent = 0L, bytes_received = 0L;
ulong mysqld_net_retry_count = 10L; ulong mysqld_net_retry_count = 10L;
ulong open_files_limit; ulong open_files_limit;
ulong opt_binlog_rows_event_max_size; ulong opt_binlog_rows_event_max_size;
uint test_flags = 0; ulonglong test_flags = 0;
static uint opt_protocol= 0; static uint opt_protocol= 0;
static FILE *result_file; static FILE *result_file;
static char *result_file_name= 0; static char *result_file_name= 0;
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
INCLUDE(${MYSQL_CMAKE_SCRIPT_DIR}/cmake_parse_arguments.cmake) INCLUDE(${MYSQL_CMAKE_SCRIPT_DIR}/cmake_parse_arguments.cmake)
MACRO(MY_ADD_TEST name) MACRO(MY_ADD_TEST name)
ADD_TEST(NAME ${name} COMMAND ${name}-t CONFIGURATIONS default_ignore) ADD_TEST(${name} ${name}-t)
ENDMACRO() ENDMACRO()
MACRO (MY_ADD_TESTS) MACRO (MY_ADD_TESTS)
......
...@@ -46,6 +46,10 @@ MACRO(CHECK_DTRACE) ...@@ -46,6 +46,10 @@ MACRO(CHECK_DTRACE)
AND NOT CMAKE_SYSTEM_NAME MATCHES "SunOS") AND NOT CMAKE_SYSTEM_NAME MATCHES "SunOS")
SET(ENABLE_DTRACE ON CACHE BOOL "Enable dtrace") SET(ENABLE_DTRACE ON CACHE BOOL "Enable dtrace")
ENDIF() ENDIF()
# On GNU/Hurd, dtrace is not supported
IF(DTRACE AND CMAKE_SYSTEM_NAME MATCHES "GNU")
SET(ENABLE_DTRACE OFF CACHE BOOL "Disable dtrace")
ENDIF()
SET(HAVE_DTRACE ${ENABLE_DTRACE}) SET(HAVE_DTRACE ${ENABLE_DTRACE})
IF(CMAKE_SYSTEM_NAME MATCHES "SunOS") IF(CMAKE_SYSTEM_NAME MATCHES "SunOS")
IF(CMAKE_SIZEOF_VOID_P EQUAL 4) IF(CMAKE_SIZEOF_VOID_P EQUAL 4)
......
...@@ -114,7 +114,12 @@ FUNCTION(INSTALL_SCRIPT) ...@@ -114,7 +114,12 @@ FUNCTION(INSTALL_SCRIPT)
SET(COMP) SET(COMP)
ENDIF() ENDIF()
IF (COMP MATCHES ${SKIP_COMPONENTS})
RETURN()
ENDIF()
INSTALL(PROGRAMS ${script} DESTINATION ${ARG_DESTINATION} ${COMP}) INSTALL(PROGRAMS ${script} DESTINATION ${ARG_DESTINATION} ${COMP})
INSTALL_MANPAGE(${script}) INSTALL_MANPAGE(${script})
ENDFUNCTION() ENDFUNCTION()
...@@ -131,6 +136,10 @@ FUNCTION(INSTALL_DOCUMENTATION) ...@@ -131,6 +136,10 @@ FUNCTION(INSTALL_DOCUMENTATION)
SET(destination ${INSTALL_DOCDIR}) SET(destination ${INSTALL_DOCDIR})
ENDIF() ENDIF()
IF (ARG_COMPONENT MATCHES ${SKIP_COMPONENTS})
RETURN()
ENDIF()
STRING(TOUPPER ${ARG_COMPONENT} COMPUP) STRING(TOUPPER ${ARG_COMPONENT} COMPUP)
IF(CPACK_COMPONENT_${COMPUP}_GROUP) IF(CPACK_COMPONENT_${COMPUP}_GROUP)
SET(group ${CPACK_COMPONENT_${COMPUP}_GROUP}) SET(group ${CPACK_COMPONENT_${COMPUP}_GROUP})
......
...@@ -59,6 +59,9 @@ FUNCTION (MYSQL_ADD_EXECUTABLE) ...@@ -59,6 +59,9 @@ FUNCTION (MYSQL_ADD_EXECUTABLE)
ELSE() ELSE()
SET(COMP COMPONENT Client) SET(COMP COMPONENT Client)
ENDIF() ENDIF()
IF (COMP MATCHES ${SKIP_COMPONENTS})
RETURN()
ENDIF()
MYSQL_INSTALL_TARGETS(${target} DESTINATION ${ARG_DESTINATION} ${COMP}) MYSQL_INSTALL_TARGETS(${target} DESTINATION ${ARG_DESTINATION} ${COMP})
ENDIF() ENDIF()
ENDFUNCTION() ENDFUNCTION()
...@@ -50,7 +50,7 @@ IF(CMAKE_C_COMPILER MATCHES "icl") ...@@ -50,7 +50,7 @@ IF(CMAKE_C_COMPILER MATCHES "icl")
ENDIF() ENDIF()
ADD_DEFINITIONS(-D_WINDOWS -D__WIN__ -D_CRT_SECURE_NO_DEPRECATE) ADD_DEFINITIONS(-D_WINDOWS -D__WIN__ -D_CRT_SECURE_NO_DEPRECATE)
ADD_DEFINITIONS(-D_WIN32_WINNT=0x0600) ADD_DEFINITIONS(-D_WIN32_WINNT=0x0A00)
# We do not want the windows.h macros min/max # We do not want the windows.h macros min/max
ADD_DEFINITIONS(-DNOMINMAX) ADD_DEFINITIONS(-DNOMINMAX)
# Speed up build process excluding unused header files # Speed up build process excluding unused header files
......
...@@ -77,6 +77,9 @@ IF(NOT VERSION) ...@@ -77,6 +77,9 @@ IF(NOT VERSION)
SET(DEFAULT_MACHINE "i386") SET(DEFAULT_MACHINE "i386")
ENDIF() ENDIF()
ENDIF() ENDIF()
ELSEIF(CMAKE_SYSTEM_NAME MATCHES "GNU")
SET(DEFAULT_PLATFORM "GNU")
SET(DEFAULT_MACHINE "i386")
ELSEIF(CMAKE_SYSTEM_NAME MATCHES "Darwin") ELSEIF(CMAKE_SYSTEM_NAME MATCHES "Darwin")
IF(CMAKE_OSX_DEPLOYMENT_TARGET) IF(CMAKE_OSX_DEPLOYMENT_TARGET)
SET(DEFAULT_PLATFORM "osx${CMAKE_OSX_DEPLOYMENT_TARGET}") SET(DEFAULT_PLATFORM "osx${CMAKE_OSX_DEPLOYMENT_TARGET}")
......
...@@ -460,6 +460,21 @@ struct datafile_cur_t { ...@@ -460,6 +460,21 @@ struct datafile_cur_t {
size_t buf_size; size_t buf_size;
size_t buf_read; size_t buf_read;
size_t buf_offset; size_t buf_offset;
explicit datafile_cur_t(const char* filename = NULL) :
file(), thread_n(0), orig_buf(NULL), buf(NULL), buf_size(0),
buf_read(0), buf_offset(0)
{
memset(rel_path, 0, sizeof rel_path);
if (filename) {
strncpy(abs_path, filename, sizeof abs_path);
abs_path[(sizeof abs_path) - 1] = 0;
} else {
abs_path[0] = '\0';
}
rel_path[0] = '\0';
memset(&statinfo, 0, sizeof statinfo);
}
}; };
static static
...@@ -478,9 +493,7 @@ datafile_open(const char *file, datafile_cur_t *cursor, uint thread_n) ...@@ -478,9 +493,7 @@ datafile_open(const char *file, datafile_cur_t *cursor, uint thread_n)
{ {
ulint success; ulint success;
memset(cursor, 0, sizeof(datafile_cur_t)); new (cursor) datafile_cur_t(file);
strncpy(cursor->abs_path, file, sizeof(cursor->abs_path));
/* Get the relative path for the destination tablespace name, i.e. the /* Get the relative path for the destination tablespace name, i.e. the
one that can be appended to the backup root directory. Non-system one that can be appended to the backup root directory. Non-system
...@@ -623,11 +636,14 @@ static ...@@ -623,11 +636,14 @@ static
int int
mkdirp(const char *pathname, int Flags, myf MyFlags) mkdirp(const char *pathname, int Flags, myf MyFlags)
{ {
char parent[PATH_MAX], *p; char *parent, *p;
int len = strlen(pathname) + 1;
/* make a parent directory path */ /* make a parent directory path */
strncpy(parent, pathname, sizeof(parent)); if (!(parent= (char *)malloc(len)))
parent[sizeof(parent) - 1] = 0; return(-1);
strncpy(parent, pathname, len);
parent[len-1]= 0;
for (p = parent + strlen(parent); for (p = parent + strlen(parent);
!is_path_separator(*p) && p != parent; p--); !is_path_separator(*p) && p != parent; p--);
...@@ -636,19 +652,23 @@ mkdirp(const char *pathname, int Flags, myf MyFlags) ...@@ -636,19 +652,23 @@ mkdirp(const char *pathname, int Flags, myf MyFlags)
/* try to make parent directory */ /* try to make parent directory */
if (p != parent && mkdirp(parent, Flags, MyFlags) != 0) { if (p != parent && mkdirp(parent, Flags, MyFlags) != 0) {
free(parent);
return(-1); return(-1);
} }
/* make this one if parent has been made */ /* make this one if parent has been made */
if (my_mkdir(pathname, Flags, MyFlags) == 0) { if (my_mkdir(pathname, Flags, MyFlags) == 0) {
free(parent);
return(0); return(0);
} }
/* if it already exists that is fine */ /* if it already exists that is fine */
if (errno == EEXIST) { if (errno == EEXIST) {
free(parent);
return(0); return(0);
} }
free(parent);
return(-1); return(-1);
} }
...@@ -658,17 +678,24 @@ bool ...@@ -658,17 +678,24 @@ bool
equal_paths(const char *first, const char *second) equal_paths(const char *first, const char *second)
{ {
#ifdef HAVE_REALPATH #ifdef HAVE_REALPATH
char real_first[PATH_MAX]; char *real_first, *real_second;
char real_second[PATH_MAX]; int result;
if (realpath(first, real_first) == NULL) { real_first = realpath(first, 0);
if (real_first == NULL) {
return false; return false;
} }
if (realpath(second, real_second) == NULL) {
real_second = realpath(second, 0);
if (real_second == NULL) {
free(real_first);
return false; return false;
} }
return (strcmp(real_first, real_second) == 0); result = strcmp(real_first, real_second);
free(real_first);
free(real_second);
return result == 0;
#else #else
return strcmp(first, second) == 0; return strcmp(first, second) == 0;
#endif #endif
......
...@@ -179,8 +179,7 @@ xb_write_galera_info(bool incremental_prepare) ...@@ -179,8 +179,7 @@ xb_write_galera_info(bool incremental_prepare)
return; return;
} }
memset(&xid, 0, sizeof(xid)); xid.null();
xid.formatID = -1;
if (!trx_sys_read_wsrep_checkpoint(&xid)) { if (!trx_sys_read_wsrep_checkpoint(&xid)) {
......
...@@ -369,7 +369,7 @@ typedef int (*my_charset_conv_mb_wc)(CHARSET_INFO *, my_wc_t *, ...@@ -369,7 +369,7 @@ typedef int (*my_charset_conv_mb_wc)(CHARSET_INFO *, my_wc_t *,
typedef int (*my_charset_conv_wc_mb)(CHARSET_INFO *, my_wc_t, typedef int (*my_charset_conv_wc_mb)(CHARSET_INFO *, my_wc_t,
uchar *, uchar *); uchar *, uchar *);
typedef size_t (*my_charset_conv_case)(CHARSET_INFO *, typedef size_t (*my_charset_conv_case)(CHARSET_INFO *,
char *, size_t, char *, size_t); const char *, size_t, char *, size_t);
/* /*
A structure to return the statistics of a native string copying, A structure to return the statistics of a native string copying,
...@@ -678,9 +678,11 @@ size_t my_copy_fix_mb(CHARSET_INFO *cs, ...@@ -678,9 +678,11 @@ size_t my_copy_fix_mb(CHARSET_INFO *cs,
/* Functions for 8bit */ /* Functions for 8bit */
extern size_t my_caseup_str_8bit(CHARSET_INFO *, char *); extern size_t my_caseup_str_8bit(CHARSET_INFO *, char *);
extern size_t my_casedn_str_8bit(CHARSET_INFO *, char *); extern size_t my_casedn_str_8bit(CHARSET_INFO *, char *);
extern size_t my_caseup_8bit(CHARSET_INFO *, char *src, size_t srclen, extern size_t my_caseup_8bit(CHARSET_INFO *,
const char *src, size_t srclen,
char *dst, size_t dstlen); char *dst, size_t dstlen);
extern size_t my_casedn_8bit(CHARSET_INFO *, char *src, size_t srclen, extern size_t my_casedn_8bit(CHARSET_INFO *,
const char *src, size_t srclen,
char *dst, size_t dstlen); char *dst, size_t dstlen);
extern int my_strcasecmp_8bit(CHARSET_INFO * cs, const char *, const char *); extern int my_strcasecmp_8bit(CHARSET_INFO * cs, const char *, const char *);
...@@ -777,17 +779,17 @@ uint my_mbcharlen_8bit(CHARSET_INFO *, uint c); ...@@ -777,17 +779,17 @@ uint my_mbcharlen_8bit(CHARSET_INFO *, uint c);
/* Functions for multibyte charsets */ /* Functions for multibyte charsets */
extern size_t my_caseup_str_mb(CHARSET_INFO *, char *); extern size_t my_caseup_str_mb(CHARSET_INFO *, char *);
extern size_t my_casedn_str_mb(CHARSET_INFO *, char *); extern size_t my_casedn_str_mb(CHARSET_INFO *, char *);
extern size_t my_caseup_mb(CHARSET_INFO *, char *src, size_t srclen, extern size_t my_caseup_mb(CHARSET_INFO *,
char *dst, size_t dstlen); const char *src, size_t srclen,
extern size_t my_casedn_mb(CHARSET_INFO *, char *src, size_t srclen, char *dst, size_t dstlen);
char *dst, size_t dstlen); extern size_t my_casedn_mb(CHARSET_INFO *,
extern size_t my_caseup_mb_varlen(CHARSET_INFO *, char *src, size_t srclen, const char *src, size_t srclen,
char *dst, size_t dstlen); char *dst, size_t dstlen);
extern size_t my_casedn_mb_varlen(CHARSET_INFO *, char *src, size_t srclen, extern size_t my_caseup_ujis(CHARSET_INFO *,
char *dst, size_t dstlen); const char *src, size_t srclen,
extern size_t my_caseup_ujis(CHARSET_INFO *, char *src, size_t srclen,
char *dst, size_t dstlen); char *dst, size_t dstlen);
extern size_t my_casedn_ujis(CHARSET_INFO *, char *src, size_t srclen, extern size_t my_casedn_ujis(CHARSET_INFO *,
const char *src, size_t srclen,
char *dst, size_t dstlen); char *dst, size_t dstlen);
extern int my_strcasecmp_mb(CHARSET_INFO * cs,const char *, const char *); extern int my_strcasecmp_mb(CHARSET_INFO * cs,const char *, const char *);
......
...@@ -112,7 +112,6 @@ typedef struct my_aio_result { ...@@ -112,7 +112,6 @@ typedef struct my_aio_result {
#define ME_JUST_INFO 1024 /**< not error but just info */ #define ME_JUST_INFO 1024 /**< not error but just info */
#define ME_JUST_WARNING 2048 /**< not error but just warning */ #define ME_JUST_WARNING 2048 /**< not error but just warning */
#define ME_FATALERROR 4096 /* Fatal statement error */ #define ME_FATALERROR 4096 /* Fatal statement error */
#define ME_LOG_AS_WARN 8192 /* is error but error-logged as warning */
/* Bits in last argument to fn_format */ /* Bits in last argument to fn_format */
#define MY_REPLACE_DIR 1 /* replace dir in name with 'dir' */ #define MY_REPLACE_DIR 1 /* replace dir in name with 'dir' */
......
#ifndef SQL_COMMON_INCLUDED #ifndef SQL_COMMON_INCLUDED
#define SQL_COMMON_INCLUDED #define SQL_COMMON_INCLUDED
/* Copyright (c) 2003, 2012, Oracle and/or its affiliates. /* Copyright (c) 2003, 2018, Oracle and/or its affiliates.
Copyright (c) 2010, 2018, MariaDB Copyright (c) 2010, 2018, MariaDB
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
......
--echo #
--echo # MDEV-13118 Wrong results with LOWER and UPPER and subquery
--echo #
SET @save_optimizer_switch=@@optimizer_switch;
SET optimizer_switch=_latin1'derived_merge=on';
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS t LIMIT 0;
SHOW CREATE TABLE t1;
INSERT INTO t1 VALUES ('abcdefghi'),('ABCDEFGHI');
--sorted_result
SELECT CONCAT(t2,'-',t2) c2 FROM (SELECT LOWER(t) t2 FROM t1) sub;
--sorted_result
SELECT CONCAT(t2,'-',t2) c2 FROM (SELECT UPPER(t) t2 FROM t1) sub;
DROP TABLE t1;
SET optimizer_switch=@save_optimizer_switch;
...@@ -537,3 +537,32 @@ pk ...@@ -537,3 +537,32 @@ pk
-5 -5
1 1
drop table t1; drop table t1;
#
# Start of 5.5 tests
#
#
# MDEV-16534 PPC64: Unexpected error with a negative values into auto-increment columns in HEAP, MyISAM, ARIA
#
CREATE TABLE t1 (
id TINYINT NOT NULL AUTO_INCREMENT,
name CHAR(30) NOT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`id` tinyint(4) NOT NULL AUTO_INCREMENT,
`name` char(30) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
INSERT INTO t1 (name) VALUES ('dog');
UPDATE t1 SET id=-1 WHERE id=1;
INSERT INTO t1 (name) VALUES ('cat');
SELECT * FROM t1;
id name
-1 dog
2 cat
DROP TABLE t1;
#
# End of 5.5 tests
#
...@@ -3047,6 +3047,29 @@ DROP TABLE t1; ...@@ -3047,6 +3047,29 @@ DROP TABLE t1;
SELECT _binary 0x7E, _binary X'7E', _binary B'01111110'; SELECT _binary 0x7E, _binary X'7E', _binary B'01111110';
_binary 0x7E _binary X'7E' _binary B'01111110' _binary 0x7E _binary X'7E' _binary B'01111110'
~ ~ ~ ~ ~ ~
SET NAMES utf8, character_set_connection=binary;
#
# MDEV-13118 Wrong results with LOWER and UPPER and subquery
#
SET @save_optimizer_switch=@@optimizer_switch;
SET optimizer_switch=_latin1'derived_merge=on';
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS t LIMIT 0;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`t` varbinary(10) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
INSERT INTO t1 VALUES ('abcdefghi'),('ABCDEFGHI');
SELECT CONCAT(t2,'-',t2) c2 FROM (SELECT LOWER(t) t2 FROM t1) sub;
c2
ABCDEFGHI-ABCDEFGHI
abcdefghi-abcdefghi
SELECT CONCAT(t2,'-',t2) c2 FROM (SELECT UPPER(t) t2 FROM t1) sub;
c2
ABCDEFGHI-ABCDEFGHI
abcdefghi-abcdefghi
DROP TABLE t1;
SET optimizer_switch=@save_optimizer_switch;
# #
# End of 10.0 tests # End of 10.0 tests
# #
......
...@@ -33868,6 +33868,29 @@ HEX(a) CHAR_LENGTH(a) ...@@ -33868,6 +33868,29 @@ HEX(a) CHAR_LENGTH(a)
DROP TABLE t1; DROP TABLE t1;
SELECT _eucjpms 0x8EA0; SELECT _eucjpms 0x8EA0;
ERROR HY000: Invalid eucjpms character string: '8EA0' ERROR HY000: Invalid eucjpms character string: '8EA0'
SET NAMES eucjpms;
#
# MDEV-13118 Wrong results with LOWER and UPPER and subquery
#
SET @save_optimizer_switch=@@optimizer_switch;
SET optimizer_switch=_latin1'derived_merge=on';
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS t LIMIT 0;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`t` varchar(10) CHARACTER SET eucjpms NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
INSERT INTO t1 VALUES ('abcdefghi'),('ABCDEFGHI');
SELECT CONCAT(t2,'-',t2) c2 FROM (SELECT LOWER(t) t2 FROM t1) sub;
c2
abcdefghi-abcdefghi
abcdefghi-abcdefghi
SELECT CONCAT(t2,'-',t2) c2 FROM (SELECT UPPER(t) t2 FROM t1) sub;
c2
ABCDEFGHI-ABCDEFGHI
ABCDEFGHI-ABCDEFGHI
DROP TABLE t1;
SET optimizer_switch=@save_optimizer_switch;
# #
# End of 10.0 tests # End of 10.0 tests
# #
......
...@@ -25428,3 +25428,32 @@ A1A1A1A1A1A120202020202020202020202020202020202020 ...@@ -25428,3 +25428,32 @@ A1A1A1A1A1A120202020202020202020202020202020202020
# #
# End of 5.6 tests # End of 5.6 tests
# #
#
# Start of 10.0 tests
#
SET NAMES utf8, character_set_connection=euckr;
#
# MDEV-13118 Wrong results with LOWER and UPPER and subquery
#
SET @save_optimizer_switch=@@optimizer_switch;
SET optimizer_switch=_latin1'derived_merge=on';
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS t LIMIT 0;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`t` varchar(10) CHARACTER SET euckr NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
INSERT INTO t1 VALUES ('abcdefghi'),('ABCDEFGHI');
SELECT CONCAT(t2,'-',t2) c2 FROM (SELECT LOWER(t) t2 FROM t1) sub;
c2
abcdefghi-abcdefghi
abcdefghi-abcdefghi
SELECT CONCAT(t2,'-',t2) c2 FROM (SELECT UPPER(t) t2 FROM t1) sub;
c2
ABCDEFGHI-ABCDEFGHI
ABCDEFGHI-ABCDEFGHI
DROP TABLE t1;
SET optimizer_switch=@save_optimizer_switch;
#
# End of 10.0 tests
#
...@@ -5099,6 +5099,29 @@ E05C5B ...@@ -5099,6 +5099,29 @@ E05C5B
E05B E05B
DROP TABLE t1; DROP TABLE t1;
# Start of ctype_E05C.inc # Start of ctype_E05C.inc
SET NAMES utf8, character_set_connection=gbk;
#
# MDEV-13118 Wrong results with LOWER and UPPER and subquery
#
SET @save_optimizer_switch=@@optimizer_switch;
SET optimizer_switch=_latin1'derived_merge=on';
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS t LIMIT 0;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`t` varchar(10) CHARACTER SET gbk NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
INSERT INTO t1 VALUES ('abcdefghi'),('ABCDEFGHI');
SELECT CONCAT(t2,'-',t2) c2 FROM (SELECT LOWER(t) t2 FROM t1) sub;
c2
abcdefghi-abcdefghi
abcdefghi-abcdefghi
SELECT CONCAT(t2,'-',t2) c2 FROM (SELECT UPPER(t) t2 FROM t1) sub;
c2
ABCDEFGHI-ABCDEFGHI
ABCDEFGHI-ABCDEFGHI
DROP TABLE t1;
SET optimizer_switch=@save_optimizer_switch;
# #
# MDEV-9886 Illegal mix of collations with a view comparing a field to a binary constant # MDEV-9886 Illegal mix of collations with a view comparing a field to a binary constant
# #
......
...@@ -7989,6 +7989,29 @@ a ...@@ -7989,6 +7989,29 @@ a
0 0
DROP VIEW v1; DROP VIEW v1;
DROP TABLE t1; DROP TABLE t1;
SET NAMES latin1;
#
# MDEV-13118 Wrong results with LOWER and UPPER and subquery
#
SET @save_optimizer_switch=@@optimizer_switch;