Skip to content

Commit e98a5e1

Browse files
committed
MDEV-23955 main.multi_update_big times out
Copying generated data from the sequence engine should be faster than copying from MyISAM to MyISAM. Reviewed by: Sergei Petrunia
1 parent 4a97e25 commit e98a5e1

File tree

4 files changed

+20
-73
lines changed

4 files changed

+20
-73
lines changed

mysql-test/r/multi_update_big.result

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
DROP TABLE IF EXISTS t1,t2;
21
CREATE TABLE t1 ( a INT NOT NULL, b INT NOT NULL) ;
3-
# The protocolling of many inserts into t1 is suppressed.
2+
INSERT INTO t1 SELECT seq,seq FROM seq_1_to_2097152;
43
ALTER TABLE t1 ADD INDEX i1(a);
54
DELETE FROM t1 WHERE a > 2000000;
65
CREATE TABLE t2 LIKE t1;

mysql-test/r/sum_distinct-big.result

Lines changed: 8 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -3,27 +3,7 @@ set @save_max_heap_table_size=@@max_heap_table_size;
33
set storage_engine=MYISAM;
44
CREATE TABLE t1 (id INTEGER);
55
CREATE TABLE t2 (id INTEGER);
6-
INSERT INTO t1 (id) VALUES (1), (1), (1),(1);
7-
INSERT INTO t1 (id) SELECT id FROM t1;
8-
/* 8 */
9-
INSERT INTO t1 (id) SELECT id FROM t1;
10-
/* 12 */
11-
INSERT INTO t1 (id) SELECT id FROM t1;
12-
/* 16 */
13-
INSERT INTO t1 (id) SELECT id FROM t1;
14-
/* 20 */
15-
INSERT INTO t1 (id) SELECT id FROM t1;
16-
/* 24 */
17-
INSERT INTO t1 SELECT id+1 FROM t1;
18-
INSERT INTO t1 SELECT id+2 FROM t1;
19-
INSERT INTO t1 SELECT id+4 FROM t1;
20-
INSERT INTO t1 SELECT id+8 FROM t1;
21-
INSERT INTO t1 SELECT id+16 FROM t1;
22-
INSERT INTO t1 SELECT id+32 FROM t1;
23-
INSERT INTO t1 SELECT id+64 FROM t1;
24-
INSERT INTO t1 SELECT id+128 FROM t1;
25-
INSERT INTO t1 SELECT id+256 FROM t1;
26-
INSERT INTO t1 SELECT id+512 FROM t1;
6+
INSERT INTO t1 SELECT b.seq FROM seq_1_to_128,seq_1_to_1024 b;
277
SELECT AVG(DISTINCT id) FROM t1 GROUP BY id % 13;
288
AVG(DISTINCT id)
299
513.5000
@@ -54,11 +34,9 @@ SUM(DISTINCT id)/COUNT(DISTINCT id)
5434
517.0000
5535
511.5000
5636
512.5000
57-
INSERT INTO t1 SELECT id+1024 FROM t1;
58-
INSERT INTO t1 SELECT id+2048 FROM t1;
59-
INSERT INTO t1 SELECT id+4096 FROM t1;
60-
INSERT INTO t1 SELECT id+8192 FROM t1;
61-
INSERT INTO t2 SELECT id FROM t1 ORDER BY id*rand();
37+
INSERT INTO t1 SELECT b.seq FROM seq_1_to_128,seq_1025_to_16384 b;
38+
INSERT INTO t2 SELECT b.seq FROM seq_1_to_128 a,seq_1_to_16384 b
39+
ORDER by (a.seq*0+b.seq)*rand();
6240
SELECT SUM(DISTINCT id) sm FROM t1;
6341
sm
6442
134225920
@@ -110,9 +88,10 @@ sm
11088
# (bug #56927)
11189
#
11290
SET max_heap_table_size=default;
113-
INSERT INTO t1 SELECT id+16384 FROM t1;
114-
DELETE FROM t2;
115-
INSERT INTO t2 SELECT id FROM t1 ORDER BY id*rand();
91+
INSERT INTO t1 SELECT b.seq FROM seq_1_to_128,seq_16385_to_32768 b;
92+
TRUNCATE t2;
93+
INSERT INTO t2 SELECT b.seq FROM seq_1_to_128 a,seq_1_to_32768 b
94+
ORDER BY (a.seq*0+b.seq)*rand();
11695
SELECT SUM(DISTINCT id) sm FROM t2;
11796
sm
11897
536887296

mysql-test/t/multi_update_big.test

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
--source include/long_test.inc
2+
--source include/have_sequence.inc
23

