Skip to content

Commit 71d4ecf

Browse files
committed
Merge 10.6 into 10.7
2 parents 45a376d + 1f02280 commit 71d4ecf

File tree

160 files changed

+4779
-1677
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

160 files changed

+4779
-1677
lines changed

.gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,11 @@
1010
.ninja_*
1111
*.mri
1212
*.mri.tpl
13+
/.cproject
14+
/.project
1315
.gdb_history
1416
.vs/
17+
/.settings/
1518
errmsg.sys
1619
typescript
1720
_CPack_Packages

CMakeLists.txt

+4
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,10 @@ IF(DISABLE_SHARED)
174174
SET(WITHOUT_DYNAMIC_PLUGINS 1)
175175
ENDIF()
176176
OPTION(ENABLED_PROFILING "Enable profiling" ON)
177+
OPTION(ENABLED_JSON_WRITER_CONSISTENCY_CHECKS "Enable Json_writer_object / Json_writer_array checking to produce consistent JSON output" OFF)
178+
IF(ENABLED_JSON_WRITER_CONSISTENCY_CHECKS)
179+
ADD_DEFINITIONS(-DENABLED_JSON_WRITER_CONSISTENCY_CHECKS)
180+
ENDIF()
177181
OPTION(WITHOUT_SERVER "Build only the client library and clients" OFF)
178182
IF(UNIX)
179183
OPTION(WITH_VALGRIND "Valgrind instrumentation" OFF)

cmake/pcre.cmake

