summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOleksandr Byelkin <sanja@mariadb.com>2021-10-01 11:00:29 +0200
committerOleksandr Byelkin <sanja@mariadb.com>2021-10-01 11:00:29 +0200
commit8ceda492cc565a3650a1ea3ce1608d503970ee29 (patch)
tree2f2f797e02218af62a1e9b9367a7e46488224984
parent8dd4794c4e11b8790fadf0c203bcd118e7b755e8 (diff)
downloadmariadb-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.result13
-rw-r--r--mysql-test/main/delete.test16
-rw-r--r--sql/uniques.cc6
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));