34
#
45
# Test of update statement that uses many tables.
@@ -40,25 +41,9 @@ if (`SELECT '$BIG_TEST' = '' AND $need_big = 1`)
4041
# Bug#1820 Rows not deleted from second table on multi-table delete
4142
#
4243

43-
--disable_warnings
44-
DROP TABLE IF EXISTS t1,t2;
45-
--enable_warnings
46-
4744
CREATE TABLE t1 ( a INT NOT NULL, b INT NOT NULL) ;
48-
--echo # The protocolling of many inserts into t1 is suppressed.
49-
--disable_query_log
50-
INSERT INTO t1 VALUES (1,1),(2,2),(3,3),(4,4);
51-
let $1=19;
52-
set @d=4;
53-
begin;
54-
while ($1)
55-
{
56-
eval INSERT INTO t1 SELECT a+@d,b+@d FROM t1;
57-
eval SET @d=@d*2;
58-
dec $1;
59-
}
60-
commit;
61-
--enable_query_log
45+
INSERT INTO t1 SELECT seq,seq FROM seq_1_to_2097152;
46+
6247
ALTER TABLE t1 ADD INDEX i1(a);
6348
DELETE FROM t1 WHERE a > 2000000;
6449
CREATE TABLE t2 LIKE t1;

mysql-test/t/sum_distinct-big.test

Lines changed: 8 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -19,32 +19,15 @@ set storage_engine=MYISAM;
1919
CREATE TABLE t1 (id INTEGER);
2020
CREATE TABLE t2 (id INTEGER);
2121

22-
INSERT INTO t1 (id) VALUES (1), (1), (1),(1);
23-
INSERT INTO t1 (id) SELECT id FROM t1; /* 8 */
24-
INSERT INTO t1 (id) SELECT id FROM t1; /* 12 */
25-
INSERT INTO t1 (id) SELECT id FROM t1; /* 16 */
26-
INSERT INTO t1 (id) SELECT id FROM t1; /* 20 */
27-
INSERT INTO t1 (id) SELECT id FROM t1; /* 24 */
28-
INSERT INTO t1 SELECT id+1 FROM t1;
29-
INSERT INTO t1 SELECT id+2 FROM t1;
30-
INSERT INTO t1 SELECT id+4 FROM t1;
31-
INSERT INTO t1 SELECT id+8 FROM t1;
32-
INSERT INTO t1 SELECT id+16 FROM t1;
33-
INSERT INTO t1 SELECT id+32 FROM t1;
34-
INSERT INTO t1 SELECT id+64 FROM t1;
35-
INSERT INTO t1 SELECT id+128 FROM t1;
36-
INSERT INTO t1 SELECT id+256 FROM t1;
37-
INSERT INTO t1 SELECT id+512 FROM t1;
22+
INSERT INTO t1 SELECT b.seq FROM seq_1_to_128,seq_1_to_1024 b;
3823

3924
# Just test that AVG(DISTINCT) is there
4025
SELECT AVG(DISTINCT id) FROM t1 GROUP BY id % 13;
4126
SELECT SUM(DISTINCT id)/COUNT(DISTINCT id) FROM t1 GROUP BY id % 13;
4227

43-
INSERT INTO t1 SELECT id+1024 FROM t1;
44-
INSERT INTO t1 SELECT id+2048 FROM t1;
45-
INSERT INTO t1 SELECT id+4096 FROM t1;
46-
INSERT INTO t1 SELECT id+8192 FROM t1;
47-
INSERT INTO t2 SELECT id FROM t1 ORDER BY id*rand();
28+
INSERT INTO t1 SELECT b.seq FROM seq_1_to_128,seq_1025_to_16384 b;
29+
INSERT INTO t2 SELECT b.seq FROM seq_1_to_128 a,seq_1_to_16384 b
30+
ORDER by (a.seq*0+b.seq)*rand();
4831

4932
# SELECT '++++++++++++++++++++++++++++++++++++++++++++++++++';
5033

@@ -74,9 +57,10 @@ SELECT SUM(DISTINCT id) sm FROM t1 GROUP BY id % 13;
7457

7558
SET max_heap_table_size=default;
7659

77-
INSERT INTO t1 SELECT id+16384 FROM t1;
78-
DELETE FROM t2;
79-
INSERT INTO t2 SELECT id FROM t1 ORDER BY id*rand();
60+
INSERT INTO t1 SELECT b.seq FROM seq_1_to_128,seq_16385_to_32768 b;
61+
TRUNCATE t2;
62+
INSERT INTO t2 SELECT b.seq FROM seq_1_to_128 a,seq_1_to_32768 b
63+
ORDER BY (a.seq*0+b.seq)*rand();
8064

8165
SELECT SUM(DISTINCT id) sm FROM t2;
8266

0 commit comments

Comments
 (0)