Merge branch '10.0' into bb-10.1-merge-sanja
This commit is contained in:
commit
cb5952b506
@ -179,6 +179,12 @@ ENDIF()
|
||||
OPTION (WITH_UNIT_TESTS "Compile MySQL with unit tests" ON)
|
||||
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)
|
||||
|
||||
INCLUDE(check_compiler_flag)
|
||||
|
@ -114,7 +114,12 @@ FUNCTION(INSTALL_SCRIPT)
|
||||
SET(COMP)
|
||||
ENDIF()
|
||||
|
||||
IF (COMP MATCHES ${SKIP_COMPONENTS})
|
||||
RETURN()
|
||||
ENDIF()
|
||||
|
||||
INSTALL(PROGRAMS ${script} DESTINATION ${ARG_DESTINATION} ${COMP})
|
||||
|
||||
INSTALL_MANPAGE(${script})
|
||||
ENDFUNCTION()
|
||||
|
||||
@ -131,6 +136,10 @@ FUNCTION(INSTALL_DOCUMENTATION)
|
||||
SET(destination ${INSTALL_DOCDIR})
|
||||
ENDIF()
|
||||
|
||||
IF (ARG_COMPONENT MATCHES ${SKIP_COMPONENTS})
|
||||
RETURN()
|
||||
ENDIF()
|
||||
|
||||
STRING(TOUPPER ${ARG_COMPONENT} COMPUP)
|
||||
IF(CPACK_COMPONENT_${COMPUP}_GROUP)
|
||||
SET(group ${CPACK_COMPONENT_${COMPUP}_GROUP})
|
||||
|
@ -59,6 +59,9 @@ FUNCTION (MYSQL_ADD_EXECUTABLE)
|
||||
ELSE()
|
||||
SET(COMP COMPONENT Client)
|
||||
ENDIF()
|
||||
IF (COMP MATCHES ${SKIP_COMPONENTS})
|
||||
RETURN()
|
||||
ENDIF()
|
||||
MYSQL_INSTALL_TARGETS(${target} DESTINATION ${ARG_DESTINATION} ${COMP})
|
||||
ENDIF()
|
||||
ENDFUNCTION()
|
||||
|
@ -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,
|
||||
uchar *, uchar *);
|
||||
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,
|
||||
@ -678,9 +678,11 @@ size_t my_copy_fix_mb(CHARSET_INFO *cs,
|
||||
/* Functions for 8bit */
|
||||
extern size_t my_caseup_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);
|
||||
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);
|
||||
|
||||
extern int my_strcasecmp_8bit(CHARSET_INFO * cs, const char *, const char *);
|
||||
@ -777,17 +779,17 @@ uint my_mbcharlen_8bit(CHARSET_INFO *, uint c);
|
||||
/* Functions for multibyte charsets */
|
||||
extern size_t my_caseup_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,
|
||||
char *dst, size_t dstlen);
|
||||
extern size_t my_casedn_mb(CHARSET_INFO *, char *src, size_t srclen,
|
||||
char *dst, size_t dstlen);
|
||||
extern size_t my_caseup_mb_varlen(CHARSET_INFO *, char *src, size_t srclen,
|
||||
char *dst, size_t dstlen);
|
||||
extern size_t my_casedn_mb_varlen(CHARSET_INFO *, char *src, size_t srclen,
|
||||
char *dst, size_t dstlen);
|
||||
extern size_t my_caseup_ujis(CHARSET_INFO *, char *src, size_t srclen,
|
||||
extern size_t my_caseup_mb(CHARSET_INFO *,
|
||||
const char *src, size_t srclen,
|
||||
char *dst, size_t dstlen);
|
||||
extern size_t my_casedn_mb(CHARSET_INFO *,
|
||||
const char *src, size_t srclen,
|
||||
char *dst, size_t dstlen);
|
||||
extern size_t my_caseup_ujis(CHARSET_INFO *,
|
||||
const char *src, size_t srclen,
|
||||
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);
|
||||
extern int my_strcasecmp_mb(CHARSET_INFO * cs,const char *, const char *);
|
||||
|
||||
|
15
mysql-test/include/ctype_mdev13118.inc
Normal file
15
mysql-test/include/ctype_mdev13118.inc
Normal file
@ -0,0 +1,15 @@
|
||||
--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;
|
@ -3047,6 +3047,29 @@ DROP TABLE t1;
|
||||
SELECT _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
|
||||
#
|
||||
|
@ -33868,6 +33868,29 @@ HEX(a) CHAR_LENGTH(a)
|
||||
DROP TABLE t1;
|
||||
SELECT _eucjpms 0x8EA0;
|
||||
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
|
||||
#
|
||||
|
@ -25428,3 +25428,32 @@ A1A1A1A1A1A120202020202020202020202020202020202020
|
||||
#
|
||||
# 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
|
||||
E05B
|
||||
DROP TABLE t1;
|
||||
# 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
|
||||
#
|
||||
|
@ -7989,6 +7989,29 @@ a
|
||||
0
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1;
|
||||
SET NAMES latin1;
|
||||
#
|
||||
# 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) 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
|
||||
#
|
||||
|
@ -5705,6 +5705,29 @@ c2
|
||||
YWJjZGVmZ2hp-YWJjZGVmZ2hp
|
||||
DROP TABLE t1;
|
||||
SET optimizer_switch=@save_optimizer_switch;
|
||||
SET NAMES utf8, character_set_connection=ucs2;
|
||||
#
|
||||
# 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 ucs2 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
|
||||
#
|
||||
|
@ -26173,6 +26173,29 @@ HEX(a) CHAR_LENGTH(a)
|
||||
DROP TABLE t1;
|
||||
SELECT _ujis 0x8EA0;
|
||||
ERROR HY000: Invalid ujis character string: '8EA0'
|
||||
SET NAMES ujis;
|
||||
#
|
||||
# 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 ujis 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
|
||||
#
|
||||
|
@ -2138,6 +2138,29 @@ EXECUTE stmt USING @arg00;
|
||||
CONCAT(_utf16'a' COLLATE utf16_unicode_ci, ?)
|
||||
aÿ
|
||||
DEALLOCATE PREPARE stmt;
|
||||
SET NAMES utf8, character_set_connection=utf16;
|
||||
#
|
||||
# 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 utf16 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
|
||||
#
|
||||
|
@ -2324,6 +2324,35 @@ DFFFFFDFFFFF9CFFFF9DFFFF9EFFFF
|
||||
# End of 5.6 tests
|
||||
#
|
||||
#
|
||||
# Start of 10.0 tests
|
||||
#
|
||||
SET NAMES utf8, character_set_connection=utf16le;
|
||||
#
|
||||
# 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 utf16le 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;
|
||||
#
|
||||
# Start of 10.0 tests
|
||||
#
|
||||
#
|
||||
# Start of 10.1 tests
|
||||
#
|
||||
#
|
||||
|
@ -2237,6 +2237,29 @@ EXECUTE stmt USING @arg00;
|
||||
CONCAT(_utf32'a' COLLATE utf32_unicode_ci, ?)
|
||||
aÿ
|
||||
DEALLOCATE PREPARE stmt;
|
||||
SET NAMEs utf8, character_set_connection=utf32;
|
||||
#
|
||||
# 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 utf32 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
|
||||
#
|
||||
|
@ -10278,6 +10278,29 @@ SELECT * FROM v1;
|
||||
c
|
||||
ß
|
||||
DROP VIEW v1;
|
||||
SET NAMES utf8;
|
||||
#
|
||||
# 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 utf8 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
|
||||
#
|
||||
|
@ -3469,6 +3469,29 @@ t1 CREATE TABLE `t1` (
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLE t1;
|
||||
SET NAMES default;
|
||||
SET NAMES utf8mb4;
|
||||
#
|
||||
# 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 utf8mb4 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
|
||||
#
|
||||
|
@ -2462,5 +2462,55 @@ id sid id
|
||||
1 NULL NULL
|
||||
2 NULL NULL
|
||||
drop table t1, t2;
|
||||
#
|
||||
# MDEV-16726: SELECT with STRAGHT JOIN containing NESTED RIGHT JOIN
|
||||
# converted to INNER JOIN with first constant inner table
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
pk int PRIMARY KEY, i1 int, v1 varchar(1), v2 varchar(1), KEY v1 (v1,i1)
|
||||
) engine=MyISAM;
|
||||
INSERT INTO t1 VALUES
|
||||
(8,3,'c','c'),(9,4,'z','z'),(10,3,'i','i'),(11,186,'x','x'),
|
||||
(14,226,'m','m'),(15,133,'p','p');
|
||||
CREATE TABLE t2 (
|
||||
pk int PRIMARY KEY, i1 int, v1 varchar(1), v2 varchar(1)
|
||||
) engine=MyISAM;
|
||||
INSERT INTO t2 VALUES (10,6,'p','p');
|
||||
EXPLAIN EXTENDED
|
||||
SELECT STRAIGHT_JOIN t2.v2
|
||||
FROM
|
||||
(t1 as tb1 LEFT JOIN t1 AS tb2 ON tb2.v1 = tb1.v2)
|
||||
RIGHT JOIN
|
||||
(t2,t1)
|
||||
ON t1.pk = t2.pk AND t2.v2 = tb1.v1
|
||||
WHERE tb1.pk = 40
|
||||
ORDER BY tb1.i1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||
Warnings:
|
||||
Note 1003 select straight_join 'p' AS `v2` from `test`.`t1` join `test`.`t1` `tb1` left join `test`.`t1` `tb2` on(multiple equal(`test`.`tb2`.`v1`, NULL)) where 0 order by NULL
|
||||
EXPLAIN EXTENDED
|
||||
SELECT STRAIGHT_JOIN t2.v2
|
||||
FROM
|
||||
(t2,t1)
|
||||
LEFT JOIN
|
||||
(t1 as tb1 LEFT JOIN t1 AS tb2 ON tb2.v1 = tb1.v2)
|
||||
ON t1.pk = t2.pk AND t2.v2 = tb1.v1
|
||||
WHERE tb1.pk = 40
|
||||
ORDER BY tb1.i1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||
Warnings:
|
||||
Note 1003 select straight_join 'p' AS `v2` from `test`.`t1` join `test`.`t1` `tb1` left join `test`.`t1` `tb2` on(multiple equal(`test`.`tb2`.`v1`, NULL)) where 0 order by NULL
|
||||
SELECT STRAIGHT_JOIN DISTINCT t2.v2
|
||||
FROM
|
||||
(t1 as tb1 LEFT JOIN t1 AS tb2 ON tb2.v1 = tb1.v2)
|
||||
RIGHT JOIN
|
||||
(t2,t1)
|
||||
ON t1.pk = t2.pk AND t2.v2 = tb1.v1
|
||||
WHERE tb1.pk = 40
|
||||
ORDER BY tb1.i1;
|
||||
v2
|
||||
DROP TABLE t1,t2;
|
||||
# end of 5.5 tests
|
||||
SET optimizer_switch=@save_optimizer_switch;
|
||||
|
@ -2473,6 +2473,56 @@ id sid id
|
||||
1 NULL NULL
|
||||
2 NULL NULL
|
||||
drop table t1, t2;
|
||||
#
|
||||
# MDEV-16726: SELECT with STRAGHT JOIN containing NESTED RIGHT JOIN
|
||||
# converted to INNER JOIN with first constant inner table
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
pk int PRIMARY KEY, i1 int, v1 varchar(1), v2 varchar(1), KEY v1 (v1,i1)
|
||||
) engine=MyISAM;
|
||||
INSERT INTO t1 VALUES
|
||||
(8,3,'c','c'),(9,4,'z','z'),(10,3,'i','i'),(11,186,'x','x'),
|
||||
(14,226,'m','m'),(15,133,'p','p');
|
||||
CREATE TABLE t2 (
|
||||
pk int PRIMARY KEY, i1 int, v1 varchar(1), v2 varchar(1)
|
||||
) engine=MyISAM;
|
||||
INSERT INTO t2 VALUES (10,6,'p','p');
|
||||
EXPLAIN EXTENDED
|
||||
SELECT STRAIGHT_JOIN t2.v2
|
||||
FROM
|
||||
(t1 as tb1 LEFT JOIN t1 AS tb2 ON tb2.v1 = tb1.v2)
|
||||
RIGHT JOIN
|
||||
(t2,t1)
|
||||
ON t1.pk = t2.pk AND t2.v2 = tb1.v1
|
||||
WHERE tb1.pk = 40
|
||||
ORDER BY tb1.i1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||
Warnings:
|
||||
Note 1003 select straight_join 'p' AS `v2` from `test`.`t1` join `test`.`t1` `tb1` left join `test`.`t1` `tb2` on(multiple equal(`test`.`tb2`.`v1`, NULL)) where 0 order by NULL
|
||||
EXPLAIN EXTENDED
|
||||
SELECT STRAIGHT_JOIN t2.v2
|
||||
FROM
|
||||
(t2,t1)
|
||||
LEFT JOIN
|
||||
(t1 as tb1 LEFT JOIN t1 AS tb2 ON tb2.v1 = tb1.v2)
|
||||
ON t1.pk = t2.pk AND t2.v2 = tb1.v1
|
||||
WHERE tb1.pk = 40
|
||||
ORDER BY tb1.i1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||
Warnings:
|
||||
Note 1003 select straight_join 'p' AS `v2` from `test`.`t1` join `test`.`t1` `tb1` left join `test`.`t1` `tb2` on(multiple equal(`test`.`tb2`.`v1`, NULL)) where 0 order by NULL
|
||||
SELECT STRAIGHT_JOIN DISTINCT t2.v2
|
||||
FROM
|
||||
(t1 as tb1 LEFT JOIN t1 AS tb2 ON tb2.v1 = tb1.v2)
|
||||
RIGHT JOIN
|
||||
(t2,t1)
|
||||
ON t1.pk = t2.pk AND t2.v2 = tb1.v1
|
||||
WHERE tb1.pk = 40
|
||||
ORDER BY tb1.i1;
|
||||
v2
|
||||
DROP TABLE t1,t2;
|
||||
# end of 5.5 tests
|
||||
SET optimizer_switch=@save_optimizer_switch;
|
||||
set join_cache_level=default;
|
||||
|
@ -133,3 +133,7 @@ select * from t2;
|
||||
a
|
||||
1
|
||||
drop table tmp,t2;
|
||||
create table t1 (a int) engine=memory;
|
||||
rename table t1 to non_existent.t2;
|
||||
ERROR 42000: Unknown database 'non_existent'
|
||||
drop table t1;
|
||||
|
@ -442,7 +442,7 @@ SELECT i2 FROM t2 RIGHT JOIN t3 ON (c3 = c2) WHERE pk3 = i1
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 system NULL NULL NULL NULL 1
|
||||
2 DEPENDENT SUBQUERY t3 const PRIMARY PRIMARY 4 const 1
|
||||
2 DEPENDENT SUBQUERY t2 index NULL i2 11 NULL 2 Using where; Using index
|
||||
2 DEPENDENT SUBQUERY t2 index i2 i2 11 NULL 2 Using where; Using index
|
||||
DROP TABLE t1,t2,t3;
|
||||
#
|
||||
# MDEV-7599: in-to-exists chosen after min/max optimization
|
||||
|
7
mysql-test/suite/parts/r/truncate_locked.result
Normal file
7
mysql-test/suite/parts/r/truncate_locked.result
Normal file
@ -0,0 +1,7 @@
|
||||
create table t1 (i int) engine=myisam partition by hash(i) partitions 2 ;
|
||||
lock table t1 write;
|
||||
truncate table t1;
|
||||
desc t1;
|
||||
Field Type Null Key Default Extra
|
||||
i int(11) YES NULL
|
||||
drop table t1;
|
10
mysql-test/suite/parts/t/truncate_locked.test
Normal file
10
mysql-test/suite/parts/t/truncate_locked.test
Normal file
@ -0,0 +1,10 @@
|
||||
#
|
||||
# MDEV-15551 Server hangs or assertion `strcmp(share->unique_file_name,filename) || share->last_version' fails in test_if_reopen or unexpected ER_LOCK_DEADLOCK
|
||||
#
|
||||
--source include/have_partition.inc
|
||||
create table t1 (i int) engine=myisam partition by hash(i) partitions 2 ;
|
||||
lock table t1 write;
|
||||
truncate table t1;
|
||||
desc t1;
|
||||
drop table t1;
|
||||
|
@ -1,8 +1,6 @@
|
||||
create table t1 (a int) engine=innodb;
|
||||
start transaction;
|
||||
insert t1 values (1);
|
||||
state from show engine innodb status
|
||||
state from show engine innodb status, must be empty
|
||||
|
||||
state from show processlist
|
||||
|
||||
drop table t1;
|
||||
|
@ -8,10 +8,12 @@ start transaction;
|
||||
insert t1 values (1);
|
||||
let id=`select connection_id()`;
|
||||
connect con2,localhost,root;
|
||||
let s=query_get_value(show engine innodb status,Status,1);
|
||||
let $wait_condition=select state='' from information_schema.processlist where id = $id;
|
||||
--source include/wait_condition.inc
|
||||
replace_regex /\"/-/; #"
|
||||
let s=`show engine innodb status`;
|
||||
disable_query_log;
|
||||
eval select regexp_replace("$s", '(?s)^.*MySQL thread id $id,.*root([^\n]*)\n.*', '\\\\1') as `state from show engine innodb status`;
|
||||
eval select state as `state from show processlist` from information_schema.processlist where id = $id;
|
||||
eval select regexp_replace("$s", '(?s)^.*MySQL thread id $id,.*root([^\n]*)\n.*', '\\\\1') as `state from show engine innodb status, must be empty`;
|
||||
enable_query_log;
|
||||
disconnect con2;
|
||||
connection default;
|
||||
|
@ -106,3 +106,12 @@ use test;
|
||||
EOF
|
||||
--exec $MYSQLD_BOOTSTRAP_CMD --ignore-db-dirs='some_dir' --ignore-db-dirs='some_dir' < $MYSQLTEST_VARDIR/tmp/bootstrap_9969.sql >> $MYSQLTEST_VARDIR/tmp/bootstrap.log 2>&1
|
||||
--remove_file $MYSQLTEST_VARDIR/tmp/bootstrap_9969.sql
|
||||
|
||||
#
|
||||
# MDEV-13397 MariaDB upgrade fail when using default_time_zone
|
||||
#
|
||||
--write_file $MYSQLTEST_VARDIR/tmp/bootstrap_9969.sql
|
||||
use test;
|
||||
EOF
|
||||
--exec $MYSQLD_BOOTSTRAP_CMD --default-time-zone=Europe/Moscow < $MYSQLTEST_VARDIR/tmp/bootstrap_9969.sql >> $MYSQLTEST_VARDIR/tmp/bootstrap.log 2>&1
|
||||
--remove_file $MYSQLTEST_VARDIR/tmp/bootstrap_9969.sql
|
||||
|
@ -24,6 +24,9 @@ SET NAMES binary;
|
||||
--echo #
|
||||
SELECT _binary 0x7E, _binary X'7E', _binary B'01111110';
|
||||
|
||||
SET NAMES utf8, character_set_connection=binary;
|
||||
--source include/ctype_mdev13118.inc
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.0 tests
|
||||
--echo #
|
||||
|
@ -537,6 +537,8 @@ DROP TABLE t1;
|
||||
--error ER_INVALID_CHARACTER_STRING
|
||||
SELECT _eucjpms 0x8EA0;
|
||||
|
||||
SET NAMES eucjpms;
|
||||
--source include/ctype_mdev13118.inc
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.0 tests
|
||||
|
@ -197,3 +197,14 @@ set collation_connection=euckr_bin;
|
||||
--echo # End of 5.6 tests
|
||||
--echo #
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # Start of 10.0 tests
|
||||
--echo #
|
||||
|
||||
SET NAMES utf8, character_set_connection=euckr;
|
||||
--source include/ctype_mdev13118.inc
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.0 tests
|
||||
--echo #
|
||||
|
@ -199,6 +199,9 @@ let $ctype_unescape_combinations=selected;
|
||||
SET NAMES gbk;
|
||||
--source include/ctype_E05C.inc
|
||||
|
||||
SET NAMES utf8, character_set_connection=gbk;
|
||||
--source include/ctype_mdev13118.inc
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-9886 Illegal mix of collations with a view comparing a field to a binary constant
|
||||
--echo #
|
||||
|
@ -260,6 +260,9 @@ SELECT * FROM v1;
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1;
|
||||
|
||||
SET NAMES latin1;
|
||||
--source include/ctype_mdev13118.inc
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.0 tests
|
||||
|
@ -988,6 +988,10 @@ DROP TABLE t1;
|
||||
SET optimizer_switch=@save_optimizer_switch;
|
||||
|
||||
|
||||
SET NAMES utf8, character_set_connection=ucs2;
|
||||
--source include/ctype_mdev13118.inc
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.0 tests
|
||||
--echo #
|
||||
|
@ -1368,6 +1368,10 @@ DROP TABLE t1;
|
||||
SELECT _ujis 0x8EA0;
|
||||
|
||||
|
||||
SET NAMES ujis;
|
||||
--source include/ctype_mdev13118.inc
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.0 tests
|
||||
--echo #
|
||||
|
@ -866,6 +866,11 @@ SET @arg00=_binary 0x00FF;
|
||||
EXECUTE stmt USING @arg00;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
|
||||
SET NAMES utf8, character_set_connection=utf16;
|
||||
--source include/ctype_mdev13118.inc
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.0 tests
|
||||
--echo #
|
||||
|
@ -745,6 +745,19 @@ SET NAMES utf8, collation_connection=utf16le_bin;
|
||||
--echo # End of 5.6 tests
|
||||
--echo #
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # Start of 10.0 tests
|
||||
--echo #
|
||||
|
||||
|
||||
SET NAMES utf8, character_set_connection=utf16le;
|
||||
--source include/ctype_mdev13118.inc
|
||||
|
||||
--echo #
|
||||
--echo # Start of 10.0 tests
|
||||
--echo #
|
||||
|
||||
--echo #
|
||||
--echo # Start of 10.1 tests
|
||||
--echo #
|
||||
|
@ -979,6 +979,14 @@ SET @arg00=_binary 0x00FF;
|
||||
EXECUTE stmt USING @arg00;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
|
||||
#
|
||||
# MDEV-13118 Wrong results with LOWER and UPPER and subquery
|
||||
#
|
||||
SET NAMEs utf8, character_set_connection=utf32;
|
||||
--source include/ctype_mdev13118.inc
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.0 tests
|
||||
--echo #
|
||||
|
@ -1881,6 +1881,13 @@ SELECT * FROM v1;
|
||||
DROP VIEW v1;
|
||||
|
||||
|
||||
#
|
||||
# MDEV-13118 Wrong results with LOWER and UPPER and subquery
|
||||
#
|
||||
SET NAMES utf8;
|
||||
--source include/ctype_mdev13118.inc
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.0 tests
|
||||
--echo #
|
||||
|
@ -1950,6 +1950,14 @@ DROP TABLE t1;
|
||||
|
||||
SET NAMES default;
|
||||
|
||||
|
||||
#
|
||||
# MDEV-13118 Wrong results with LOWER and UPPER and subquery
|
||||
#
|
||||
SET NAMES utf8mb4;
|
||||
--source include/ctype_mdev13118.inc
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.0 tests
|
||||
--echo #
|
||||
|
@ -1992,6 +1992,54 @@ select * from t1 t
|
||||
on t.id=r.id ;
|
||||
drop table t1, t2;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-16726: SELECT with STRAGHT JOIN containing NESTED RIGHT JOIN
|
||||
--echo # converted to INNER JOIN with first constant inner table
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (
|
||||
pk int PRIMARY KEY, i1 int, v1 varchar(1), v2 varchar(1), KEY v1 (v1,i1)
|
||||
) engine=MyISAM;
|
||||
INSERT INTO t1 VALUES
|
||||
(8,3,'c','c'),(9,4,'z','z'),(10,3,'i','i'),(11,186,'x','x'),
|
||||
(14,226,'m','m'),(15,133,'p','p');
|
||||
|
||||
CREATE TABLE t2 (
|
||||
pk int PRIMARY KEY, i1 int, v1 varchar(1), v2 varchar(1)
|
||||
) engine=MyISAM;
|
||||
INSERT INTO t2 VALUES (10,6,'p','p');
|
||||
|
||||
EXPLAIN EXTENDED
|
||||
SELECT STRAIGHT_JOIN t2.v2
|
||||
FROM
|
||||
(t1 as tb1 LEFT JOIN t1 AS tb2 ON tb2.v1 = tb1.v2)
|
||||
RIGHT JOIN
|
||||
(t2,t1)
|
||||
ON t1.pk = t2.pk AND t2.v2 = tb1.v1
|
||||
WHERE tb1.pk = 40
|
||||
ORDER BY tb1.i1;
|
||||
|
||||
EXPLAIN EXTENDED
|
||||
SELECT STRAIGHT_JOIN t2.v2
|
||||
FROM
|
||||
(t2,t1)
|
||||
LEFT JOIN
|
||||
(t1 as tb1 LEFT JOIN t1 AS tb2 ON tb2.v1 = tb1.v2)
|
||||
ON t1.pk = t2.pk AND t2.v2 = tb1.v1
|
||||
WHERE tb1.pk = 40
|
||||
ORDER BY tb1.i1;
|
||||
|
||||
SELECT STRAIGHT_JOIN DISTINCT t2.v2
|
||||
FROM
|
||||
(t1 as tb1 LEFT JOIN t1 AS tb2 ON tb2.v1 = tb1.v2)
|
||||
RIGHT JOIN
|
||||
(t2,t1)
|
||||
ON t1.pk = t2.pk AND t2.v2 = tb1.v1
|
||||
WHERE tb1.pk = 40
|
||||
ORDER BY tb1.i1;
|
||||
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
--echo # end of 5.5 tests
|
||||
|
||||
SET optimizer_switch=@save_optimizer_switch;
|
||||
|
@ -141,3 +141,10 @@ select * from tmp;
|
||||
select * from t2;
|
||||
drop table tmp,t2;
|
||||
|
||||
#
|
||||
# MDEV-11741 handler::ha_reset(): Assertion `bitmap_is_set_all(&table->s->all_set)' failed or server crash in mi_reset or buffer overrun or unexpected ER_CANT_REMOVE_ALL_FIELDS
|
||||
#
|
||||
create table t1 (a int) engine=memory;
|
||||
--error ER_BAD_DB_ERROR
|
||||
rename table t1 to non_existent.t2;
|
||||
drop table t1;
|
||||
|
@ -39,7 +39,10 @@ int my_rename(const char *from, const char *to, myf MyFlags)
|
||||
if (link(from, to) || unlink(from))
|
||||
{
|
||||
#endif
|
||||
my_errno=errno;
|
||||
if (errno == ENOENT && !access(from, F_OK))
|
||||
my_errno= ENOTDIR;
|
||||
else
|
||||
my_errno= errno;
|
||||
error = -1;
|
||||
if (MyFlags & (MY_FAE+MY_WME))
|
||||
my_error(EE_LINK, MYF(ME_BELL+ME_WAITTANG),from,to,my_errno);
|
||||
|
@ -91,6 +91,7 @@ SET(ADD_GIS_SP_EOL ";")
|
||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/maria_add_gis_sp.sql.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/maria_add_gis_sp_bootstrap.sql ESCAPE_QUOTES @ONLY)
|
||||
|
||||
IF (NOT WITHOUT_SERVER)
|
||||
INSTALL(FILES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/mysql_system_tables.sql
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/mysql_system_tables_data.sql
|
||||
@ -103,6 +104,7 @@ INSTALL(FILES
|
||||
${FIX_PRIVILEGES_SQL}
|
||||
DESTINATION ${INSTALL_MYSQLSHAREDIR} COMPONENT Server
|
||||
)
|
||||
ENDIF()
|
||||
|
||||
# TCMalloc hacks
|
||||
IF(MALLOC_LIB)
|
||||
|
@ -329,7 +329,7 @@ else
|
||||
$opt->{basedir} = '@prefix@';
|
||||
$bindir = '@bindir@';
|
||||
$extra_bindir = $bindir;
|
||||
$mysqld = '@libexecdir@/mysqld';
|
||||
$mysqld = '@sbindir@/mysqld';
|
||||
$srcpkgdatadir = '@pkgdatadir@';
|
||||
$buildpkgdatadir = '@pkgdatadir@';
|
||||
$scriptdir = '@scriptdir@';
|
||||
|
@ -343,7 +343,7 @@ else
|
||||
basedir="@prefix@"
|
||||
bindir="@bindir@"
|
||||
resolveip="$bindir/resolveip"
|
||||
mysqld="@libexecdir@/mysqld"
|
||||
mysqld="@sbindir@/mysqld"
|
||||
srcpkgdatadir="@pkgdatadir@"
|
||||
buildpkgdatadir="@pkgdatadir@"
|
||||
fi
|
||||
|
@ -1,5 +1,5 @@
|
||||
-- Copyright (C) 2003, 2013 Oracle and/or its affiliates.
|
||||
-- Copyright (C) 2010, 2015 MariaDB Corporation Ab.
|
||||
-- Copyright (C) 2010, 2018 MariaDB Corporation
|
||||
--
|
||||
-- This program is free software; you can redistribute it and/or modify
|
||||
-- it under the terms of the GNU General Public License as published by
|
||||
@ -28,15 +28,24 @@ set sql_mode='';
|
||||
set storage_engine=MyISAM;
|
||||
set enforce_storage_engine=NULL;
|
||||
|
||||
ALTER TABLE user add File_priv enum('N','Y') COLLATE utf8_general_ci NOT NULL;
|
||||
ALTER TABLE user add File_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL;
|
||||
|
||||
# Detect whether or not we had the Grant_priv column
|
||||
SET @hadGrantPriv:=0;
|
||||
SELECT @hadGrantPriv:=1 FROM user WHERE Grant_priv LIKE '%';
|
||||
|
||||
ALTER TABLE user add Grant_priv enum('N','Y') COLLATE utf8_general_ci NOT NULL,add References_priv enum('N','Y') COLLATE utf8_general_ci NOT NULL,add Index_priv enum('N','Y') COLLATE utf8_general_ci NOT NULL,add Alter_priv enum('N','Y') COLLATE utf8_general_ci NOT NULL;
|
||||
ALTER TABLE host add Grant_priv enum('N','Y') NOT NULL,add References_priv enum('N','Y') COLLATE utf8_general_ci NOT NULL,add Index_priv enum('N','Y') COLLATE utf8_general_ci NOT NULL,add Alter_priv enum('N','Y') COLLATE utf8_general_ci NOT NULL;
|
||||
ALTER TABLE db add Grant_priv enum('N','Y') COLLATE utf8_general_ci NOT NULL,add References_priv enum('N','Y') COLLATE utf8_general_ci NOT NULL,add Index_priv enum('N','Y') COLLATE utf8_general_ci NOT NULL,add Alter_priv enum('N','Y') COLLATE utf8_general_ci NOT NULL;
|
||||
ALTER TABLE user add Grant_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
|
||||
add References_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
|
||||
add Index_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
|
||||
add Alter_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL;
|
||||
ALTER TABLE host add Grant_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
|
||||
add References_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
|
||||
add Index_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
|
||||
add Alter_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL;
|
||||
ALTER TABLE db add Grant_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
|
||||
add References_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
|
||||
add Index_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
|
||||
add Alter_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL;
|
||||
|
||||
# Fix privileges for old tables
|
||||
UPDATE user SET Grant_priv=File_priv,References_priv=Create_priv,Index_priv=Create_priv,Alter_priv=Create_priv WHERE @hadGrantPriv = 0;
|
||||
@ -48,11 +57,11 @@ UPDATE host SET References_priv=Create_priv,Index_priv=Create_priv,Alter_priv=Cr
|
||||
# Adding columns needed by GRANT .. REQUIRE (openssl)
|
||||
|
||||
ALTER TABLE user
|
||||
ADD ssl_type enum('','ANY','X509', 'SPECIFIED') COLLATE utf8_general_ci NOT NULL,
|
||||
ADD ssl_type enum('','ANY','X509', 'SPECIFIED') DEFAULT '' NOT NULL,
|
||||
ADD ssl_cipher BLOB NOT NULL,
|
||||
ADD x509_issuer BLOB NOT NULL,
|
||||
ADD x509_subject BLOB NOT NULL;
|
||||
ALTER TABLE user MODIFY ssl_type enum('','ANY','X509', 'SPECIFIED') NOT NULL;
|
||||
ALTER TABLE user MODIFY ssl_type enum('','ANY','X509', 'SPECIFIED') DEFAULT '' NOT NULL;
|
||||
|
||||
#
|
||||
# tables_priv
|
||||
@ -63,9 +72,9 @@ ALTER TABLE tables_priv
|
||||
ALTER TABLE tables_priv
|
||||
MODIFY Host char(60) NOT NULL default '',
|
||||
MODIFY Db char(64) NOT NULL default '',
|
||||
MODIFY User char(80) NOT NULL default '',
|
||||
MODIFY User char(80) binary NOT NULL default '',
|
||||
MODIFY Table_name char(64) NOT NULL default '',
|
||||
MODIFY Grantor char(141) NOT NULL default '',
|
||||
MODIFY Grantor char(141) COLLATE utf8_bin NOT NULL default '',
|
||||
ENGINE=MyISAM,
|
||||
CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;
|
||||
|
||||
@ -91,7 +100,7 @@ ALTER TABLE columns_priv
|
||||
ALTER TABLE columns_priv
|
||||
MODIFY Host char(60) NOT NULL default '',
|
||||
MODIFY Db char(64) NOT NULL default '',
|
||||
MODIFY User char(80) NOT NULL default '',
|
||||
MODIFY User char(80) binary NOT NULL default '',
|
||||
MODIFY Table_name char(64) NOT NULL default '',
|
||||
MODIFY Column_name char(64) NOT NULL default '',
|
||||
ENGINE=MyISAM,
|
||||
@ -162,7 +171,7 @@ alter table func comment='User defined functions';
|
||||
# and reset all char columns to correct width
|
||||
ALTER TABLE user
|
||||
MODIFY Host char(60) NOT NULL default '',
|
||||
MODIFY User char(80) NOT NULL default '',
|
||||
MODIFY User char(80) binary NOT NULL default '',
|
||||
ENGINE=MyISAM, CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;
|
||||
ALTER TABLE user
|
||||
MODIFY Password char(41) character set latin1 collate latin1_bin NOT NULL default '',
|
||||
@ -192,7 +201,7 @@ ALTER TABLE user
|
||||
ALTER TABLE db
|
||||
MODIFY Host char(60) NOT NULL default '',
|
||||
MODIFY Db char(64) NOT NULL default '',
|
||||
MODIFY User char(80) NOT NULL default '',
|
||||
MODIFY User char(80) binary NOT NULL default '',
|
||||
ENGINE=MyISAM, CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;
|
||||
ALTER TABLE db
|
||||
MODIFY Select_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
|
||||
@ -454,7 +463,7 @@ ALTER TABLE proc MODIFY db
|
||||
MODIFY definer
|
||||
char(141) collate utf8_bin DEFAULT '' NOT NULL,
|
||||
MODIFY comment
|
||||
char(64) collate utf8_bin DEFAULT '' NOT NULL;
|
||||
text collate utf8_bin NOT NULL;
|
||||
|
||||
ALTER TABLE proc ADD character_set_client
|
||||
char(32) collate utf8_bin DEFAULT NULL
|
||||
@ -518,19 +527,18 @@ ALTER TABLE proc MODIFY comment
|
||||
SET @hadEventPriv := 0;
|
||||
SELECT @hadEventPriv :=1 FROM user WHERE Event_priv LIKE '%';
|
||||
|
||||
ALTER TABLE user add Event_priv enum('N','Y') character set utf8 DEFAULT 'N' NOT NULL AFTER Create_user_priv;
|
||||
ALTER TABLE user ADD Event_priv enum('N','Y') character set utf8 DEFAULT 'N' NOT NULL AFTER Create_user_priv;
|
||||
ALTER TABLE user MODIFY Event_priv enum('N','Y') character set utf8 DEFAULT 'N' NOT NULL AFTER Create_user_priv;
|
||||
|
||||
UPDATE user SET Event_priv=Super_priv WHERE @hadEventPriv = 0;
|
||||
|
||||
ALTER TABLE db add Event_priv enum('N','Y') character set utf8 DEFAULT 'N' NOT NULL;
|
||||
ALTER TABLE db ADD Event_priv enum('N','Y') character set utf8 DEFAULT 'N' NOT NULL;
|
||||
ALTER TABLE db MODIFY Event_priv enum('N','Y') character set utf8 DEFAULT 'N' NOT NULL;
|
||||
|
||||
#
|
||||
# EVENT table
|
||||
#
|
||||
ALTER TABLE event DROP PRIMARY KEY;
|
||||
ALTER TABLE event ADD PRIMARY KEY(db, name);
|
||||
ALTER TABLE event DROP PRIMARY KEY, ADD PRIMARY KEY(db, name);
|
||||
# Add sql_mode column just in case.
|
||||
ALTER TABLE event ADD sql_mode set ('IGNORE_BAD_TABLE_OPTIONS') AFTER on_completion;
|
||||
# Update list of sql_mode values.
|
||||
@ -570,8 +578,8 @@ ALTER TABLE event MODIFY sql_mode
|
||||
) DEFAULT '' NOT NULL AFTER on_completion;
|
||||
ALTER TABLE event MODIFY name char(64) CHARACTER SET utf8 NOT NULL default '';
|
||||
|
||||
ALTER TABLE event MODIFY COLUMN originator INT UNSIGNED NOT NULL;
|
||||
ALTER TABLE event ADD COLUMN originator INT UNSIGNED NOT NULL AFTER comment;
|
||||
ALTER TABLE event MODIFY COLUMN originator INT UNSIGNED NOT NULL;
|
||||
|
||||
ALTER TABLE event MODIFY COLUMN status ENUM('ENABLED','DISABLED','SLAVESIDE_DISABLED') NOT NULL default 'ENABLED';
|
||||
|
||||
@ -633,12 +641,14 @@ ALTER TABLE user MODIFY Create_tablespace_priv enum('N','Y') COLLATE utf8_genera
|
||||
|
||||
UPDATE user SET Create_tablespace_priv = Super_priv WHERE @hadCreateTablespacePriv = 0;
|
||||
|
||||
ALTER TABLE user ADD plugin char(64) DEFAULT '', ADD authentication_string TEXT;
|
||||
ALTER TABLE user ADD plugin char(64) CHARACTER SET latin1 DEFAULT '' NOT NULL,
|
||||
ADD authentication_string TEXT NOT NULL;
|
||||
ALTER TABLE user MODIFY plugin char(64) CHARACTER SET latin1 DEFAULT '' NOT NULL,
|
||||
MODIFY authentication_string TEXT NOT NULL;
|
||||
ALTER TABLE user ADD password_expired ENUM('N', 'Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL;
|
||||
ALTER TABLE user ADD is_role enum('N', 'Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL;
|
||||
ALTER TABLE user ADD default_role char(80) binary DEFAULT '' NOT NULL;
|
||||
ALTER TABLE user ADD max_statement_time decimal(12,6) DEFAULT 0 NOT NULL;
|
||||
ALTER TABLE user MODIFY plugin char(64) CHARACTER SET latin1 DEFAULT '' NOT NULL, MODIFY authentication_string TEXT NOT NULL;
|
||||
-- Somewhere above, we ran ALTER TABLE user .... CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin.
|
||||
-- we want password_expired column to have collation utf8_general_ci.
|
||||
ALTER TABLE user MODIFY password_expired ENUM('N', 'Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL;
|
||||
|
@ -30,7 +30,7 @@ $opt_example = 0;
|
||||
$opt_help = 0;
|
||||
$opt_log = undef();
|
||||
$opt_mysqladmin = "@bindir@/mysqladmin";
|
||||
$opt_mysqld = "@libexecdir@/mysqld";
|
||||
$opt_mysqld = "@sbindir@/mysqld";
|
||||
$opt_no_log = 0;
|
||||
$opt_password = undef();
|
||||
$opt_tcp_ip = 0;
|
||||
|
@ -1506,32 +1506,18 @@ String *Item_str_conv::val_str(String *str)
|
||||
{
|
||||
DBUG_ASSERT(fixed == 1);
|
||||
String *res;
|
||||
if (!(res=args[0]->val_str(str)))
|
||||
{
|
||||
null_value=1; /* purecov: inspected */
|
||||
return 0; /* purecov: inspected */
|
||||
}
|
||||
null_value=0;
|
||||
if (multiply == 1)
|
||||
{
|
||||
uint len;
|
||||
res= copy_if_not_alloced(&tmp_value, res, res->length());
|
||||
len= converter(collation.collation, (char*) res->ptr(), res->length(),
|
||||
(char*) res->ptr(), res->length());
|
||||
DBUG_ASSERT(len <= res->length());
|
||||
res->length(len);
|
||||
}
|
||||
else
|
||||
{
|
||||
uint len= res->length() * multiply;
|
||||
tmp_value.alloc(len);
|
||||
tmp_value.set_charset(collation.collation);
|
||||
len= converter(collation.collation, (char*) res->ptr(), res->length(),
|
||||
(char*) tmp_value.ptr(), len);
|
||||
tmp_value.length(len);
|
||||
res= &tmp_value;
|
||||
}
|
||||
return res;
|
||||
uint alloced_length, len;
|
||||
|
||||
if ((null_value= (!(res= args[0]->val_str(&tmp_value)) ||
|
||||
str->alloc((alloced_length= res->length() * multiply)))))
|
||||
return 0;
|
||||
|
||||
len= converter(collation.collation, (char*) res->ptr(), res->length(),
|
||||
(char*) str->ptr(), alloced_length);
|
||||
DBUG_ASSERT(len <= alloced_length);
|
||||
str->set_charset(collation.collation);
|
||||
str->length(len);
|
||||
return str;
|
||||
}
|
||||
|
||||
|
||||
@ -1723,7 +1709,7 @@ String *Item_func_substr_index::val_str(String *str)
|
||||
DBUG_ASSERT(fixed == 1);
|
||||
char buff[MAX_FIELD_WIDTH];
|
||||
String tmp(buff,sizeof(buff),system_charset_info);
|
||||
String *res= args[0]->val_str(str);
|
||||
String *res= args[0]->val_str(&tmp_value);
|
||||
String *delimiter= args[1]->val_str(&tmp);
|
||||
int32 count= (int32) args[2]->val_int();
|
||||
uint offset;
|
||||
@ -1772,20 +1758,31 @@ String *Item_func_substr_index::val_str(String *str)
|
||||
if (pass == 0) /* count<0 */
|
||||
{
|
||||
c+=n+1;
|
||||
if (c<=0) return res; /* not found, return original string */
|
||||
if (c<=0)
|
||||
{
|
||||
str->copy(res->ptr(), res->length(), collation.collation);
|
||||
return str; // not found, return the original string
|
||||
}
|
||||
ptr=res->ptr();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (c) return res; /* Not found, return original string */
|
||||
if (c)
|
||||
{
|
||||
str->copy(res->ptr(), res->length(), collation.collation);
|
||||
return str; // not found, return the original string
|
||||
}
|
||||
if (count>0) /* return left part */
|
||||
{
|
||||
tmp_value.set(*res,0,(ulong) (ptr-res->ptr()));
|
||||
str->copy(res->ptr(), (uint32) (ptr-res->ptr()), collation.collation);
|
||||
return str;
|
||||
}
|
||||
else /* return right part */
|
||||
{
|
||||
ptr+= delimiter_length;
|
||||
tmp_value.set(*res,(ulong) (ptr-res->ptr()), (ulong) (strend-ptr));
|
||||
ptr+= delimiter_length;
|
||||
str->copy(res->ptr() + (ptr-res->ptr()), (uint32) (strend - ptr),
|
||||
collation.collation);
|
||||
return str;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1797,13 +1794,16 @@ String *Item_func_substr_index::val_str(String *str)
|
||||
{ // start counting from the beginning
|
||||
for (offset=0; ; offset+= delimiter_length)
|
||||
{
|
||||
if ((int) (offset= res->strstr(*delimiter, offset)) < 0)
|
||||
return res; // Didn't find, return org string
|
||||
if (!--count)
|
||||
{
|
||||
tmp_value.set(*res,0,offset);
|
||||
break;
|
||||
}
|
||||
if ((int) (offset= res->strstr(*delimiter, offset)) < 0)
|
||||
{
|
||||
str->copy(res->ptr(), res->length(), collation.collation);
|
||||
return str; // not found, return the original string
|
||||
}
|
||||
if (!--count)
|
||||
{
|
||||
str->copy(res->ptr(), offset, collation.collation);
|
||||
return str;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -1818,30 +1818,32 @@ String *Item_func_substr_index::val_str(String *str)
|
||||
address space less than where the found substring is located
|
||||
in res
|
||||
*/
|
||||
if ((int) (offset= res->strrstr(*delimiter, offset)) < 0)
|
||||
return res; // Didn't find, return org string
|
||||
if ((int) (offset= res->strrstr(*delimiter, offset)) < 0)
|
||||
{
|
||||
str->copy(res->ptr(), res->length(), collation.collation);
|
||||
return str; // not found, return the original string
|
||||
}
|
||||
/*
|
||||
At this point, we've searched for the substring
|
||||
the number of times as supplied by the index value
|
||||
*/
|
||||
if (!++count)
|
||||
{
|
||||
offset+= delimiter_length;
|
||||
tmp_value.set(*res,offset,res->length()- offset);
|
||||
break;
|
||||
}
|
||||
if (!++count)
|
||||
{
|
||||
offset+= delimiter_length;
|
||||
str->copy(res->ptr() + offset, res->length() - offset,
|
||||
collation.collation);
|
||||
return str;
|
||||
}
|
||||
}
|
||||
if (count)
|
||||
return res; // Didn't find, return org string
|
||||
{
|
||||
str->copy(res->ptr(), res->length(), collation.collation);
|
||||
return str; // not found, return the original string
|
||||
}
|
||||
}
|
||||
}
|
||||
/*
|
||||
We always mark tmp_value as const so that if val_str() is called again
|
||||
on this object, we don't disrupt the contents of tmp_value when it was
|
||||
derived from another String.
|
||||
*/
|
||||
tmp_value.mark_as_const();
|
||||
return (&tmp_value);
|
||||
DBUG_ASSERT(0);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -44,12 +44,14 @@ SET(files
|
||||
errmsg-utf8.txt
|
||||
)
|
||||
|
||||
FOREACH (dir ${dirs})
|
||||
INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${dir}
|
||||
DESTINATION ${INSTALL_MYSQLSHAREDIR} COMPONENT Server)
|
||||
ENDFOREACH()
|
||||
INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/charsets DESTINATION ${INSTALL_MYSQLSHAREDIR}
|
||||
COMPONENT Common PATTERN "languages.html" EXCLUDE
|
||||
)
|
||||
|
||||
INSTALL(FILES ${files} DESTINATION ${INSTALL_MYSQLSHAREDIR} COMPONENT Server)
|
||||
IF (NOT WITHOUT_SERVER)
|
||||
FOREACH (dir ${dirs})
|
||||
INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${dir}
|
||||
DESTINATION ${INSTALL_MYSQLSHAREDIR} COMPONENT Server)
|
||||
ENDFOREACH()
|
||||
INSTALL(FILES ${files} DESTINATION ${INSTALL_MYSQLSHAREDIR} COMPONENT Server)
|
||||
ENDIF()
|
||||
|
@ -3823,8 +3823,8 @@ make_join_statistics(JOIN *join, List<TABLE_LIST> &tables_list,
|
||||
int ref_changed;
|
||||
do
|
||||
{
|
||||
more_const_tables_found:
|
||||
ref_changed = 0;
|
||||
more_const_tables_found:
|
||||
found_ref=0;
|
||||
|
||||
/*
|
||||
@ -3991,7 +3991,7 @@ make_join_statistics(JOIN *join, List<TABLE_LIST> &tables_list,
|
||||
}
|
||||
}
|
||||
}
|
||||
} while (join->const_table_map & found_ref && ref_changed);
|
||||
} while (ref_changed);
|
||||
|
||||
join->sort_by_table= get_sort_by_table(join->order, join->group_list,
|
||||
join->select_lex->leaf_tables,
|
||||
|
@ -5272,6 +5272,8 @@ mysql_rename_table(handlerton *base, const char *old_db,
|
||||
delete file;
|
||||
if (error == HA_ERR_WRONG_COMMAND)
|
||||
my_error(ER_NOT_SUPPORTED_YET, MYF(0), "ALTER TABLE");
|
||||
else if (error == ENOTDIR)
|
||||
my_error(ER_BAD_DB_ERROR, MYF(0), new_db);
|
||||
else if (error)
|
||||
my_error(ER_ERROR_ON_RENAME, MYF(0), from, to, error);
|
||||
else if (!(flags & FN_IS_TMP))
|
||||
|
@ -349,7 +349,8 @@ bool Sql_cmd_truncate_table::lock_table(THD *thd, TABLE_LIST *table_ref,
|
||||
{
|
||||
DEBUG_SYNC(thd, "upgrade_lock_for_truncate");
|
||||
/* To remove the table from the cache we need an exclusive lock. */
|
||||
if (wait_while_table_is_used(thd, table, HA_EXTRA_PREPARE_FOR_DROP))
|
||||
if (wait_while_table_is_used(thd, table,
|
||||
*hton_can_recreate ? HA_EXTRA_PREPARE_FOR_DROP : HA_EXTRA_NOT_USED))
|
||||
DBUG_RETURN(TRUE);
|
||||
m_ticket_downgrade= table->mdl_ticket;
|
||||
/* Close if table is going to be recreated. */
|
||||
|
@ -1661,7 +1661,7 @@ my_tz_init(THD *org_thd, const char *default_tzname, my_bool bootstrap)
|
||||
{
|
||||
/* If we are in bootstrap mode we should not load time zone tables */
|
||||
return_val= time_zone_tables_exist= 0;
|
||||
goto end_with_setting_default_tz;
|
||||
goto end_with_cleanup;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -65,11 +65,6 @@
|
||||
extern int num_read, num_there; // Statistics
|
||||
static int num_write;
|
||||
|
||||
#if defined(UNIX)
|
||||
// Add dummy strerror (NGC)
|
||||
char *strerror(int num);
|
||||
#endif // UNIX
|
||||
|
||||
/***********************************************************************/
|
||||
/* Header containing block info for not split VEC tables. */
|
||||
/* Block and last values can be calculated from NumRec and Nrec. */
|
||||
|
@ -220,11 +220,11 @@ static size_t my_case_str_bin(CHARSET_INFO *cs __attribute__((unused)),
|
||||
|
||||
|
||||
static size_t my_case_bin(CHARSET_INFO *cs __attribute__((unused)),
|
||||
char *src __attribute__((unused)),
|
||||
size_t srclen,
|
||||
char *dst __attribute__((unused)),
|
||||
size_t dstlen __attribute__((unused)))
|
||||
const char *src, size_t srclen,
|
||||
char *dst, size_t dstlen)
|
||||
{
|
||||
DBUG_ASSERT(srclen <= dstlen);
|
||||
memcpy(dst, src, srclen);
|
||||
return srclen;
|
||||
}
|
||||
|
||||
|
@ -9999,8 +9999,8 @@ static MY_CHARSET_HANDLER my_charset_handler=
|
||||
my_mb_ctype_mb,
|
||||
my_caseup_str_mb,
|
||||
my_casedn_str_mb,
|
||||
my_caseup_mb_varlen, /* UPPER() can reduce length: Turkish DOTLESS i -> I */
|
||||
my_casedn_mb, /* LOWER() does not change length, use simple version*/
|
||||
my_caseup_mb, /* UPPER() can reduce length: Turkish DOTLESS i -> I */
|
||||
my_casedn_mb, /* LOWER() does not change length */
|
||||
my_snprintf_8bit,
|
||||
my_long10_to_str_8bit,
|
||||
my_longlong10_to_str_8bit,
|
||||
|
@ -71,81 +71,8 @@ get_case_info_for_ch(CHARSET_INFO *cs, uint page, uint offs)
|
||||
|
||||
|
||||
/*
|
||||
For character sets which don't change octet length in case conversion.
|
||||
*/
|
||||
size_t my_caseup_mb(CHARSET_INFO * cs, char *src, size_t srclen,
|
||||
char *dst __attribute__((unused)),
|
||||
size_t dstlen __attribute__((unused)))
|
||||
{
|
||||
register uint32 l;
|
||||
register char *srcend= src + srclen;
|
||||
register const uchar *map= cs->to_upper;
|
||||
|
||||
DBUG_ASSERT(cs->caseup_multiply == 1);
|
||||
DBUG_ASSERT(src == dst && srclen == dstlen);
|
||||
DBUG_ASSERT(cs->mbmaxlen == 2);
|
||||
|
||||
while (src < srcend)
|
||||
{
|
||||
if ((l=my_ismbchar(cs, src, srcend)))
|
||||
{
|
||||
MY_UNICASE_CHARACTER *ch;
|
||||
if ((ch= get_case_info_for_ch(cs, (uchar) src[0], (uchar) src[1])))
|
||||
{
|
||||
*src++= ch->toupper >> 8;
|
||||
*src++= ch->toupper & 0xFF;
|
||||
}
|
||||
else
|
||||
src+= l;
|
||||
}
|
||||
else
|
||||
{
|
||||
*src=(char) map[(uchar) *src];
|
||||
src++;
|
||||
}
|
||||
}
|
||||
return srclen;
|
||||
}
|
||||
|
||||
|
||||
size_t my_casedn_mb(CHARSET_INFO * cs, char *src, size_t srclen,
|
||||
char *dst __attribute__((unused)),
|
||||
size_t dstlen __attribute__((unused)))
|
||||
{
|
||||
register uint32 l;
|
||||
register char *srcend= src + srclen;
|
||||
register const uchar *map=cs->to_lower;
|
||||
|
||||
DBUG_ASSERT(cs->casedn_multiply == 1);
|
||||
DBUG_ASSERT(src == dst && srclen == dstlen);
|
||||
DBUG_ASSERT(cs->mbmaxlen == 2);
|
||||
|
||||
while (src < srcend)
|
||||
{
|
||||
if ((l= my_ismbchar(cs, src, srcend)))
|
||||
{
|
||||
MY_UNICASE_CHARACTER *ch;
|
||||
if ((ch= get_case_info_for_ch(cs, (uchar) src[0], (uchar) src[1])))
|
||||
{
|
||||
*src++= ch->tolower >> 8;
|
||||
*src++= ch->tolower & 0xFF;
|
||||
}
|
||||
else
|
||||
src+= l;
|
||||
}
|
||||
else
|
||||
{
|
||||
*src= (char) map[(uchar)*src];
|
||||
src++;
|
||||
}
|
||||
}
|
||||
return srclen;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Case folding functions for character set
|
||||
where case conversion can change string octet length.
|
||||
Case folding functions for CJK character set.
|
||||
Case conversion can optionally reduce string octet length.
|
||||
For example, in EUCKR,
|
||||
_euckr 0xA9A5 == "LATIN LETTER DOTLESS I" (Turkish letter)
|
||||
is upper-cased to to
|
||||
@ -153,13 +80,14 @@ size_t my_casedn_mb(CHARSET_INFO * cs, char *src, size_t srclen,
|
||||
Length is reduced in this example from two bytes to one byte.
|
||||
*/
|
||||
static size_t
|
||||
my_casefold_mb_varlen(CHARSET_INFO *cs,
|
||||
char *src, size_t srclen,
|
||||
char *dst, size_t dstlen __attribute__((unused)),
|
||||
const uchar *map,
|
||||
size_t is_upper)
|
||||
my_casefold_mb(CHARSET_INFO *cs,
|
||||
const char *src, size_t srclen,
|
||||
char *dst, size_t dstlen __attribute__((unused)),
|
||||
const uchar *map,
|
||||
size_t is_upper)
|
||||
{
|
||||
char *srcend= src + srclen, *dst0= dst;
|
||||
const char *srcend= src + srclen;
|
||||
char *dst0= dst;
|
||||
|
||||
DBUG_ASSERT(cs->mbmaxlen == 2);
|
||||
|
||||
@ -193,22 +121,22 @@ my_casefold_mb_varlen(CHARSET_INFO *cs,
|
||||
|
||||
|
||||
size_t
|
||||
my_casedn_mb_varlen(CHARSET_INFO * cs, char *src, size_t srclen,
|
||||
my_casedn_mb(CHARSET_INFO * cs, const char *src, size_t srclen,
|
||||
char *dst, size_t dstlen)
|
||||
{
|
||||
DBUG_ASSERT(dstlen >= srclen * cs->casedn_multiply);
|
||||
DBUG_ASSERT(src != dst || cs->casedn_multiply == 1);
|
||||
return my_casefold_mb_varlen(cs, src, srclen, dst, dstlen, cs->to_lower, 0);
|
||||
return my_casefold_mb(cs, src, srclen, dst, dstlen, cs->to_lower, 0);
|
||||
}
|
||||
|
||||
|
||||
size_t
|
||||
my_caseup_mb_varlen(CHARSET_INFO * cs, char *src, size_t srclen,
|
||||
char *dst, size_t dstlen)
|
||||
my_caseup_mb(CHARSET_INFO * cs, const char *src, size_t srclen,
|
||||
char *dst, size_t dstlen)
|
||||
{
|
||||
DBUG_ASSERT(dstlen >= srclen * cs->caseup_multiply);
|
||||
DBUG_ASSERT(src != dst || cs->caseup_multiply == 1);
|
||||
return my_casefold_mb_varlen(cs, src, srclen, dst, dstlen, cs->to_upper, 1);
|
||||
return my_casefold_mb(cs, src, srclen, dst, dstlen, cs->to_upper, 1);
|
||||
}
|
||||
|
||||
|
||||
|
@ -214,28 +214,26 @@ size_t my_casedn_str_8bit(CHARSET_INFO * cs,char *str)
|
||||
}
|
||||
|
||||
|
||||
size_t my_caseup_8bit(CHARSET_INFO * cs, char *src, size_t srclen,
|
||||
char *dst __attribute__((unused)),
|
||||
size_t dstlen __attribute__((unused)))
|
||||
size_t my_caseup_8bit(CHARSET_INFO * cs, const char *src, size_t srclen,
|
||||
char *dst, size_t dstlen)
|
||||
{
|
||||
char *end= src + srclen;
|
||||
const char *end= src + srclen;
|
||||
register const uchar *map= cs->to_upper;
|
||||
DBUG_ASSERT(src == dst && srclen == dstlen);
|
||||
DBUG_ASSERT(srclen <= dstlen);
|
||||
for ( ; src != end ; src++)
|
||||
*src= (char) map[(uchar) *src];
|
||||
*dst++= (char) map[(uchar) *src];
|
||||
return srclen;
|
||||
}
|
||||
|
||||
|
||||
size_t my_casedn_8bit(CHARSET_INFO * cs, char *src, size_t srclen,
|
||||
char *dst __attribute__((unused)),
|
||||
size_t dstlen __attribute__((unused)))
|
||||
size_t my_casedn_8bit(CHARSET_INFO * cs, const char *src, size_t srclen,
|
||||
char *dst, size_t dstlen)
|
||||
{
|
||||
char *end= src + srclen;
|
||||
const char *end= src + srclen;
|
||||
register const uchar *map=cs->to_lower;
|
||||
DBUG_ASSERT(src == dst && srclen == dstlen);
|
||||
DBUG_ASSERT(srclen <= dstlen);
|
||||
for ( ; src != end ; src++)
|
||||
*src= (char) map[(uchar) *src];
|
||||
*dst++= (char) map[(uchar) *src];
|
||||
return srclen;
|
||||
}
|
||||
|
||||
|
@ -1331,25 +1331,26 @@ my_tosort_utf16(MY_UNICASE_INFO *uni_plane, my_wc_t *wc)
|
||||
|
||||
|
||||
static size_t
|
||||
my_caseup_utf16(CHARSET_INFO *cs, char *src, size_t srclen,
|
||||
char *dst __attribute__((unused)),
|
||||
size_t dstlen __attribute__((unused)))
|
||||
my_caseup_utf16(CHARSET_INFO *cs, const char *src, size_t srclen,
|
||||
char *dst, size_t dstlen)
|
||||
{
|
||||
my_wc_t wc;
|
||||
my_charset_conv_mb_wc mb_wc= cs->cset->mb_wc;
|
||||
my_charset_conv_wc_mb wc_mb= cs->cset->wc_mb;
|
||||
int res;
|
||||
char *srcend= src + srclen;
|
||||
const char *srcend= src + srclen;
|
||||
char *dstend= dst + dstlen;
|
||||
MY_UNICASE_INFO *uni_plane= cs->caseinfo;
|
||||
DBUG_ASSERT(src == dst && srclen == dstlen);
|
||||
DBUG_ASSERT(srclen <= dstlen);
|
||||
|
||||
while ((src < srcend) &&
|
||||
(res= mb_wc(cs, &wc, (uchar *) src, (uchar *) srcend)) > 0)
|
||||
{
|
||||
my_toupper_utf16(uni_plane, &wc);
|
||||
if (res != wc_mb(cs, wc, (uchar *) src, (uchar *) srcend))
|
||||
if (res != wc_mb(cs, wc, (uchar *) dst, (uchar *) dstend))
|
||||
break;
|
||||
src+= res;
|
||||
dst+= res;
|
||||
}
|
||||
return srclen;
|
||||
}
|
||||
@ -1378,25 +1379,26 @@ my_hash_sort_utf16(CHARSET_INFO *cs, const uchar *s, size_t slen,
|
||||
|
||||
|
||||
static size_t
|
||||
my_casedn_utf16(CHARSET_INFO *cs, char *src, size_t srclen,
|
||||
char *dst __attribute__((unused)),
|
||||
size_t dstlen __attribute__((unused)))
|
||||
my_casedn_utf16(CHARSET_INFO *cs, const char *src, size_t srclen,
|
||||
char *dst, size_t dstlen)
|
||||
{
|
||||
my_wc_t wc;
|
||||
my_charset_conv_mb_wc mb_wc= cs->cset->mb_wc;
|
||||
my_charset_conv_wc_mb wc_mb= cs->cset->wc_mb;
|
||||
int res;
|
||||
char *srcend= src + srclen;
|
||||
const char *srcend= src + srclen;
|
||||
char *dstend= dst + dstlen;
|
||||
MY_UNICASE_INFO *uni_plane= cs->caseinfo;
|
||||
DBUG_ASSERT(src == dst && srclen == dstlen);
|
||||
DBUG_ASSERT(srclen <= dstlen);
|
||||
|
||||
while ((src < srcend) &&
|
||||
(res= mb_wc(cs, &wc, (uchar *) src, (uchar *) srcend)) > 0)
|
||||
{
|
||||
my_tolower_utf16(uni_plane, &wc);
|
||||
if (res != wc_mb(cs, wc, (uchar *) src, (uchar *) srcend))
|
||||
if (res != wc_mb(cs, wc, (uchar *) dst, (uchar *) dstend))
|
||||
break;
|
||||
src+= res;
|
||||
dst+= res;
|
||||
}
|
||||
return srclen;
|
||||
}
|
||||
@ -1992,23 +1994,24 @@ my_tosort_utf32(MY_UNICASE_INFO *uni_plane, my_wc_t *wc)
|
||||
|
||||
|
||||
static size_t
|
||||
my_caseup_utf32(CHARSET_INFO *cs, char *src, size_t srclen,
|
||||
char *dst __attribute__((unused)),
|
||||
size_t dstlen __attribute__((unused)))
|
||||
my_caseup_utf32(CHARSET_INFO *cs, const char *src, size_t srclen,
|
||||
char *dst, size_t dstlen)
|
||||
{
|
||||
my_wc_t wc;
|
||||
int res;
|
||||
char *srcend= src + srclen;
|
||||
const char *srcend= src + srclen;
|
||||
char *dstend= dst + dstlen;
|
||||
MY_UNICASE_INFO *uni_plane= cs->caseinfo;
|
||||
DBUG_ASSERT(src == dst && srclen == dstlen);
|
||||
DBUG_ASSERT(srclen <= dstlen);
|
||||
|
||||
while ((src < srcend) &&
|
||||
(res= my_utf32_uni(cs, &wc, (uchar *)src, (uchar*) srcend)) > 0)
|
||||
{
|
||||
my_toupper_utf32(uni_plane, &wc);
|
||||
if (res != my_uni_utf32(cs, wc, (uchar*) src, (uchar*) srcend))
|
||||
if (res != my_uni_utf32(cs, wc, (uchar*) dst, (uchar*) dstend))
|
||||
break;
|
||||
src+= res;
|
||||
dst+= res;
|
||||
}
|
||||
return srclen;
|
||||
}
|
||||
@ -2043,22 +2046,23 @@ my_hash_sort_utf32(CHARSET_INFO *cs, const uchar *s, size_t slen,
|
||||
|
||||
|
||||
static size_t
|
||||
my_casedn_utf32(CHARSET_INFO *cs, char *src, size_t srclen,
|
||||
char *dst __attribute__((unused)),
|
||||
size_t dstlen __attribute__((unused)))
|
||||
my_casedn_utf32(CHARSET_INFO *cs, const char *src, size_t srclen,
|
||||
char *dst, size_t dstlen)
|
||||
{
|
||||
my_wc_t wc;
|
||||
int res;
|
||||
char *srcend= src + srclen;
|
||||
const char *srcend= src + srclen;
|
||||
char *dstend= dst + dstlen;
|
||||
MY_UNICASE_INFO *uni_plane= cs->caseinfo;
|
||||
DBUG_ASSERT(src == dst && srclen == dstlen);
|
||||
DBUG_ASSERT(srclen <= dstlen);
|
||||
|
||||
while ((res= my_utf32_uni(cs, &wc, (uchar*) src, (uchar*) srcend)) > 0)
|
||||
{
|
||||
my_tolower_utf32(uni_plane,&wc);
|
||||
if (res != my_uni_utf32(cs, wc, (uchar*) src, (uchar*) srcend))
|
||||
if (res != my_uni_utf32(cs, wc, (uchar*) dst, (uchar*) dstend))
|
||||
break;
|
||||
src+= res;
|
||||
dst+= res;
|
||||
}
|
||||
return srclen;
|
||||
}
|
||||
@ -2781,23 +2785,24 @@ my_tosort_ucs2(MY_UNICASE_INFO *uni_plane, my_wc_t *wc)
|
||||
*wc= page[*wc & 0xFF].sort;
|
||||
}
|
||||
|
||||
static size_t my_caseup_ucs2(CHARSET_INFO *cs, char *src, size_t srclen,
|
||||
char *dst __attribute__((unused)),
|
||||
size_t dstlen __attribute__((unused)))
|
||||
static size_t my_caseup_ucs2(CHARSET_INFO *cs, const char *src, size_t srclen,
|
||||
char *dst, size_t dstlen)
|
||||
{
|
||||
my_wc_t wc;
|
||||
int res;
|
||||
char *srcend= src + srclen;
|
||||
const char *srcend= src + srclen;
|
||||
char *dstend= dst + dstlen;
|
||||
MY_UNICASE_INFO *uni_plane= cs->caseinfo;
|
||||
DBUG_ASSERT(src == dst && srclen == dstlen);
|
||||
DBUG_ASSERT(srclen <= dstlen);
|
||||
|
||||
while ((src < srcend) &&
|
||||
(res= my_ucs2_uni(cs, &wc, (uchar *)src, (uchar*) srcend)) > 0)
|
||||
{
|
||||
my_toupper_ucs2(uni_plane, &wc);
|
||||
if (res != my_uni_ucs2(cs, wc, (uchar*) src, (uchar*) srcend))
|
||||
if (res != my_uni_ucs2(cs, wc, (uchar*) dst, (uchar*) dstend))
|
||||
break;
|
||||
src+= res;
|
||||
dst+= res;
|
||||
}
|
||||
return srclen;
|
||||
}
|
||||
@ -2826,23 +2831,24 @@ static void my_hash_sort_ucs2(CHARSET_INFO *cs, const uchar *s, size_t slen,
|
||||
}
|
||||
|
||||
|
||||
static size_t my_casedn_ucs2(CHARSET_INFO *cs, char *src, size_t srclen,
|
||||
char *dst __attribute__((unused)),
|
||||
size_t dstlen __attribute__((unused)))
|
||||
static size_t my_casedn_ucs2(CHARSET_INFO *cs, const char *src, size_t srclen,
|
||||
char *dst, size_t dstlen)
|
||||
{
|
||||
my_wc_t wc;
|
||||
int res;
|
||||
char *srcend= src + srclen;
|
||||
const char *srcend= src + srclen;
|
||||
char *dstend= dst + dstlen;
|
||||
MY_UNICASE_INFO *uni_plane= cs->caseinfo;
|
||||
DBUG_ASSERT(src == dst && srclen == dstlen);
|
||||
DBUG_ASSERT(srclen <= dstlen);
|
||||
|
||||
while ((src < srcend) &&
|
||||
(res= my_ucs2_uni(cs, &wc, (uchar*) src, (uchar*) srcend)) > 0)
|
||||
{
|
||||
my_tolower_ucs2(uni_plane, &wc);
|
||||
if (res != my_uni_ucs2(cs, wc, (uchar*) src, (uchar*) srcend))
|
||||
if (res != my_uni_ucs2(cs, wc, (uchar*) dst, (uchar*) dstend))
|
||||
break;
|
||||
src+= res;
|
||||
dst+= res;
|
||||
}
|
||||
return srclen;
|
||||
}
|
||||
|
@ -67156,12 +67156,12 @@ get_case_info_for_ch(CHARSET_INFO *cs, uint plane, uint page, uint offs)
|
||||
*/
|
||||
static size_t
|
||||
my_casefold_ujis(CHARSET_INFO *cs,
|
||||
char *src, size_t srclen,
|
||||
const char *src, size_t srclen,
|
||||
char *dst, size_t dstlen __attribute__((unused)),
|
||||
const uchar * const map,
|
||||
size_t is_upper)
|
||||
{
|
||||
char *srcend= src + srclen, *dst0= dst;
|
||||
const char *srcend= src + srclen, *dst0= dst;
|
||||
|
||||
while (src < srcend)
|
||||
{
|
||||
@ -67203,7 +67203,7 @@ my_casefold_ujis(CHARSET_INFO *cs,
|
||||
LOWER()
|
||||
*/
|
||||
size_t
|
||||
my_casedn_ujis(CHARSET_INFO * cs, char *src, size_t srclen,
|
||||
my_casedn_ujis(CHARSET_INFO * cs, const char *src, size_t srclen,
|
||||
char *dst, size_t dstlen)
|
||||
{
|
||||
DBUG_ASSERT(dstlen >= srclen * cs->casedn_multiply);
|
||||
@ -67216,7 +67216,7 @@ my_casedn_ujis(CHARSET_INFO * cs, char *src, size_t srclen,
|
||||
UPPER()
|
||||
*/
|
||||
size_t
|
||||
my_caseup_ujis(CHARSET_INFO * cs, char *src, size_t srclen,
|
||||
my_caseup_ujis(CHARSET_INFO * cs, const char *src, size_t srclen,
|
||||
char *dst, size_t dstlen)
|
||||
{
|
||||
DBUG_ASSERT(dstlen >= srclen * cs->caseup_multiply);
|
||||
|
@ -5071,12 +5071,13 @@ my_tosort_utf8mb3(MY_UNICASE_INFO *uni_plane, my_wc_t *wc)
|
||||
*wc= page[*wc & 0xFF].sort;
|
||||
}
|
||||
|
||||
static size_t my_caseup_utf8(CHARSET_INFO *cs, char *src, size_t srclen,
|
||||
static size_t my_caseup_utf8(CHARSET_INFO *cs, const char *src, size_t srclen,
|
||||
char *dst, size_t dstlen)
|
||||
{
|
||||
my_wc_t wc;
|
||||
int srcres, dstres;
|
||||
char *srcend= src + srclen, *dstend= dst + dstlen, *dst0= dst;
|
||||
const char *srcend= src + srclen;
|
||||
char *dstend= dst + dstlen, *dst0= dst;
|
||||
MY_UNICASE_INFO *uni_plane= cs->caseinfo;
|
||||
DBUG_ASSERT(src != dst || cs->caseup_multiply == 1);
|
||||
|
||||
@ -5142,12 +5143,13 @@ static size_t my_caseup_str_utf8(CHARSET_INFO *cs, char *src)
|
||||
}
|
||||
|
||||
|
||||
static size_t my_casedn_utf8(CHARSET_INFO *cs, char *src, size_t srclen,
|
||||
static size_t my_casedn_utf8(CHARSET_INFO *cs, const char *src, size_t srclen,
|
||||
char *dst, size_t dstlen)
|
||||
{
|
||||
my_wc_t wc;
|
||||
int srcres, dstres;
|
||||
char *srcend= src + srclen, *dstend= dst + dstlen, *dst0= dst;
|
||||
const char *srcend= src + srclen;
|
||||
char *dstend= dst + dstlen, *dst0= dst;
|
||||
MY_UNICASE_INFO *uni_plane= cs->caseinfo;
|
||||
DBUG_ASSERT(src != dst || cs->casedn_multiply == 1);
|
||||
|
||||
@ -7513,12 +7515,13 @@ my_toupper_utf8mb4(MY_UNICASE_INFO *uni_plane, my_wc_t *wc)
|
||||
|
||||
|
||||
static size_t
|
||||
my_caseup_utf8mb4(CHARSET_INFO *cs, char *src, size_t srclen,
|
||||
my_caseup_utf8mb4(CHARSET_INFO *cs, const char *src, size_t srclen,
|
||||
char *dst, size_t dstlen)
|
||||
{
|
||||
my_wc_t wc;
|
||||
int srcres, dstres;
|
||||
char *srcend= src + srclen, *dstend= dst + dstlen, *dst0= dst;
|
||||
const char *srcend= src + srclen;
|
||||
char *dstend= dst + dstlen, *dst0= dst;
|
||||
MY_UNICASE_INFO *uni_plane= cs->caseinfo;
|
||||
DBUG_ASSERT(src != dst || cs->caseup_multiply == 1);
|
||||
|
||||
@ -7600,12 +7603,13 @@ my_caseup_str_utf8mb4(CHARSET_INFO *cs, char *src)
|
||||
|
||||
static size_t
|
||||
my_casedn_utf8mb4(CHARSET_INFO *cs,
|
||||
char *src, size_t srclen,
|
||||
const char *src, size_t srclen,
|
||||
char *dst, size_t dstlen)
|
||||
{
|
||||
my_wc_t wc;
|
||||
int srcres, dstres;
|
||||
char *srcend= src + srclen, *dstend= dst + dstlen, *dst0= dst;
|
||||
const char *srcend= src + srclen;
|
||||
char *dstend= dst + dstlen, *dst0= dst;
|
||||
MY_UNICASE_INFO *uni_plane= cs->caseinfo;
|
||||
DBUG_ASSERT(src != dst || cs->casedn_multiply == 1);
|
||||
|
||||
|
@ -41,12 +41,14 @@ ELSE()
|
||||
SET(inst_location ${INSTALL_SUPPORTFILESDIR})
|
||||
ENDIF()
|
||||
|
||||
IF (NOT WITHOUT_SERVER)
|
||||
FOREACH(inifile my-huge my-innodb-heavy-4G my-large my-medium my-small)
|
||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${inifile}.cnf.sh
|
||||
${CMAKE_CURRENT_BINARY_DIR}/${inifile}.${ini_file_extension} @ONLY)
|
||||
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${inifile}.${ini_file_extension}
|
||||
DESTINATION ${inst_location} COMPONENT IniFiles)
|
||||
ENDFOREACH()
|
||||
ENDIF()
|
||||
|
||||
IF(WITH_WSREP)
|
||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/wsrep.cnf.sh
|
||||
|
Loading…
x
Reference in New Issue
Block a user