summaryrefslogtreecommitdiff
path: root/mysql-test/main/mdev-504.test
blob: 551c21c37d01593c5cd6436fca982227be63bfbe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
--source include/not_valgrind.inc
--source include/no_protocol.inc

SET GLOBAL net_write_timeout = 900; 

CREATE TABLE A (
  pk INTEGER AUTO_INCREMENT PRIMARY KEY,
  fdate DATE
) ENGINE=MyISAM;

--delimiter |

CREATE PROCEDURE p_analyze()
BEGIN
  DECLARE attempts INTEGER DEFAULT 100;
  wl_loop: WHILE attempts > 0 DO
    ANALYZE TABLE A;
    SET attempts = attempts - 1;
  END WHILE wl_loop;
END |

CREATE FUNCTION rnd3() RETURNS INT
BEGIN
  RETURN ROUND(3 * RAND() + 0.5);
END |

--delimiter ;

SET GLOBAL use_stat_tables = PREFERABLY;  

--let $trial = 100

--disable_query_log
--disable_result_log
--disable_warnings
while ($trial)
{

  --connect (con1,localhost,root,,)
  --send CALL p_analyze()

  --connect (con2,localhost,root,,)
  --send CALL p_analyze()

  --let $run = 100

  while ($run)
  {
    --connect (con3,localhost,root,,)
  
    let $query = `SELECT CASE rnd3() 
      WHEN 1 THEN 'INSERT INTO A (pk) VALUES (NULL)'
      WHEN 2 THEN 'DELETE FROM A LIMIT 1'
      ELSE 'UPDATE IGNORE A SET fdate = 2 LIMIT 1' END`;
    --eval $query
    --disconnect con3
    --dec $run
  }

  --connection con2
  --reap
  --disconnect con2
  --connection con1
  --reap
  --disconnect con1

  --dec $trial
}

--enable_query_log
--enable_result_log
--enable_warnings

# Cleanup
--connection default
DROP TABLE A;
DROP PROCEDURE p_analyze;
DROP FUNCTION rnd3;
SET GLOBAL use_stat_tables = DEFAULT;
SET GLOBAL net_write_timeout = DEFAULT;