+10-9
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,22 @@ MACRO(BUNDLE_PCRE2)
1111
FOREACH(lib pcre2-posix pcre2-8)
1212
ADD_LIBRARY(${lib} STATIC IMPORTED GLOBAL)
1313
ADD_DEPENDENCIES(${lib} pcre2)
14+
15+
GET_PROPERTY(MULTICONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
16+
IF(MULTICONFIG)
17+
SET(intdir "${CMAKE_CFG_INTDIR}/")
18+
ELSE()
19+
SET(intdir)
20+
ENDIF()
21+
22+
SET(file ${dir}/src/pcre2-build/${intdir}${CMAKE_STATIC_LIBRARY_PREFIX}${lib}${CMAKE_STATIC_LIBRARY_SUFFIX})
23+
1424
IF(WIN32)
1525
# Debug libary name.
1626
# Same condition as in pcre2 CMakeLists.txt that adds "d"
17-
GET_PROPERTY(MULTICONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
18-
IF(MULTICONFIG)
19-
SET(intdir "${CMAKE_CFG_INTDIR}/")
20-
ELSE()
21-
SET(intdir)
22-
ENDIF()
23-
24-
SET(file ${dir}/src/pcre2-build/${intdir}${CMAKE_STATIC_LIBRARY_PREFIX}${lib}${CMAKE_STATIC_LIBRARY_SUFFIX})
2527
SET(file_d ${dir}/src/pcre2-build/${intdir}${CMAKE_STATIC_LIBRARY_PREFIX}${lib}d${CMAKE_STATIC_LIBRARY_SUFFIX})
2628
SET_TARGET_PROPERTIES(${lib} PROPERTIES IMPORTED_LOCATION_DEBUG ${file_d})
2729
ELSE()
28-
SET(file ${dir}/src/pcre2-build/${CMAKE_STATIC_LIBRARY_PREFIX}${lib}${CMAKE_STATIC_LIBRARY_SUFFIX})
2930
SET(file_d)
3031
ENDIF()
3132
SET(byproducts ${byproducts} BUILD_BYPRODUCTS ${file} ${file_d})

configure.cmake

+19-1
Original file line numberDiff line numberDiff line change
@@ -867,7 +867,25 @@ int main()
867867
long long int *ptr= &var;
868868
return (int)__atomic_load_n(ptr, __ATOMIC_SEQ_CST);
869869
}"
870-
HAVE_GCC_C11_ATOMICS)
870+
HAVE_GCC_C11_ATOMICS_WITHOUT_LIBATOMIC)
871+
IF (HAVE_GCC_C11_ATOMICS_WITHOUT_LIBATOMIC)
872+
SET(HAVE_GCC_C11_ATOMICS True)
873+
ELSE()
874+
SET(OLD_CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
875+
LIST(APPEND CMAKE_REQUIRED_LIBRARIES "atomic")
876+
CHECK_CXX_SOURCE_COMPILES("
877+
int main()
878+
{
879+
long long int var= 1;
880+
long long int *ptr= &var;
881+
return (int)__atomic_load_n(ptr, __ATOMIC_SEQ_CST);
882+
}"
883+
HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
884+
IF(HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
885+
SET(HAVE_GCC_C11_ATOMICS True)
886+
ENDIF()
887+
SET(CMAKE_REQUIRED_LIBRARIES ${OLD_CMAKE_REQUIRED_LIBRARIES})
888+
ENDIF()
871889

872890
IF(WITH_VALGRIND)
873891
SET(HAVE_valgrind 1)

libmariadb

mysql-test/main/ctype_utf16le.result

+33
Original file line numberDiff line numberDiff line change
@@ -3000,5 +3000,38 @@ DROP TABLE t1;
30003000
#
30013001
SET DEFAULT_STORAGE_ENGINE=Default;
30023002
#
3003+
# MDEV-23408 Wrong result upon query from I_S and further Assertion `!alias_arg || strlen(alias_arg->str) == alias_arg->length' failed with certain connection charset
3004+
#
3005+
SET NAMES utf8;
3006+
SET SESSION character_set_connection= utf16le;
3007+
CREATE TABLE kv (v TEXT CHARACTER SET latin1);
3008+
CREATE TABLE t (a INT);
3009+
CREATE VIEW v AS SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1';
3010+
LOAD DATA INFILE 'MYSQLD_DATADIR/test/v.frm' REPLACE INTO TABLE kv CHARACTER SET latin1;
3011+
SELECT LOWER(v) FROM kv WHERE v LIKE _binary'query=%';
3012+
LOWER(v)
3013+
query=select `information_schema`.`tables`.`table_catalog` as `table_catalog`,`information_schema`.`tables`.`table_schema` as `table_schema`,`information_schema`.`tables`.`table_name` as `table_name`,`information_schema`.`tables`.`table_type` as `table_type`,`information_schema`.`tables`.`engine` as `engine`,`information_schema`.`tables`.`version` as `version`,`information_schema`.`tables`.`row_format` as `row_format`,`information_schema`.`tables`.`table_rows` as `table_rows`,`information_schema`.`tables`.`avg_row_length` as `avg_row_length`,`information_schema`.`tables`.`data_length` as `data_length`,`information_schema`.`tables`.`max_data_length` as `max_data_length`,`information_schema`.`tables`.`index_length` as `index_length`,`information_schema`.`tables`.`data_free` as `data_free`,`information_schema`.`tables`.`auto_increment` as `auto_increment`,`information_schema`.`tables`.`create_time` as `create_time`,`information_schema`.`tables`.`update_time` as `update_time`,`information_schema`.`tables`.`check_time` as `check_time`,`information_schema`.`tables`.`table_collation` as `table_collation`,`information_schema`.`tables`.`checksum` as `checksum`,`information_schema`.`tables`.`create_options` as `create_options`,`information_schema`.`tables`.`table_comment` as `table_comment`,`information_schema`.`tables`.`max_index_length` as `max_index_length`,`information_schema`.`tables`.`temporary` as `temporary` from `information_schema`.`tables` where `information_schema`.`tables`.`table_name` = 't1'
3014+
TRUNCATE TABLE kv;
3015+
SELECT * FROM v;
3016+
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE ENGINE VERSION ROW_FORMAT TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE AUTO_INCREMENT CREATE_TIME UPDATE_TIME CHECK_TIME TABLE_COLLATION CHECKSUM CREATE_OPTIONS TABLE_COMMENT MAX_INDEX_LENGTH TEMPORARY
3017+
LOCK TABLE t WRITE;
3018+
UNLOCK TABLES;
3019+
DROP VIEW v;
3020+
DROP TABLE t;
3021+
DROP TABLE kv;
3022+
CREATE TABLE t (a INT);
3023+
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME=CONCAT('t',0x00,'1');
3024+
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE ENGINE VERSION ROW_FORMAT TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE AUTO_INCREMENT CREATE_TIME UPDATE_TIME CHECK_TIME TABLE_COLLATION CHECKSUM CREATE_OPTIONS TABLE_COMMENT MAX_INDEX_LENGTH TEMPORARY
3025+
LOCK TABLE t WRITE;
3026+
UNLOCK TABLES;
3027+
DROP TABLE t;
3028+
CREATE TABLE t (a INT);
3029+
SELECT TABLE_NAME, HEX(TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME=CONCAT('t',0x00,'1');
3030+
TABLE_NAME HEX(TABLE_NAME)
3031+
SELECT TABLE_NAME, TABLE_SCHEMA, HEX(TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA=CONCAT('test',0x00,'1');
3032+
TABLE_NAME TABLE_SCHEMA HEX(TABLE_NAME)
3033+
DROP TABLE t;
3034+
SET NAMES utf8;
3035+
#
30033036
# End of 10.2 tests
30043037
#

mysql-test/main/ctype_utf16le.test

+37
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
-- source include/have_utf32.inc
44
-- source include/have_utf8mb4.inc
55

6+
let $MYSQLD_DATADIR= `select @@datadir`;
67

78
SET TIME_ZONE='+03:00';
89

@@ -810,6 +811,42 @@ let $coll='utf16le_nopad_bin';
810811
let $coll_pad='utf16le_bin';
811812
--source include/ctype_pad_all_engines.inc
812813

814+
--echo #
815+
--echo # MDEV-23408 Wrong result upon query from I_S and further Assertion `!alias_arg || strlen(alias_arg->str) == alias_arg->length' failed with certain connection charset
816+
--echo #
817+
818+
819+
820+
SET NAMES utf8;
821+
SET SESSION character_set_connection= utf16le;
822+
823+
CREATE TABLE kv (v TEXT CHARACTER SET latin1);
824+
CREATE TABLE t (a INT);
825+
CREATE VIEW v AS SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1';
826+
--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
827+
eval LOAD DATA INFILE '$MYSQLD_DATADIR/test/v.frm' REPLACE INTO TABLE kv CHARACTER SET latin1;
828+
SELECT LOWER(v) FROM kv WHERE v LIKE _binary'query=%';
829+
TRUNCATE TABLE kv;
830+
SELECT * FROM v;
831+
LOCK TABLE t WRITE;
832+
UNLOCK TABLES;
833+
DROP VIEW v;
834+
DROP TABLE t;
835+
DROP TABLE kv;
836+
837+
CREATE TABLE t (a INT);
838+
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME=CONCAT('t',0x00,'1');
839+
LOCK TABLE t WRITE;
840+
UNLOCK TABLES;
841+
DROP TABLE t;
842+
843+
CREATE TABLE t (a INT);
844+
SELECT TABLE_NAME, HEX(TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME=CONCAT('t',0x00,'1');
845+
SELECT TABLE_NAME, TABLE_SCHEMA, HEX(TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA=CONCAT('test',0x00,'1');
846+
DROP TABLE t;
847+
848+
SET NAMES utf8;
849+
813850
--echo #
814851
--echo # End of 10.2 tests
815852
--echo #

mysql-test/main/ctype_utf8.result

+17
Original file line numberDiff line numberDiff line change
@@ -11244,6 +11244,23 @@ DROP TABLE t1;
1124411244
#
1124511245
SET DEFAULT_STORAGE_ENGINE=Default;
1124611246
#
11247+
# MDEV-23408 Wrong result upon query from I_S and further Assertion `!alias_arg || strlen(alias_arg->str) == alias_arg->length' failed with certain connection charset
11248+
#
11249+
SET NAMES utf8;
11250+
SET SESSION character_set_connection=latin1;
11251+
CREATE VIEW v1 AS SELECT 'ä' AS c1;
11252+
SELECT c1, HEX(c1) FROM v1;
11253+
c1 HEX(c1)
11254+
ä E4
11255+
CREATE TABLE kv (v BLOB);
11256+
LOAD DATA INFILE 'MYSQLD_DATADIR/test/v1.frm' REPLACE INTO TABLE kv;
11257+
SELECT * FROM kv WHERE v LIKE _binary'query=%';
11258+
v
11259+
query=select 'ä' AS `c1`
11260+
DROP TABLE kv;
11261+
DROP VIEW v1;
11262+
SET NAMES utf8;
11263+
#
1124711264
# End of 10.2 tests
1124811265
#
1124911266
#

mysql-test/main/ctype_utf8.test

+18
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
# Tests with the utf8 character set
33
#
44

5+
let $MYSQLD_DATADIR= `select @@datadir`;
6+
57
let collation=utf8mb3_unicode_ci;
68
--source include/have_collation.inc
79
SET TIME_ZONE='+03:00';
@@ -2166,6 +2168,22 @@ let $coll='utf8_nopad_bin';
21662168
let $coll_pad='utf8_bin';
21672169
--source include/ctype_pad_all_engines.inc
21682170

2171+
--echo #
2172+
--echo # MDEV-23408 Wrong result upon query from I_S and further Assertion `!alias_arg || strlen(alias_arg->str) == alias_arg->length' failed with certain connection charset
2173+
--echo #
2174+
2175+
SET NAMES utf8;
2176+
SET SESSION character_set_connection=latin1;
2177+
CREATE VIEW v1 AS SELECT 'ä' AS c1;
2178+
SELECT c1, HEX(c1) FROM v1;
2179+
CREATE TABLE kv (v BLOB);
2180+
--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
2181+
eval LOAD DATA INFILE '$MYSQLD_DATADIR/test/v1.frm' REPLACE INTO TABLE kv;
2182+
SELECT * FROM kv WHERE v LIKE _binary'query=%';
2183+
DROP TABLE kv;
2184+
DROP VIEW v1;
2185+
SET NAMES utf8;
2186+
21692187
--echo #
21702188
--echo # End of 10.2 tests
21712189
--echo #

mysql-test/main/func_json.result

+6
Original file line numberDiff line numberDiff line change
@@ -934,6 +934,12 @@ CAST(JSON_EXTRACT('{"x":false}', '$.x') AS DECIMAL) AS cd;
934934
cf cd
935935
0 0
936936
#
937+
# MDEV-24585 Assertion `je->s.cs == nice_js->charset()' failed in json_nice.
938+
#
939+
SELECT JSON_REPLACE( JSON_DETAILED('["x"]'), '$.a', 'xx' );
940+
JSON_REPLACE( JSON_DETAILED('["x"]'), '$.a', 'xx' )
941+
["x"]
942+
#
937943
# End of 10.2 tests
938944
#
939945
#

mysql-test/main/func_json.test

+6
Original file line numberDiff line numberDiff line change
@@ -551,6 +551,12 @@ SELECT
551551
CAST(JSON_EXTRACT('{"x":false}', '$.x') AS DECIMAL) AS cd;
552552

553553

554+
--echo #
555+
--echo # MDEV-24585 Assertion `je->s.cs == nice_js->charset()' failed in json_nice.
556+
--echo #
557+
558+
SELECT JSON_REPLACE( JSON_DETAILED('["x"]'), '$.a', 'xx' );
559+
554560
--echo #
555561
--echo # End of 10.2 tests
556562
--echo #

mysql-test/main/information_schema.result

+20
Original file line numberDiff line numberDiff line change
@@ -2374,6 +2374,26 @@ SELECT * FROM v LIMIT ROWS EXAMINED 9;
23742374
ERROR HY000: Sort aborted:
23752375
DROP VIEW v;
23762376
#
2377+
# MDEV-23408 Wrong result upon query from I_S and further Assertion `!alias_arg || strlen(alias_arg->str) == alias_arg->length' failed with certain connection charset
2378+
#
2379+
CREATE TABLE t (a INT);
2380+
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME=CONCAT('t',0x00,'1');
2381+
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE ENGINE VERSION ROW_FORMAT TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE AUTO_INCREMENT CREATE_TIME UPDATE_TIME CHECK_TIME TABLE_COLLATION CHECKSUM CREATE_OPTIONS TABLE_COMMENT MAX_INDEX_LENGTH TEMPORARY
2382+
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA=CONCAT('test',0x00,'1');
2383+
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE ENGINE VERSION ROW_FORMAT TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE AUTO_INCREMENT CREATE_TIME UPDATE_TIME CHECK_TIME TABLE_COLLATION CHECKSUM CREATE_OPTIONS TABLE_COMMENT MAX_INDEX_LENGTH TEMPORARY
2384+
DROP TABLE t;
2385+
CREATE TABLE `a/~.b` (a INT);
2386+
SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='a/~.b';
2387+
TABLE_SCHEMA TABLE_NAME
2388+
test a/~.b
2389+
DROP TABLE `a/~.b`;
2390+
CREATE DATABASE `a/~.b`;
2391+
CREATE TABLE `a/~.b`.t1 (a INT);
2392+
SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='a/~.b';
2393+
TABLE_SCHEMA TABLE_NAME
2394+
a/~.b t1
2395+
DROP DATABASE `a/~.b`;
2396+
#
23772397
# End of 10.2 Test
23782398
#
23792399
#

mysql-test/main/information_schema.test

+21
Original file line numberDiff line numberDiff line change
@@ -1949,6 +1949,27 @@ SELECT * FROM v LIMIT ROWS EXAMINED 9;
19491949

19501950
DROP VIEW v;
19511951

1952+
--echo #
1953+
--echo # MDEV-23408 Wrong result upon query from I_S and further Assertion `!alias_arg || strlen(alias_arg->str) == alias_arg->length' failed with certain connection charset
1954+
--echo #
1955+
1956+
# Expect empty sets if requested TABLE_NAME or TABLE_SCHEMA with zero bytes
1957+
CREATE TABLE t (a INT);
1958+
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME=CONCAT('t',0x00,'1');
1959+
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA=CONCAT('test',0x00,'1');
1960+
DROP TABLE t;
1961+
1962+
# Make sure check_table_name() does not reject special characters
1963+
CREATE TABLE `a/~.b` (a INT);
1964+
SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='a/~.b';
1965+
DROP TABLE `a/~.b`;
1966+
1967+
# Make sure check_db_name() does not reject special characters
1968+
CREATE DATABASE `a/~.b`;
1969+
CREATE TABLE `a/~.b`.t1 (a INT);
1970+
SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='a/~.b';
1971+
DROP DATABASE `a/~.b`;
1972+
19521973
--echo #
19531974
--echo # End of 10.2 Test
19541975
--echo #
+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
--innodb-page-size=8K

mysql-test/main/long_unique_innodb.result

+3
Original file line numberDiff line numberDiff line change
@@ -131,3 +131,6 @@ connection default;
131131
drop table t1;
132132
disconnect con1;
133133
disconnect con2;
134+
# MDEV-20131 Assertion `!pk->has_virtual()' failed
135+
create table t1 (a text, primary key(a(1871))) engine=innodb;
136+
ERROR 42000: Specified key was too long; max key length is 1536 bytes

mysql-test/main/long_unique_innodb.test

+5
Original file line numberDiff line numberDiff line change
@@ -138,3 +138,8 @@ connection default;
138138
drop table t1;
139139
disconnect con1;
140140
disconnect con2;
141+
142+
--echo # MDEV-20131 Assertion `!pk->has_virtual()' failed
143+
144+
--error ER_TOO_LONG_KEY
145+
create table t1 (a text, primary key(a(1871))) engine=innodb;

mysql-test/main/mysql-metadata.result

+1-1
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ Database: ``
7979
Table: ``
8080
Org_table: ``
8181
Type: LONG_BLOB (format=json)
82-
Collation: binary (63)
82+
Collation: latin1_swedish_ci (8)
8383
Length: 4294967295
8484
Max_length: 0
8585
Decimals: 0

0 commit comments

Comments
 (0)