summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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));