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)
|
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)
|
||||||
|
@ -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)
|
|||||||
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)
|
|||||||
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()
|
||||||
|
@ -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,
|
|||||||
/* 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);
|
|||||||
/* 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 *);
|
||||||
|
|
||||||
|
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';
|
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)
|
|||||||
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
|
|||||||
#
|
#
|
||||||
# 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
|
|||||||
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
|
|||||||
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;
|
||||||
|
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
|
# End of 10.0 tests
|
||||||
#
|
#
|
||||||
|
@ -5705,6 +5705,29 @@ c2
|
|||||||
YWJjZGVmZ2hp-YWJjZGVmZ2hp
|
YWJjZGVmZ2hp-YWJjZGVmZ2hp
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET optimizer_switch=@save_optimizer_switch;
|
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
|
# End of 10.0 tests
|
||||||
#
|
#
|
||||||
|
@ -26173,6 +26173,29 @@ HEX(a) CHAR_LENGTH(a)
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SELECT _ujis 0x8EA0;
|
SELECT _ujis 0x8EA0;
|
||||||
ERROR HY000: Invalid ujis character string: '8EA0'
|
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
|
# End of 10.0 tests
|
||||||
#
|
#
|
||||||
|
@ -2138,6 +2138,29 @@ EXECUTE stmt USING @arg00;
|
|||||||
CONCAT(_utf16'a' COLLATE utf16_unicode_ci, ?)
|
CONCAT(_utf16'a' COLLATE utf16_unicode_ci, ?)
|
||||||
aÿ
|
aÿ
|
||||||
DEALLOCATE PREPARE stmt;
|
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
|
# End of 10.0 tests
|
||||||
#
|
#
|
||||||
|
@ -2324,6 +2324,35 @@ DFFFFFDFFFFF9CFFFF9DFFFF9EFFFF
|
|||||||
# End of 5.6 tests
|
# 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
|
# Start of 10.1 tests
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
|
@ -2237,6 +2237,29 @@ EXECUTE stmt USING @arg00;
|
|||||||
CONCAT(_utf32'a' COLLATE utf32_unicode_ci, ?)
|
CONCAT(_utf32'a' COLLATE utf32_unicode_ci, ?)
|
||||||
aÿ
|
aÿ
|
||||||
DEALLOCATE PREPARE stmt;
|
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
|
# End of 10.0 tests
|
||||||
#
|
#
|
||||||
|
@ -10278,6 +10278,29 @@ SELECT * FROM v1;
|
|||||||
c
|
c
|
||||||
ß
|
ß
|
||||||
DROP VIEW v1;
|
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
|
# End of 10.0 tests
|
||||||
#
|
#
|
||||||
|
@ -3469,6 +3469,29 @@ t1 CREATE TABLE `t1` (
|
|||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET NAMES default;
|
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
|
# End of 10.0 tests
|
||||||
#
|
#
|
||||||
|
@ -2462,5 +2462,55 @@ id sid id
|
|||||||
1 NULL NULL
|
1 NULL NULL
|
||||||
2 NULL NULL
|
2 NULL NULL
|
||||||
drop table t1, t2;
|
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
|
# end of 5.5 tests
|
||||||
SET optimizer_switch=@save_optimizer_switch;
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
|
@ -2473,6 +2473,56 @@ id sid id
|
|||||||
1 NULL NULL
|
1 NULL NULL
|
||||||
2 NULL NULL
|
2 NULL NULL
|
||||||
drop table t1, t2;
|
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
|
# end of 5.5 tests
|
||||||
SET optimizer_switch=@save_optimizer_switch;
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
set join_cache_level=default;
|
set join_cache_level=default;
|
||||||
|
@ -133,3 +133,7 @@ select * from t2;
|
|||||||
a
|
a
|
||||||
1
|
1
|
||||||
drop table tmp,t2;
|
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
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t1 system NULL NULL NULL NULL 1
|
1 PRIMARY t1 system NULL NULL NULL NULL 1
|
||||||
2 DEPENDENT SUBQUERY t3 const PRIMARY PRIMARY 4 const 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;
|
DROP TABLE t1,t2,t3;
|
||||||
#
|
#
|
||||||
# MDEV-7599: in-to-exists chosen after min/max optimization
|
# 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;
|
create table t1 (a int) engine=innodb;
|
||||||
start transaction;
|
start transaction;
|
||||||
insert t1 values (1);
|
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;
|
drop table t1;
|
||||||
|
@ -8,10 +8,12 @@ start transaction;
|
|||||||
insert t1 values (1);
|
insert t1 values (1);
|
||||||
let id=`select connection_id()`;
|
let id=`select connection_id()`;
|
||||||
connect con2,localhost,root;
|
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;
|
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 regexp_replace("$s", '(?s)^.*MySQL thread id $id,.*root([^\n]*)\n.*', '\\\\1') as `state from show engine innodb status, must be empty`;
|
||||||
eval select state as `state from show processlist` from information_schema.processlist where id = $id;
|
|
||||||
enable_query_log;
|
enable_query_log;
|
||||||
disconnect con2;
|
disconnect con2;
|
||||||
connection default;
|
connection default;
|
||||||
|
@ -106,3 +106,12 @@ use test;
|
|||||||
EOF
|
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
|
--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
|
--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 #
|
--echo #
|
||||||
SELECT _binary 0x7E, _binary X'7E', _binary B'01111110';
|
SELECT _binary 0x7E, _binary X'7E', _binary B'01111110';
|
||||||
|
|
||||||
|
SET NAMES utf8, character_set_connection=binary;
|
||||||
|
--source include/ctype_mdev13118.inc
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # End of 10.0 tests
|
--echo # End of 10.0 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -537,6 +537,8 @@ DROP TABLE t1;
|
|||||||
--error ER_INVALID_CHARACTER_STRING
|
--error ER_INVALID_CHARACTER_STRING
|
||||||
SELECT _eucjpms 0x8EA0;
|
SELECT _eucjpms 0x8EA0;
|
||||||
|
|
||||||
|
SET NAMES eucjpms;
|
||||||
|
--source include/ctype_mdev13118.inc
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # End of 10.0 tests
|
--echo # End of 10.0 tests
|
||||||
|
@ -197,3 +197,14 @@ set collation_connection=euckr_bin;
|
|||||||
--echo # End of 5.6 tests
|
--echo # End of 5.6 tests
|
||||||
--echo #
|
--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;
|
SET NAMES gbk;
|
||||||
--source include/ctype_E05C.inc
|
--source include/ctype_E05C.inc
|
||||||
|
|
||||||
|
SET NAMES utf8, character_set_connection=gbk;
|
||||||
|
--source include/ctype_mdev13118.inc
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # MDEV-9886 Illegal mix of collations with a view comparing a field to a binary constant
|
--echo # MDEV-9886 Illegal mix of collations with a view comparing a field to a binary constant
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -260,6 +260,9 @@ SELECT * FROM v1;
|
|||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
SET NAMES latin1;
|
||||||
|
--source include/ctype_mdev13118.inc
|
||||||
|
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # End of 10.0 tests
|
--echo # End of 10.0 tests
|
||||||
|
@ -988,6 +988,10 @@ DROP TABLE t1;
|
|||||||
SET optimizer_switch=@save_optimizer_switch;
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
|
|
||||||
|
|
||||||
|
SET NAMES utf8, character_set_connection=ucs2;
|
||||||
|
--source include/ctype_mdev13118.inc
|
||||||
|
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # End of 10.0 tests
|
--echo # End of 10.0 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -1368,6 +1368,10 @@ DROP TABLE t1;
|
|||||||
SELECT _ujis 0x8EA0;
|
SELECT _ujis 0x8EA0;
|
||||||
|
|
||||||
|
|
||||||
|
SET NAMES ujis;
|
||||||
|
--source include/ctype_mdev13118.inc
|
||||||
|
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # End of 10.0 tests
|
--echo # End of 10.0 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -866,6 +866,11 @@ SET @arg00=_binary 0x00FF;
|
|||||||
EXECUTE stmt USING @arg00;
|
EXECUTE stmt USING @arg00;
|
||||||
DEALLOCATE PREPARE stmt;
|
DEALLOCATE PREPARE stmt;
|
||||||
|
|
||||||
|
|
||||||
|
SET NAMES utf8, character_set_connection=utf16;
|
||||||
|
--source include/ctype_mdev13118.inc
|
||||||
|
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # End of 10.0 tests
|
--echo # End of 10.0 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -745,6 +745,19 @@ SET NAMES utf8, collation_connection=utf16le_bin;
|
|||||||
--echo # End of 5.6 tests
|
--echo # End of 5.6 tests
|
||||||
--echo #
|
--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 #
|
||||||
--echo # Start of 10.1 tests
|
--echo # Start of 10.1 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -979,6 +979,14 @@ SET @arg00=_binary 0x00FF;
|
|||||||
EXECUTE stmt USING @arg00;
|
EXECUTE stmt USING @arg00;
|
||||||
DEALLOCATE PREPARE stmt;
|
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 #
|
||||||
--echo # End of 10.0 tests
|
--echo # End of 10.0 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -1881,6 +1881,13 @@ SELECT * FROM v1;
|
|||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# MDEV-13118 Wrong results with LOWER and UPPER and subquery
|
||||||
|
#
|
||||||
|
SET NAMES utf8;
|
||||||
|
--source include/ctype_mdev13118.inc
|
||||||
|
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # End of 10.0 tests
|
--echo # End of 10.0 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -1950,6 +1950,14 @@ DROP TABLE t1;
|
|||||||
|
|
||||||
SET NAMES default;
|
SET NAMES default;
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# MDEV-13118 Wrong results with LOWER and UPPER and subquery
|
||||||
|
#
|
||||||
|
SET NAMES utf8mb4;
|
||||||
|
--source include/ctype_mdev13118.inc
|
||||||
|
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # End of 10.0 tests
|
--echo # End of 10.0 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -1992,6 +1992,54 @@ select * from t1 t
|
|||||||
on t.id=r.id ;
|
on t.id=r.id ;
|
||||||
drop table t1, t2;
|
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
|
--echo # end of 5.5 tests
|
||||||
|
|
||||||
SET optimizer_switch=@save_optimizer_switch;
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
|
@ -141,3 +141,10 @@ select * from tmp;
|
|||||||
select * from t2;
|
select * from t2;
|
||||||
drop table tmp,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))
|
if (link(from, to) || unlink(from))
|
||||||
{
|
{
|
||||||
#endif
|
#endif
|
||||||
my_errno=errno;
|
if (errno == ENOENT && !access(from, F_OK))
|
||||||
|
my_errno= ENOTDIR;
|
||||||
|
else
|
||||||
|
my_errno= errno;
|
||||||
error = -1;
|
error = -1;
|
||||||
if (MyFlags & (MY_FAE+MY_WME))
|
if (MyFlags & (MY_FAE+MY_WME))
|
||||||
my_error(EE_LINK, MYF(ME_BELL+ME_WAITTANG),from,to,my_errno);
|
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
|
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)
|
${CMAKE_CURRENT_BINARY_DIR}/maria_add_gis_sp_bootstrap.sql ESCAPE_QUOTES @ONLY)
|
||||||
|
|
||||||
|
IF (NOT WITHOUT_SERVER)
|
||||||
INSTALL(FILES
|
INSTALL(FILES
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/mysql_system_tables.sql
|
${CMAKE_CURRENT_SOURCE_DIR}/mysql_system_tables.sql
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/mysql_system_tables_data.sql
|
${CMAKE_CURRENT_SOURCE_DIR}/mysql_system_tables_data.sql
|
||||||
@ -103,6 +104,7 @@ INSTALL(FILES
|
|||||||
${FIX_PRIVILEGES_SQL}
|
${FIX_PRIVILEGES_SQL}
|
||||||
DESTINATION ${INSTALL_MYSQLSHAREDIR} COMPONENT Server
|
DESTINATION ${INSTALL_MYSQLSHAREDIR} COMPONENT Server
|
||||||
)
|
)
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
# TCMalloc hacks
|
# TCMalloc hacks
|
||||||
IF(MALLOC_LIB)
|
IF(MALLOC_LIB)
|
||||||
|
@ -329,7 +329,7 @@ else
|
|||||||
$opt->{basedir} = '@prefix@';
|
$opt->{basedir} = '@prefix@';
|
||||||
$bindir = '@bindir@';
|
$bindir = '@bindir@';
|
||||||
$extra_bindir = $bindir;
|
$extra_bindir = $bindir;
|
||||||
$mysqld = '@libexecdir@/mysqld';
|
$mysqld = '@sbindir@/mysqld';
|
||||||
$srcpkgdatadir = '@pkgdatadir@';
|
$srcpkgdatadir = '@pkgdatadir@';
|
||||||
$buildpkgdatadir = '@pkgdatadir@';
|
$buildpkgdatadir = '@pkgdatadir@';
|
||||||
$scriptdir = '@scriptdir@';
|
$scriptdir = '@scriptdir@';
|
||||||
|
@ -343,7 +343,7 @@ else
|
|||||||
basedir="@prefix@"
|
basedir="@prefix@"
|
||||||
bindir="@bindir@"
|
bindir="@bindir@"
|
||||||
resolveip="$bindir/resolveip"
|
resolveip="$bindir/resolveip"
|
||||||
mysqld="@libexecdir@/mysqld"
|
mysqld="@sbindir@/mysqld"
|
||||||
srcpkgdatadir="@pkgdatadir@"
|
srcpkgdatadir="@pkgdatadir@"
|
||||||
buildpkgdatadir="@pkgdatadir@"
|
buildpkgdatadir="@pkgdatadir@"
|
||||||
fi
|
fi
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
-- Copyright (C) 2003, 2013 Oracle and/or its affiliates.
|
-- 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
|
-- 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
|
-- 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 storage_engine=MyISAM;
|
||||||
set enforce_storage_engine=NULL;
|
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
|
# Detect whether or not we had the Grant_priv column
|
||||||
SET @hadGrantPriv:=0;
|
SET @hadGrantPriv:=0;
|
||||||
SELECT @hadGrantPriv:=1 FROM user WHERE Grant_priv LIKE '%';
|
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 user add Grant_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' 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;
|
add References_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 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;
|
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
|
# 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;
|
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)
|
# Adding columns needed by GRANT .. REQUIRE (openssl)
|
||||||
|
|
||||||
ALTER TABLE user
|
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 ssl_cipher BLOB NOT NULL,
|
||||||
ADD x509_issuer BLOB NOT NULL,
|
ADD x509_issuer BLOB NOT NULL,
|
||||||
ADD x509_subject 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
|
# tables_priv
|
||||||
@ -63,9 +72,9 @@ ALTER TABLE tables_priv
|
|||||||
ALTER TABLE tables_priv
|
ALTER TABLE tables_priv
|
||||||
MODIFY Host char(60) NOT NULL default '',
|
MODIFY Host char(60) NOT NULL default '',
|
||||||
MODIFY Db char(64) 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 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,
|
ENGINE=MyISAM,
|
||||||
CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;
|
CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;
|
||||||
|
|
||||||
@ -91,7 +100,7 @@ ALTER TABLE columns_priv
|
|||||||
ALTER TABLE columns_priv
|
ALTER TABLE columns_priv
|
||||||
MODIFY Host char(60) NOT NULL default '',
|
MODIFY Host char(60) NOT NULL default '',
|
||||||
MODIFY Db char(64) 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 Table_name char(64) NOT NULL default '',
|
||||||
MODIFY Column_name char(64) NOT NULL default '',
|
MODIFY Column_name char(64) NOT NULL default '',
|
||||||
ENGINE=MyISAM,
|
ENGINE=MyISAM,
|
||||||
@ -162,7 +171,7 @@ alter table func comment='User defined functions';
|
|||||||
# and reset all char columns to correct width
|
# and reset all char columns to correct width
|
||||||
ALTER TABLE user
|
ALTER TABLE user
|
||||||
MODIFY Host char(60) NOT NULL default '',
|
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;
|
ENGINE=MyISAM, CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;
|
||||||
ALTER TABLE user
|
ALTER TABLE user
|
||||||
MODIFY Password char(41) character set latin1 collate latin1_bin NOT NULL default '',
|
MODIFY Password char(41) character set latin1 collate latin1_bin NOT NULL default '',
|
||||||
@ -192,7 +201,7 @@ ALTER TABLE user
|
|||||||
ALTER TABLE db
|
ALTER TABLE db
|
||||||
MODIFY Host char(60) NOT NULL default '',
|
MODIFY Host char(60) NOT NULL default '',
|
||||||
MODIFY Db char(64) 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;
|
ENGINE=MyISAM, CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;
|
||||||
ALTER TABLE db
|
ALTER TABLE db
|
||||||
MODIFY Select_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
|
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
|
MODIFY definer
|
||||||
char(141) collate utf8_bin DEFAULT '' NOT NULL,
|
char(141) collate utf8_bin DEFAULT '' NOT NULL,
|
||||||
MODIFY comment
|
MODIFY comment
|
||||||
char(64) collate utf8_bin DEFAULT '' NOT NULL;
|
text collate utf8_bin NOT NULL;
|
||||||
|
|
||||||
ALTER TABLE proc ADD character_set_client
|
ALTER TABLE proc ADD character_set_client
|
||||||
char(32) collate utf8_bin DEFAULT NULL
|
char(32) collate utf8_bin DEFAULT NULL
|
||||||
@ -518,19 +527,18 @@ ALTER TABLE proc MODIFY comment
|
|||||||
SET @hadEventPriv := 0;
|
SET @hadEventPriv := 0;
|
||||||
SELECT @hadEventPriv :=1 FROM user WHERE Event_priv LIKE '%';
|
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;
|
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;
|
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;
|
ALTER TABLE db MODIFY Event_priv enum('N','Y') character set utf8 DEFAULT 'N' NOT NULL;
|
||||||
|
|
||||||
#
|
#
|
||||||
# EVENT table
|
# EVENT table
|
||||||
#
|
#
|
||||||
ALTER TABLE event DROP PRIMARY KEY;
|
ALTER TABLE event DROP PRIMARY KEY, ADD PRIMARY KEY(db, name);
|
||||||
ALTER TABLE event ADD PRIMARY KEY(db, name);
|
|
||||||
# Add sql_mode column just in case.
|
# Add sql_mode column just in case.
|
||||||
ALTER TABLE event ADD sql_mode set ('IGNORE_BAD_TABLE_OPTIONS') AFTER on_completion;
|
ALTER TABLE event ADD sql_mode set ('IGNORE_BAD_TABLE_OPTIONS') AFTER on_completion;
|
||||||
# Update list of sql_mode values.
|
# Update list of sql_mode values.
|
||||||
@ -570,8 +578,8 @@ ALTER TABLE event MODIFY sql_mode
|
|||||||
) DEFAULT '' NOT NULL AFTER on_completion;
|
) DEFAULT '' NOT NULL AFTER on_completion;
|
||||||
ALTER TABLE event MODIFY name char(64) CHARACTER SET utf8 NOT NULL default '';
|
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 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';
|
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;
|
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 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 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 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 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.
|
-- 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.
|
-- 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;
|
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_help = 0;
|
||||||
$opt_log = undef();
|
$opt_log = undef();
|
||||||
$opt_mysqladmin = "@bindir@/mysqladmin";
|
$opt_mysqladmin = "@bindir@/mysqladmin";
|
||||||
$opt_mysqld = "@libexecdir@/mysqld";
|
$opt_mysqld = "@sbindir@/mysqld";
|
||||||
$opt_no_log = 0;
|
$opt_no_log = 0;
|
||||||
$opt_password = undef();
|
$opt_password = undef();
|
||||||
$opt_tcp_ip = 0;
|
$opt_tcp_ip = 0;
|
||||||
|
@ -1506,32 +1506,18 @@ String *Item_str_conv::val_str(String *str)
|
|||||||
{
|
{
|
||||||
DBUG_ASSERT(fixed == 1);
|
DBUG_ASSERT(fixed == 1);
|
||||||
String *res;
|
String *res;
|
||||||
if (!(res=args[0]->val_str(str)))
|
uint alloced_length, len;
|
||||||
{
|
|
||||||
null_value=1; /* purecov: inspected */
|
if ((null_value= (!(res= args[0]->val_str(&tmp_value)) ||
|
||||||
return 0; /* purecov: inspected */
|
str->alloc((alloced_length= res->length() * multiply)))))
|
||||||
}
|
return 0;
|
||||||
null_value=0;
|
|
||||||
if (multiply == 1)
|
len= converter(collation.collation, (char*) res->ptr(), res->length(),
|
||||||
{
|
(char*) str->ptr(), alloced_length);
|
||||||
uint len;
|
DBUG_ASSERT(len <= alloced_length);
|
||||||
res= copy_if_not_alloced(&tmp_value, res, res->length());
|
str->set_charset(collation.collation);
|
||||||
len= converter(collation.collation, (char*) res->ptr(), res->length(),
|
str->length(len);
|
||||||
(char*) res->ptr(), res->length());
|
return str;
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1723,7 +1709,7 @@ String *Item_func_substr_index::val_str(String *str)
|
|||||||
DBUG_ASSERT(fixed == 1);
|
DBUG_ASSERT(fixed == 1);
|
||||||
char buff[MAX_FIELD_WIDTH];
|
char buff[MAX_FIELD_WIDTH];
|
||||||
String tmp(buff,sizeof(buff),system_charset_info);
|
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);
|
String *delimiter= args[1]->val_str(&tmp);
|
||||||
int32 count= (int32) args[2]->val_int();
|
int32 count= (int32) args[2]->val_int();
|
||||||
uint offset;
|
uint offset;
|
||||||
@ -1772,20 +1758,31 @@ String *Item_func_substr_index::val_str(String *str)
|
|||||||
if (pass == 0) /* count<0 */
|
if (pass == 0) /* count<0 */
|
||||||
{
|
{
|
||||||
c+=n+1;
|
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();
|
ptr=res->ptr();
|
||||||
}
|
}
|
||||||
else
|
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 */
|
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 */
|
else /* return right part */
|
||||||
{
|
{
|
||||||
ptr+= delimiter_length;
|
ptr+= delimiter_length;
|
||||||
tmp_value.set(*res,(ulong) (ptr-res->ptr()), (ulong) (strend-ptr));
|
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
|
{ // start counting from the beginning
|
||||||
for (offset=0; ; offset+= delimiter_length)
|
for (offset=0; ; offset+= delimiter_length)
|
||||||
{
|
{
|
||||||
if ((int) (offset= res->strstr(*delimiter, offset)) < 0)
|
if ((int) (offset= res->strstr(*delimiter, offset)) < 0)
|
||||||
return res; // Didn't find, return org string
|
{
|
||||||
if (!--count)
|
str->copy(res->ptr(), res->length(), collation.collation);
|
||||||
{
|
return str; // not found, return the original string
|
||||||
tmp_value.set(*res,0,offset);
|
}
|
||||||
break;
|
if (!--count)
|
||||||
}
|
{
|
||||||
|
str->copy(res->ptr(), offset, collation.collation);
|
||||||
|
return str;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1818,30 +1818,32 @@ String *Item_func_substr_index::val_str(String *str)
|
|||||||
address space less than where the found substring is located
|
address space less than where the found substring is located
|
||||||
in res
|
in res
|
||||||
*/
|
*/
|
||||||
if ((int) (offset= res->strrstr(*delimiter, offset)) < 0)
|
if ((int) (offset= res->strrstr(*delimiter, offset)) < 0)
|
||||||
return res; // Didn't find, return org string
|
{
|
||||||
|
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
|
At this point, we've searched for the substring
|
||||||
the number of times as supplied by the index value
|
the number of times as supplied by the index value
|
||||||
*/
|
*/
|
||||||
if (!++count)
|
if (!++count)
|
||||||
{
|
{
|
||||||
offset+= delimiter_length;
|
offset+= delimiter_length;
|
||||||
tmp_value.set(*res,offset,res->length()- offset);
|
str->copy(res->ptr() + offset, res->length() - offset,
|
||||||
break;
|
collation.collation);
|
||||||
}
|
return str;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (count)
|
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
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*
|
DBUG_ASSERT(0);
|
||||||
We always mark tmp_value as const so that if val_str() is called again
|
return NULL;
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -44,12 +44,14 @@ SET(files
|
|||||||
errmsg-utf8.txt
|
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}
|
INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/charsets DESTINATION ${INSTALL_MYSQLSHAREDIR}
|
||||||
COMPONENT Common PATTERN "languages.html" EXCLUDE
|
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;
|
int ref_changed;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
more_const_tables_found:
|
|
||||||
ref_changed = 0;
|
ref_changed = 0;
|
||||||
|
more_const_tables_found:
|
||||||
found_ref=0;
|
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->sort_by_table= get_sort_by_table(join->order, join->group_list,
|
||||||
join->select_lex->leaf_tables,
|
join->select_lex->leaf_tables,
|
||||||
|
@ -5272,6 +5272,8 @@ mysql_rename_table(handlerton *base, const char *old_db,
|
|||||||
delete file;
|
delete file;
|
||||||
if (error == HA_ERR_WRONG_COMMAND)
|
if (error == HA_ERR_WRONG_COMMAND)
|
||||||
my_error(ER_NOT_SUPPORTED_YET, MYF(0), "ALTER TABLE");
|
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)
|
else if (error)
|
||||||
my_error(ER_ERROR_ON_RENAME, MYF(0), from, to, error);
|
my_error(ER_ERROR_ON_RENAME, MYF(0), from, to, error);
|
||||||
else if (!(flags & FN_IS_TMP))
|
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");
|
DEBUG_SYNC(thd, "upgrade_lock_for_truncate");
|
||||||
/* To remove the table from the cache we need an exclusive lock. */
|
/* 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);
|
DBUG_RETURN(TRUE);
|
||||||
m_ticket_downgrade= table->mdl_ticket;
|
m_ticket_downgrade= table->mdl_ticket;
|
||||||
/* Close if table is going to be recreated. */
|
/* 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 */
|
/* If we are in bootstrap mode we should not load time zone tables */
|
||||||
return_val= time_zone_tables_exist= 0;
|
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
|
extern int num_read, num_there; // Statistics
|
||||||
static int num_write;
|
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. */
|
/* Header containing block info for not split VEC tables. */
|
||||||
/* Block and last values can be calculated from NumRec and Nrec. */
|
/* 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)),
|
static size_t my_case_bin(CHARSET_INFO *cs __attribute__((unused)),
|
||||||
char *src __attribute__((unused)),
|
const char *src, size_t srclen,
|
||||||
size_t srclen,
|
char *dst, size_t dstlen)
|
||||||
char *dst __attribute__((unused)),
|
|
||||||
size_t dstlen __attribute__((unused)))
|
|
||||||
{
|
{
|
||||||
|
DBUG_ASSERT(srclen <= dstlen);
|
||||||
|
memcpy(dst, src, srclen);
|
||||||
return srclen;
|
return srclen;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9999,8 +9999,8 @@ static MY_CHARSET_HANDLER my_charset_handler=
|
|||||||
my_mb_ctype_mb,
|
my_mb_ctype_mb,
|
||||||
my_caseup_str_mb,
|
my_caseup_str_mb,
|
||||||
my_casedn_str_mb,
|
my_casedn_str_mb,
|
||||||
my_caseup_mb_varlen, /* UPPER() can reduce length: Turkish DOTLESS i -> I */
|
my_caseup_mb, /* UPPER() can reduce length: Turkish DOTLESS i -> I */
|
||||||
my_casedn_mb, /* LOWER() does not change length, use simple version*/
|
my_casedn_mb, /* LOWER() does not change length */
|
||||||
my_snprintf_8bit,
|
my_snprintf_8bit,
|
||||||
my_long10_to_str_8bit,
|
my_long10_to_str_8bit,
|
||||||
my_longlong10_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.
|
Case folding functions for CJK character set.
|
||||||
*/
|
Case conversion can optionally reduce string octet length.
|
||||||
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.
|
|
||||||
For example, in EUCKR,
|
For example, in EUCKR,
|
||||||
_euckr 0xA9A5 == "LATIN LETTER DOTLESS I" (Turkish letter)
|
_euckr 0xA9A5 == "LATIN LETTER DOTLESS I" (Turkish letter)
|
||||||
is upper-cased to to
|
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.
|
Length is reduced in this example from two bytes to one byte.
|
||||||
*/
|
*/
|
||||||
static size_t
|
static size_t
|
||||||
my_casefold_mb_varlen(CHARSET_INFO *cs,
|
my_casefold_mb(CHARSET_INFO *cs,
|
||||||
char *src, size_t srclen,
|
const char *src, size_t srclen,
|
||||||
char *dst, size_t dstlen __attribute__((unused)),
|
char *dst, size_t dstlen __attribute__((unused)),
|
||||||
const uchar *map,
|
const uchar *map,
|
||||||
size_t is_upper)
|
size_t is_upper)
|
||||||
{
|
{
|
||||||
char *srcend= src + srclen, *dst0= dst;
|
const char *srcend= src + srclen;
|
||||||
|
char *dst0= dst;
|
||||||
|
|
||||||
DBUG_ASSERT(cs->mbmaxlen == 2);
|
DBUG_ASSERT(cs->mbmaxlen == 2);
|
||||||
|
|
||||||
@ -193,22 +121,22 @@ my_casefold_mb_varlen(CHARSET_INFO *cs,
|
|||||||
|
|
||||||
|
|
||||||
size_t
|
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)
|
char *dst, size_t dstlen)
|
||||||
{
|
{
|
||||||
DBUG_ASSERT(dstlen >= srclen * cs->casedn_multiply);
|
DBUG_ASSERT(dstlen >= srclen * cs->casedn_multiply);
|
||||||
DBUG_ASSERT(src != dst || cs->casedn_multiply == 1);
|
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
|
size_t
|
||||||
my_caseup_mb_varlen(CHARSET_INFO * cs, char *src, size_t srclen,
|
my_caseup_mb(CHARSET_INFO * cs, const char *src, size_t srclen,
|
||||||
char *dst, size_t dstlen)
|
char *dst, size_t dstlen)
|
||||||
{
|
{
|
||||||
DBUG_ASSERT(dstlen >= srclen * cs->caseup_multiply);
|
DBUG_ASSERT(dstlen >= srclen * cs->caseup_multiply);
|
||||||
DBUG_ASSERT(src != dst || cs->caseup_multiply == 1);
|
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,
|
size_t my_caseup_8bit(CHARSET_INFO * cs, const char *src, size_t srclen,
|
||||||
char *dst __attribute__((unused)),
|
char *dst, size_t dstlen)
|
||||||
size_t dstlen __attribute__((unused)))
|
|
||||||
{
|
{
|
||||||
char *end= src + srclen;
|
const char *end= src + srclen;
|
||||||
register const uchar *map= cs->to_upper;
|
register const uchar *map= cs->to_upper;
|
||||||
DBUG_ASSERT(src == dst && srclen == dstlen);
|
DBUG_ASSERT(srclen <= dstlen);
|
||||||
for ( ; src != end ; src++)
|
for ( ; src != end ; src++)
|
||||||
*src= (char) map[(uchar) *src];
|
*dst++= (char) map[(uchar) *src];
|
||||||
return srclen;
|
return srclen;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
size_t my_casedn_8bit(CHARSET_INFO * cs, char *src, size_t srclen,
|
size_t my_casedn_8bit(CHARSET_INFO * cs, const char *src, size_t srclen,
|
||||||
char *dst __attribute__((unused)),
|
char *dst, size_t dstlen)
|
||||||
size_t dstlen __attribute__((unused)))
|
|
||||||
{
|
{
|
||||||
char *end= src + srclen;
|
const char *end= src + srclen;
|
||||||
register const uchar *map=cs->to_lower;
|
register const uchar *map=cs->to_lower;
|
||||||
DBUG_ASSERT(src == dst && srclen == dstlen);
|
DBUG_ASSERT(srclen <= dstlen);
|
||||||
for ( ; src != end ; src++)
|
for ( ; src != end ; src++)
|
||||||
*src= (char) map[(uchar) *src];
|
*dst++= (char) map[(uchar) *src];
|
||||||
return srclen;
|
return srclen;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1331,25 +1331,26 @@ my_tosort_utf16(MY_UNICASE_INFO *uni_plane, my_wc_t *wc)
|
|||||||
|
|
||||||
|
|
||||||
static size_t
|
static size_t
|
||||||
my_caseup_utf16(CHARSET_INFO *cs, char *src, size_t srclen,
|
my_caseup_utf16(CHARSET_INFO *cs, const char *src, size_t srclen,
|
||||||
char *dst __attribute__((unused)),
|
char *dst, size_t dstlen)
|
||||||
size_t dstlen __attribute__((unused)))
|
|
||||||
{
|
{
|
||||||
my_wc_t wc;
|
my_wc_t wc;
|
||||||
my_charset_conv_mb_wc mb_wc= cs->cset->mb_wc;
|
my_charset_conv_mb_wc mb_wc= cs->cset->mb_wc;
|
||||||
my_charset_conv_wc_mb wc_mb= cs->cset->wc_mb;
|
my_charset_conv_wc_mb wc_mb= cs->cset->wc_mb;
|
||||||
int res;
|
int res;
|
||||||
char *srcend= src + srclen;
|
const char *srcend= src + srclen;
|
||||||
|
char *dstend= dst + dstlen;
|
||||||
MY_UNICASE_INFO *uni_plane= cs->caseinfo;
|
MY_UNICASE_INFO *uni_plane= cs->caseinfo;
|
||||||
DBUG_ASSERT(src == dst && srclen == dstlen);
|
DBUG_ASSERT(srclen <= dstlen);
|
||||||
|
|
||||||
while ((src < srcend) &&
|
while ((src < srcend) &&
|
||||||
(res= mb_wc(cs, &wc, (uchar *) src, (uchar *) srcend)) > 0)
|
(res= mb_wc(cs, &wc, (uchar *) src, (uchar *) srcend)) > 0)
|
||||||
{
|
{
|
||||||
my_toupper_utf16(uni_plane, &wc);
|
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;
|
break;
|
||||||
src+= res;
|
src+= res;
|
||||||
|
dst+= res;
|
||||||
}
|
}
|
||||||
return srclen;
|
return srclen;
|
||||||
}
|
}
|
||||||
@ -1378,25 +1379,26 @@ my_hash_sort_utf16(CHARSET_INFO *cs, const uchar *s, size_t slen,
|
|||||||
|
|
||||||
|
|
||||||
static size_t
|
static size_t
|
||||||
my_casedn_utf16(CHARSET_INFO *cs, char *src, size_t srclen,
|
my_casedn_utf16(CHARSET_INFO *cs, const char *src, size_t srclen,
|
||||||
char *dst __attribute__((unused)),
|
char *dst, size_t dstlen)
|
||||||
size_t dstlen __attribute__((unused)))
|
|
||||||
{
|
{
|
||||||
my_wc_t wc;
|
my_wc_t wc;
|
||||||
my_charset_conv_mb_wc mb_wc= cs->cset->mb_wc;
|
my_charset_conv_mb_wc mb_wc= cs->cset->mb_wc;
|
||||||
my_charset_conv_wc_mb wc_mb= cs->cset->wc_mb;
|
my_charset_conv_wc_mb wc_mb= cs->cset->wc_mb;
|
||||||
int res;
|
int res;
|
||||||
char *srcend= src + srclen;
|
const char *srcend= src + srclen;
|
||||||
|
char *dstend= dst + dstlen;
|
||||||
MY_UNICASE_INFO *uni_plane= cs->caseinfo;
|
MY_UNICASE_INFO *uni_plane= cs->caseinfo;
|
||||||
DBUG_ASSERT(src == dst && srclen == dstlen);
|
DBUG_ASSERT(srclen <= dstlen);
|
||||||
|
|
||||||
while ((src < srcend) &&
|
while ((src < srcend) &&
|
||||||
(res= mb_wc(cs, &wc, (uchar *) src, (uchar *) srcend)) > 0)
|
(res= mb_wc(cs, &wc, (uchar *) src, (uchar *) srcend)) > 0)
|
||||||
{
|
{
|
||||||
my_tolower_utf16(uni_plane, &wc);
|
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;
|
break;
|
||||||
src+= res;
|
src+= res;
|
||||||
|
dst+= res;
|
||||||
}
|
}
|
||||||
return srclen;
|
return srclen;
|
||||||
}
|
}
|
||||||
@ -1992,23 +1994,24 @@ my_tosort_utf32(MY_UNICASE_INFO *uni_plane, my_wc_t *wc)
|
|||||||
|
|
||||||
|
|
||||||
static size_t
|
static size_t
|
||||||
my_caseup_utf32(CHARSET_INFO *cs, char *src, size_t srclen,
|
my_caseup_utf32(CHARSET_INFO *cs, const char *src, size_t srclen,
|
||||||
char *dst __attribute__((unused)),
|
char *dst, size_t dstlen)
|
||||||
size_t dstlen __attribute__((unused)))
|
|
||||||
{
|
{
|
||||||
my_wc_t wc;
|
my_wc_t wc;
|
||||||
int res;
|
int res;
|
||||||
char *srcend= src + srclen;
|
const char *srcend= src + srclen;
|
||||||
|
char *dstend= dst + dstlen;
|
||||||
MY_UNICASE_INFO *uni_plane= cs->caseinfo;
|
MY_UNICASE_INFO *uni_plane= cs->caseinfo;
|
||||||
DBUG_ASSERT(src == dst && srclen == dstlen);
|
DBUG_ASSERT(srclen <= dstlen);
|
||||||
|
|
||||||
while ((src < srcend) &&
|
while ((src < srcend) &&
|
||||||
(res= my_utf32_uni(cs, &wc, (uchar *)src, (uchar*) srcend)) > 0)
|
(res= my_utf32_uni(cs, &wc, (uchar *)src, (uchar*) srcend)) > 0)
|
||||||
{
|
{
|
||||||
my_toupper_utf32(uni_plane, &wc);
|
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;
|
break;
|
||||||
src+= res;
|
src+= res;
|
||||||
|
dst+= res;
|
||||||
}
|
}
|
||||||
return srclen;
|
return srclen;
|
||||||
}
|
}
|
||||||
@ -2043,22 +2046,23 @@ my_hash_sort_utf32(CHARSET_INFO *cs, const uchar *s, size_t slen,
|
|||||||
|
|
||||||
|
|
||||||
static size_t
|
static size_t
|
||||||
my_casedn_utf32(CHARSET_INFO *cs, char *src, size_t srclen,
|
my_casedn_utf32(CHARSET_INFO *cs, const char *src, size_t srclen,
|
||||||
char *dst __attribute__((unused)),
|
char *dst, size_t dstlen)
|
||||||
size_t dstlen __attribute__((unused)))
|
|
||||||
{
|
{
|
||||||
my_wc_t wc;
|
my_wc_t wc;
|
||||||
int res;
|
int res;
|
||||||
char *srcend= src + srclen;
|
const char *srcend= src + srclen;
|
||||||
|
char *dstend= dst + dstlen;
|
||||||
MY_UNICASE_INFO *uni_plane= cs->caseinfo;
|
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)
|
while ((res= my_utf32_uni(cs, &wc, (uchar*) src, (uchar*) srcend)) > 0)
|
||||||
{
|
{
|
||||||
my_tolower_utf32(uni_plane,&wc);
|
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;
|
break;
|
||||||
src+= res;
|
src+= res;
|
||||||
|
dst+= res;
|
||||||
}
|
}
|
||||||
return srclen;
|
return srclen;
|
||||||
}
|
}
|
||||||
@ -2781,23 +2785,24 @@ my_tosort_ucs2(MY_UNICASE_INFO *uni_plane, my_wc_t *wc)
|
|||||||
*wc= page[*wc & 0xFF].sort;
|
*wc= page[*wc & 0xFF].sort;
|
||||||
}
|
}
|
||||||
|
|
||||||
static size_t my_caseup_ucs2(CHARSET_INFO *cs, char *src, size_t srclen,
|
static size_t my_caseup_ucs2(CHARSET_INFO *cs, const char *src, size_t srclen,
|
||||||
char *dst __attribute__((unused)),
|
char *dst, size_t dstlen)
|
||||||
size_t dstlen __attribute__((unused)))
|
|
||||||
{
|
{
|
||||||
my_wc_t wc;
|
my_wc_t wc;
|
||||||
int res;
|
int res;
|
||||||
char *srcend= src + srclen;
|
const char *srcend= src + srclen;
|
||||||
|
char *dstend= dst + dstlen;
|
||||||
MY_UNICASE_INFO *uni_plane= cs->caseinfo;
|
MY_UNICASE_INFO *uni_plane= cs->caseinfo;
|
||||||
DBUG_ASSERT(src == dst && srclen == dstlen);
|
DBUG_ASSERT(srclen <= dstlen);
|
||||||
|
|
||||||
while ((src < srcend) &&
|
while ((src < srcend) &&
|
||||||
(res= my_ucs2_uni(cs, &wc, (uchar *)src, (uchar*) srcend)) > 0)
|
(res= my_ucs2_uni(cs, &wc, (uchar *)src, (uchar*) srcend)) > 0)
|
||||||
{
|
{
|
||||||
my_toupper_ucs2(uni_plane, &wc);
|
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;
|
break;
|
||||||
src+= res;
|
src+= res;
|
||||||
|
dst+= res;
|
||||||
}
|
}
|
||||||
return srclen;
|
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,
|
static size_t my_casedn_ucs2(CHARSET_INFO *cs, const char *src, size_t srclen,
|
||||||
char *dst __attribute__((unused)),
|
char *dst, size_t dstlen)
|
||||||
size_t dstlen __attribute__((unused)))
|
|
||||||
{
|
{
|
||||||
my_wc_t wc;
|
my_wc_t wc;
|
||||||
int res;
|
int res;
|
||||||
char *srcend= src + srclen;
|
const char *srcend= src + srclen;
|
||||||
|
char *dstend= dst + dstlen;
|
||||||
MY_UNICASE_INFO *uni_plane= cs->caseinfo;
|
MY_UNICASE_INFO *uni_plane= cs->caseinfo;
|
||||||
DBUG_ASSERT(src == dst && srclen == dstlen);
|
DBUG_ASSERT(srclen <= dstlen);
|
||||||
|
|
||||||
while ((src < srcend) &&
|
while ((src < srcend) &&
|
||||||
(res= my_ucs2_uni(cs, &wc, (uchar*) src, (uchar*) srcend)) > 0)
|
(res= my_ucs2_uni(cs, &wc, (uchar*) src, (uchar*) srcend)) > 0)
|
||||||
{
|
{
|
||||||
my_tolower_ucs2(uni_plane, &wc);
|
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;
|
break;
|
||||||
src+= res;
|
src+= res;
|
||||||
|
dst+= res;
|
||||||
}
|
}
|
||||||
return srclen;
|
return srclen;
|
||||||
}
|
}
|
||||||
|
@ -67156,12 +67156,12 @@ get_case_info_for_ch(CHARSET_INFO *cs, uint plane, uint page, uint offs)
|
|||||||
*/
|
*/
|
||||||
static size_t
|
static size_t
|
||||||
my_casefold_ujis(CHARSET_INFO *cs,
|
my_casefold_ujis(CHARSET_INFO *cs,
|
||||||
char *src, size_t srclen,
|
const char *src, size_t srclen,
|
||||||
char *dst, size_t dstlen __attribute__((unused)),
|
char *dst, size_t dstlen __attribute__((unused)),
|
||||||
const uchar * const map,
|
const uchar * const map,
|
||||||
size_t is_upper)
|
size_t is_upper)
|
||||||
{
|
{
|
||||||
char *srcend= src + srclen, *dst0= dst;
|
const char *srcend= src + srclen, *dst0= dst;
|
||||||
|
|
||||||
while (src < srcend)
|
while (src < srcend)
|
||||||
{
|
{
|
||||||
@ -67203,7 +67203,7 @@ my_casefold_ujis(CHARSET_INFO *cs,
|
|||||||
LOWER()
|
LOWER()
|
||||||
*/
|
*/
|
||||||
size_t
|
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)
|
char *dst, size_t dstlen)
|
||||||
{
|
{
|
||||||
DBUG_ASSERT(dstlen >= srclen * cs->casedn_multiply);
|
DBUG_ASSERT(dstlen >= srclen * cs->casedn_multiply);
|
||||||
@ -67216,7 +67216,7 @@ my_casedn_ujis(CHARSET_INFO * cs, char *src, size_t srclen,
|
|||||||
UPPER()
|
UPPER()
|
||||||
*/
|
*/
|
||||||
size_t
|
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)
|
char *dst, size_t dstlen)
|
||||||
{
|
{
|
||||||
DBUG_ASSERT(dstlen >= srclen * cs->caseup_multiply);
|
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;
|
*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)
|
char *dst, size_t dstlen)
|
||||||
{
|
{
|
||||||
my_wc_t wc;
|
my_wc_t wc;
|
||||||
int srcres, dstres;
|
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;
|
MY_UNICASE_INFO *uni_plane= cs->caseinfo;
|
||||||
DBUG_ASSERT(src != dst || cs->caseup_multiply == 1);
|
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)
|
char *dst, size_t dstlen)
|
||||||
{
|
{
|
||||||
my_wc_t wc;
|
my_wc_t wc;
|
||||||
int srcres, dstres;
|
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;
|
MY_UNICASE_INFO *uni_plane= cs->caseinfo;
|
||||||
DBUG_ASSERT(src != dst || cs->casedn_multiply == 1);
|
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
|
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)
|
char *dst, size_t dstlen)
|
||||||
{
|
{
|
||||||
my_wc_t wc;
|
my_wc_t wc;
|
||||||
int srcres, dstres;
|
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;
|
MY_UNICASE_INFO *uni_plane= cs->caseinfo;
|
||||||
DBUG_ASSERT(src != dst || cs->caseup_multiply == 1);
|
DBUG_ASSERT(src != dst || cs->caseup_multiply == 1);
|
||||||
|
|
||||||
@ -7600,12 +7603,13 @@ my_caseup_str_utf8mb4(CHARSET_INFO *cs, char *src)
|
|||||||
|
|
||||||
static size_t
|
static size_t
|
||||||
my_casedn_utf8mb4(CHARSET_INFO *cs,
|
my_casedn_utf8mb4(CHARSET_INFO *cs,
|
||||||
char *src, size_t srclen,
|
const char *src, size_t srclen,
|
||||||
char *dst, size_t dstlen)
|
char *dst, size_t dstlen)
|
||||||
{
|
{
|
||||||
my_wc_t wc;
|
my_wc_t wc;
|
||||||
int srcres, dstres;
|
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;
|
MY_UNICASE_INFO *uni_plane= cs->caseinfo;
|
||||||
DBUG_ASSERT(src != dst || cs->casedn_multiply == 1);
|
DBUG_ASSERT(src != dst || cs->casedn_multiply == 1);
|
||||||
|
|
||||||
|
@ -41,12 +41,14 @@ ELSE()
|
|||||||
SET(inst_location ${INSTALL_SUPPORTFILESDIR})
|
SET(inst_location ${INSTALL_SUPPORTFILESDIR})
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
|
IF (NOT WITHOUT_SERVER)
|
||||||
FOREACH(inifile my-huge my-innodb-heavy-4G my-large my-medium my-small)
|
FOREACH(inifile my-huge my-innodb-heavy-4G my-large my-medium my-small)
|
||||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${inifile}.cnf.sh
|
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${inifile}.cnf.sh
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/${inifile}.${ini_file_extension} @ONLY)
|
${CMAKE_CURRENT_BINARY_DIR}/${inifile}.${ini_file_extension} @ONLY)
|
||||||
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${inifile}.${ini_file_extension}
|
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${inifile}.${ini_file_extension}
|
||||||
DESTINATION ${inst_location} COMPONENT IniFiles)
|
DESTINATION ${inst_location} COMPONENT IniFiles)
|
||||||
ENDFOREACH()
|
ENDFOREACH()
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
IF(WITH_WSREP)
|
IF(WITH_WSREP)
|
||||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/wsrep.cnf.sh
|
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/wsrep.cnf.sh
|
||||||
|
Loading…
x
Reference in New Issue
Block a user