summaryrefslogtreecommitdiff
path: root/mysql-test/t/stack-crash.test
blob: e4feb95a332300c9acc98fe5c87015cd9a15609a (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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#
# Test to ensure that we don't get stack overflows
#

drop table if exists t1,t2;

#
# MDEV-5724
# Server crashes on SQL select containing more group by and left join
# statements
# This was because record_buffer was 300,000 bytes and caused stack overflow
#

CREATE TABLE t1 (
  `sspo_id` int(11) NOT NULL AUTO_INCREMENT,
  `sspo_uid` int(11) NOT NULL DEFAULT '0',
  `sspo_type` varchar(1) NOT NULL DEFAULT 'P',
  `sspo_text` longtext NOT NULL,
  `sspo_image` varchar(255) NOT NULL,
  `sspo_source` int(11) NOT NULL DEFAULT '0',
  `sspo_event_name` varchar(255) NOT NULL DEFAULT '',
  `sspo_event_location` varchar(255) NOT NULL DEFAULT '',
  `sspo_event_date` datetime DEFAULT NULL,
  `sspo_remote_title` varchar(255) NOT NULL,
  `sspo_remote_url` varchar(255) NOT NULL,
  `sspo_remote_desc` text NOT NULL,
  `sspo_remote_image` varchar(255) NOT NULL,
  `sspo_obj_status` varchar(1) NOT NULL DEFAULT 'A',
  `sspo_cr_date` datetime NOT NULL DEFAULT '1970-01-01 00:00:00',
  `sspo_cr_uid` int(11) NOT NULL DEFAULT '0',
  `sspo_lu_date` datetime NOT NULL DEFAULT '1970-01-01 00:00:00',
  `sspo_lu_uid` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`sspo_id`),
  KEY `post_uid` (`sspo_uid`,`sspo_cr_date`)
) AUTO_INCREMENT=30 DEFAULT CHARSET=utf8;
INSERT INTO t1 VALUES (1,2,'P','test1','',0,'','',NULL,'','','','','A','2013-09-30 00:19:32',2,'2013-09-30 00:19:32',2),(2,2,'P','bbb','',0,'','',NULL,'','','','','A','2013-10-02 15:06:35',2,'2013-10-02 15:06:35',2);

CREATE TABLE `t2` (
  `spoo_id` int(11) NOT NULL AUTO_INCREMENT,
  `spoo_user_type_id` int(11) NOT NULL DEFAULT '0',
  `spoo_uid` int(11) NOT NULL DEFAULT '0',
  `spoo_option_id` int(11) NOT NULL DEFAULT '0',
  `spoo_value` varchar(10000) NOT NULL,
  `spoo_obj_status` varchar(1) NOT NULL DEFAULT 'A',
  `spoo_cr_date` datetime NOT NULL DEFAULT '1970-01-01 00:00:00',
  `spoo_cr_uid` int(11) NOT NULL DEFAULT '0',
  `spoo_lu_date` datetime NOT NULL DEFAULT '1970-01-01 00:00:00',
  `spoo_lu_uid` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`spoo_id`),
  KEY `object_option_main_idx` (`spoo_user_type_id`,`spoo_uid`,`spoo_option_id`,`spoo_value`(255))
) AUTO_INCREMENT=107 DEFAULT CHARSET=utf8;
INSERT INTO `t2` VALUES (19,1,2,6,'Dortmund','A','2013-09-26 01:36:51',2,'2013-09-26 01:36:51',2),(20,1,2,8,'49','A','2013-09-26 01:36:51',2,'2013-09-26 01:36:51',2);

SELECT Count(*)
FROM   t1 AS tbl
       LEFT JOIN t2 a
              ON a.spoo_uid = sspo_uid
                 AND a.spoo_option_id = 1
       LEFT JOIN t2 b
              ON b.spoo_uid = sspo_uid
                 AND b.spoo_option_id = 2
       LEFT JOIN t2 c
              ON c.spoo_uid = sspo_uid
                 AND c.spoo_option_id = 3
       LEFT JOIN t2 d
              ON d.spoo_uid = sspo_uid
                 AND d.spoo_option_id = 5
       LEFT JOIN t2 e
              ON e.spoo_uid = sspo_uid
                 AND e.spoo_option_id = 4
       LEFT JOIN t2 f
              ON f.spoo_uid = sspo_uid
                 AND f.spoo_option_id = 11
       LEFT JOIN t2 g
              ON g.spoo_uid = sspo_uid
                 AND g.spoo_option_id = 7
       LEFT JOIN t2 h
              ON h.spoo_uid = sspo_uid
                 AND h.spoo_option_id = 10
       LEFT JOIN t2 i
              ON i.spoo_uid = sspo_uid
                 AND i.spoo_option_id = 18
       LEFT JOIN t2 j
              ON j.spoo_uid = sspo_uid
                 AND j.spoo_option_id = 6
GROUP  BY a.spoo_value,
          b.spoo_value,
          c.spoo_value,
          d.spoo_value,
          e.spoo_value,
          f.spoo_value,
          g.spoo_value,
          h.spoo_value,
          i.spoo_value,
          j.spoo_value;
drop table t1,t2;