From b75090c7dede338236b98ace65362348579ffa01 Mon Sep 17 00:00:00 2001 From: Sergey Petrunya Date: Thu, 18 Dec 2014 20:06:49 +0300 Subject: MDEV-6830: Server crashes in best_access_path after a sequence of SELECTs ... generate_derived_keys_for_table() did not work correctly in the case where - it had a potential index on derived table - however, TABLE::check_tmp_key() would disallow creation of this index after looking at its future key parts (because of the key parts exceeding max. index length) - the code would leave a KEYUSE structure that refers to a non-existant index. Depending on further optimizer calculations, this could cause a crash. --- sql/sql_select.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'sql') diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 9f2e7f531bb..eae06393c75 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -9060,7 +9060,7 @@ bool generate_derived_keys_for_table(KEYUSE *keyuse, uint count, uint keys) else { /* Mark keyuses for this key to be excluded */ - for (KEYUSE *curr=save_first_keyuse; curr < first_keyuse; curr++) + for (KEYUSE *curr=save_first_keyuse; curr < keyuse; curr++) { curr->key= MAX_KEY; } -- cgit v1.2.1