diff options
author | Oleksandr Byelkin <sanja@mariadb.com> | 2021-10-01 11:00:29 +0200 |
---|---|---|
committer | Oleksandr Byelkin <sanja@mariadb.com> | 2021-10-01 11:00:29 +0200 |
commit | 8ceda492cc565a3650a1ea3ce1608d503970ee29 (patch) | |
tree | 2f2f797e02218af62a1e9b9367a7e46488224984 | |
parent | 8dd4794c4e11b8790fadf0c203bcd118e7b755e8 (diff) | |
download | mariadb-git-bb-10.7-MDEV-26459.tar.gz |
MDEV-26459 Assertion `block_size <= 0xFFFFFFFFL' failed in calculate_block_sizes for 10.7 onlybb-10.7-MDEV-26459
Limit default allocation block in tree of Unique class
-rw-r--r-- | mysql-test/main/delete.result | 13 | ||||
-rw-r--r-- | mysql-test/main/delete.test | 16 | ||||
-rw-r--r-- | sql/uniques.cc | 6 |
3 files changed, 33 insertions, 2 deletions
diff --git a/mysql-test/main/delete.result b/mysql-test/main/delete.result index ed3683d52f9..8d041d527ef 100644 --- a/mysql-test/main/delete.result +++ b/mysql-test/main/delete.result @@ -525,3 +525,16 @@ DELETE v2 FROM v2; ERROR HY000: Can not delete from join view 'test.v2' DROP VIEW v2, v1; DROP TABLE t1, t2; +# +# MDEV-26459: Assertion `block_size <= 0xFFFFFFFFL' failed +# in calculate_block_sizes for 10.7 only +# +SET @sort_buffer_size_save= @@sort_buffer_size; +SET sort_buffer_size=1125899906842624; +CREATE TABLE t1 (a INT,b CHAR,KEY(a,b)); +DELETE a1 FROM t1 AS a1,t1 AS a2 WHERE a1.a=a2.a; +DROP TABLE t1; +SET sort_buffer_size= @sort_buffer_size_save; +# +# End of 10.7 tests +# diff --git a/mysql-test/main/delete.test b/mysql-test/main/delete.test index c82420640c2..26af644bf1d 100644 --- a/mysql-test/main/delete.test +++ b/mysql-test/main/delete.test @@ -582,3 +582,19 @@ DELETE v2 FROM v2; DROP VIEW v2, v1; DROP TABLE t1, t2; + +--echo # +--echo # MDEV-26459: Assertion `block_size <= 0xFFFFFFFFL' failed +--echo # in calculate_block_sizes for 10.7 only +--echo # + +SET @sort_buffer_size_save= @@sort_buffer_size; +SET sort_buffer_size=1125899906842624; +CREATE TABLE t1 (a INT,b CHAR,KEY(a,b)); +DELETE a1 FROM t1 AS a1,t1 AS a2 WHERE a1.a=a2.a; +DROP TABLE t1; +SET sort_buffer_size= @sort_buffer_size_save; + +--echo # +--echo # End of 10.7 tests +--echo # diff --git a/sql/uniques.cc b/sql/uniques.cc index a0cebe3e4dd..0c19492517c 100644 --- a/sql/uniques.cc +++ b/sql/uniques.cc @@ -90,8 +90,10 @@ Unique::Unique(qsort_cmp2 comp_func, void * comp_func_fixed_arg, if (min_dupl_count_arg) full_size+= sizeof(element_count); with_counters= MY_TEST(min_dupl_count_arg); - init_tree(&tree, (max_in_memory_size / 16), 0, size, comp_func, - NULL, comp_func_fixed_arg, MYF(MY_THREAD_SPECIFIC)); + + init_tree(&tree, MY_MIN(max_in_memory_size / 16, UINT_MAX32), + 0, size, comp_func, NULL, comp_func_fixed_arg, + MYF(MY_THREAD_SPECIFIC)); /* If the following fail's the next add will also fail */ my_init_dynamic_array(PSI_INSTRUMENT_ME, &file_ptrs, sizeof(Merge_chunk), 16, 16, MYF(MY_THREAD_SPECIFIC)); |