Commit 08a4868b authored by unknown's avatar unknown
Browse files

BUG#15024: get_best_covering_ror_intersect() tries to build ROR-intersection

by starting with an empty index set and adding indexes to it until it
becomes covering. If the set becomes covering after adding the first index,
return NULL and don't try constructing ROR-intersection of one index (which
caused a crash)

parent dc8a5d54
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -3136,10 +3136,10 @@ TRP_ROR_INTERSECT *get_best_covering_ror_intersect(PARAM *param,
    /* F=F-covered by first(I) */
    bitmap_union(&covered_fields, &(*ror_scan_mark)->covered_fields);
    all_covered= bitmap_is_subset(&param->needed_fields, &covered_fields);
  } while (!all_covered && (++ror_scan_mark < ror_scans_end));
  } while ((++ror_scan_mark < ror_scans_end) && !all_covered);
  
  if (!all_covered)
    DBUG_RETURN(NULL); /* should not happen actually */
  if (!all_covered || (ror_scan_mark - tree->ror_scans) == 1)
    DBUG_RETURN(NULL);

  /*
    Ok, [tree->ror_scans .. ror_scan) holds covering index_intersection with