~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to tests/t/execution_constants.test

  • Committer: Monty Taylor
  • Date: 2009-03-24 17:44:41 UTC
  • mto: (960.5.2 mordred)
  • mto: This revision was merged to the branch mainline in revision 964.
  • Revision ID: mordred@inaugust.com-20090324174441-nmsq0gwjlgf7f0mt
Changed handlerton to StorageEngine.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#
2
 
# Bug#21476: Lost Database Connection During Query
3
 
#
4
 
# When the amount of stack space we think we need to report an error is
5
 
# actually too small, then we can get SEGVs.  But, we don't want to reserve
6
 
# space that we could use to get real work done.  So, we want the reserved
7
 
# space small, and this test verifies that the reservation is not too small.
8
 
 
9
 
CREATE TABLE `t_bug21476` (
10
 
  `ID_BOARD` int(5) NOT NULL default '0',
11
 
  `ID_MEMBER` mediumint(8) NOT NULL default '0',
12
 
  `logTime` int(10) NOT NULL default '0',
13
 
  `ID_MSG` mediumint(8) NOT NULL default '0',
14
 
  PRIMARY KEY  (`ID_MEMBER`,`ID_BOARD`),
15
 
  KEY `logTime` (`logTime`)
16
 
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 COLLATE=cp1251_bulgarian_ci;
17
 
 
18
 
INSERT INTO `t_bug21476` VALUES (2,2,1154870939,0),(1,2,1154870957,0),(2,183,1154941362,0),(2,84,1154904301,0),(1,84,1154905867,0),(2,13,1154947484,10271),(3,84,1154880549,0),(1,6,1154892183,0),(2,25,1154947581,10271),(3,25,1154904760,0),(1,25,1154947373,10271),(1,179,1154899992,0),(2,179,1154899410,0),(5,25,1154901666,0),(2,329,1154902026,0),(3,329,1154902040,0),(1,329,1154902058,0),(1,13,1154930841,0),(3,85,1154904987,0),(1,183,1154929665,0),(3,13,1154931268,0),(1,85,1154936888,0),(1,169,1154937959,0),(2,169,1154941717,0),(3,183,1154939810,0),(3,169,1154941734,0);
19
 
 
20
 
delimiter //;
21
 
let $query_head=UPDATE t_bug21476 SET ID_MSG = IF(logTime BETWEEN 1 AND 1101770053, 2, //
22
 
let $query_tail =) WHERE logTime BETWEEN 1 AND 1104091539 AND ID_MSG = 0//
23
 
 
24
 
# Scan over the possible stack heights, trying to recurse to exactly that
25
 
# depth.  Eventually, we will reach our imposed limit on height and try to
26
 
# raise an error.  If the remaining stack space is enough to raise that error,
27
 
# we will get an error-number of 1436 and quit the loop.  If it's not enough
28
 
# space, we should get a SEGV
29
 
 
30
 
# Well more than enough recursions to find the end of our stack.
31
 
let $i = 100000//
32
 
disable_query_log//
33
 
disable_result_log//
34
 
while ($i)
35
 
{
36
 
  # If we SEGV because the min stack size is exceeded, this would return error
37
 
  # 2013 .
38
 
  error 0,1436 //
39
 
  eval $query_head 0 $query_tail//
40
 
 
41
 
  if ($mysql_errno != 1436)
42
 
  {
43
 
    # We reached the place where we reported an error about the stack limit,
44
 
    # and we successfully returned the error.  That means that at the stack
45
 
    # limit, we still have enough space reserved to report an error.
46
 
    let $i = 1//
47
 
  }
48
 
 
49
 
  # Multiplying by three stack frames should be fine enough resolution.
50
 
  # Trading exactness for speed.
51
 
 
52
 
  # go one more level deep
53
 
  let $query_head = $query_head IF(logTime <= 1104091$i, $i, //
54
 
  let $query_tail =) $query_tail//
55
 
 
56
 
  # go one more level deep
57
 
  let $query_head = $query_head IF(logTime <= 1105091$i, $i, //
58
 
  let $query_tail =) $query_tail//
59
 
 
60
 
  # go one more level deep
61
 
  let $query_head = $query_head IF(logTime <= 1106091$i, $i, //
62
 
  let $query_tail =) $query_tail//
63
 
 
64
 
  dec $i//
65
 
}
66
 
enable_result_log//
67
 
enable_query_log//
68
 
 
69
 
echo Assertion: mysql_errno 1436 == $mysql_errno//
70
 
 
71
 
delimiter ;//
72
 
DROP TABLE `t_bug21476`;
73
 
 
74
 
--echo End of 5.0 tests.