mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
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.
This commit is contained in:
@ -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 */
|
||||
|
||||
|
Reference in New Issue
Block a user