- BUG#1608883: KILLING A QUERY INSIDE INNODB CAUSES IT TO EVENTUALLY CRASH

  WITH AN ASSERTION

  Recently we added check to handle kill query signal for long operating
  queries. 
  While the query interruption is reported it must to ensure cursor is restore
  to proper state for HANDLER interface to work correctly. 
  Normal select query will not face this problem, as on recieving interrupt,
  select query is aborted and new select query result in re-initialization
  (including cursor).

  rb://1836. Approved by Marko.
parent 3d9d0e77
...@@ -33,6 +33,8 @@ Created 12/19/1997 Heikki Tuuri ...@@ -33,6 +33,8 @@ Created 12/19/1997 Heikki Tuuri
#include "read0read.h" #include "read0read.h"
#include "buf0lru.h" #include "buf0lru.h"
#include "ha_prototypes.h" #include "ha_prototypes.h"
#include "m_string.h" /* for my_sys.h */
#include "my_sys.h" /* DEBUG_SYNC_C */
/* Maximum number of rows to prefetch; MySQL interface has another parameter */ /* Maximum number of rows to prefetch; MySQL interface has another parameter */
#define SEL_MAX_N_PREFETCH 16 #define SEL_MAX_N_PREFETCH 16
...@@ -3758,7 +3760,9 @@ row_search_for_mysql( ...@@ -3758,7 +3760,9 @@ row_search_for_mysql(
} }
rec_loop: rec_loop:
DEBUG_SYNC_C("row_search_rec_loop");
if (trx_is_interrupted(trx)) { if (trx_is_interrupted(trx)) {
btr_pcur_store_position(pcur, &mtr);
err = DB_INTERRUPTED; err = DB_INTERRUPTED;
goto normal_return; goto normal_return;
} }
......
2013-01-11 The InnoDB Team
* row/row0sel.c:
Fix Bug#16088883 KILLING A QUERY INSIDE INNODB CAUSES IT TO
EVENTUALLY CRASH WITH AN ASSERTION
2012-12-18 The InnoDB Team 2012-12-18 The InnoDB Team
* include/univ.i: * include/univ.i:
......
/***************************************************************************** /*****************************************************************************
Copyright (c) 1997, 2011, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 1997, 2013, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2008, Google Inc. Copyright (c) 2008, Google Inc.
Portions of this file contain modifications contributed and copyrighted by Portions of this file contain modifications contributed and copyrighted by
...@@ -57,6 +57,8 @@ Created 12/19/1997 Heikki Tuuri ...@@ -57,6 +57,8 @@ Created 12/19/1997 Heikki Tuuri
#include "read0read.h" #include "read0read.h"
#include "buf0lru.h" #include "buf0lru.h"
#include "ha_prototypes.h" #include "ha_prototypes.h"
#include "m_string.h" /* for my_sys.h */
#include "my_sys.h" /* DEBUG_SYNC_C */
/* Maximum number of rows to prefetch; MySQL interface has another parameter */ /* Maximum number of rows to prefetch; MySQL interface has another parameter */
#define SEL_MAX_N_PREFETCH 16 #define SEL_MAX_N_PREFETCH 16
...@@ -3908,7 +3910,9 @@ row_search_for_mysql( ...@@ -3908,7 +3910,9 @@ row_search_for_mysql(
} }
rec_loop: rec_loop:
DEBUG_SYNC_C("row_search_rec_loop");
if (trx_is_interrupted(trx)) { if (trx_is_interrupted(trx)) {
btr_pcur_store_position(pcur, &mtr);
err = DB_INTERRUPTED; err = DB_INTERRUPTED;
goto normal_return; goto normal_return;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment