summaryrefslogtreecommitdiff
path: root/sql/handler.h
diff options
context:
space:
mode:
authorSergey Petrunya <psergey@askmonty.org>2013-09-20 14:47:38 +0400
committerSergey Petrunya <psergey@askmonty.org>2013-09-20 14:47:38 +0400
commit422c55a2404a7ec31d43962cdda0d782ef32dc45 (patch)
tree4310e7a0342103f322325b1c936374a0600cc178 /sql/handler.h
parent33f807fd91826013499c996f9515838cf2c6d0c5 (diff)
downloadmariadb-git-422c55a2404a7ec31d43962cdda0d782ef32dc45.tar.gz
MDEV-5037: Server crash on a JOIN on a derived table with join_cache_level > 2
- The crash was caused because the optimizer called handler->multi_range_read_info() on a derived temporary table. That table has been created, but not opened yet. Because of that, handler::table was NULL, which caused crash. Fixed by changing DS-MRR methods to use handler::table_share instead. handler::table_share is set in handler ctor, so this should be safe.
Diffstat (limited to 'sql/handler.h')
-rw-r--r--sql/handler.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/sql/handler.h b/sql/handler.h
index 5b83d8c9556..a23e3c2d17e 100644
--- a/sql/handler.h
+++ b/sql/handler.h
@@ -2715,6 +2715,7 @@ public:
virtual bool check_if_supported_virtual_columns(void) { return FALSE;}
TABLE* get_table() { return table; }
+ TABLE_SHARE* get_table_share() { return table_share; }
protected:
/* deprecated, don't use in new engines */
inline void ha_statistic_increment(ulong SSV::*offset) const { }
@@ -2968,7 +2969,7 @@ public:
#include "multi_range_read.h"
-bool key_uses_partial_cols(TABLE *table, uint keyno);
+bool key_uses_partial_cols(TABLE_SHARE *table, uint keyno);
/* Some extern variables used with handlers */