Rewrite Mnemonics + ResultsDataWriteGroups queries to be faster
This commit is contained in:
@@ -16,17 +16,25 @@ sub query {
|
||||
my $filters =
|
||||
Filters::build_filter_clause( $experiment_dir, @filter_config_names );
|
||||
|
||||
# The fspgroup/fsppilot joins are only needed for the filters
|
||||
my $filter_joins = "";
|
||||
if ( $filters =~ /\b(?:g|p)\./ ) {
|
||||
$filter_joins .=
|
||||
"\nLEFT JOIN fspgroup g ON g.variant_id = t.variant_id AND g.instr2 = t.instr2 AND g.data_physical_address = t.data_physical_address";
|
||||
}
|
||||
if ( $filters =~ /\bp\./ ) {
|
||||
$filter_joins .= "\nLEFT JOIN fsppilot p ON p.id = g.pilot_id";
|
||||
}
|
||||
|
||||
my $querystring = "SELECT
|
||||
CASE
|
||||
WHEN o.disassemble IS NOT NULL AND SUBSTRING_INDEX(TRIM(o.disassemble), ' ', 1) REGEXP '^[a-zA-Z][a-zA-Z0-9 ]*\$'
|
||||
THEN SUBSTRING_INDEX(TRIM(o.disassemble), ' ', 1)
|
||||
ELSE NULL
|
||||
END AS mnemonic,
|
||||
COUNT(DISTINCT CONCAT(t.instr2, '_', t.data_physical_address)) AS count
|
||||
COUNT(DISTINCT t.instr2, t.data_physical_address) AS count
|
||||
FROM variant v
|
||||
JOIN trace t ON v.id = t.variant_id
|
||||
LEFT JOIN fspgroup g ON g.variant_id = t.variant_id AND g.instr2 = t.instr2 AND g.data_physical_address = t.data_physical_address
|
||||
LEFT JOIN fsppilot p ON p.id = g.pilot_id
|
||||
JOIN trace t ON v.id = t.variant_id$filter_joins
|
||||
JOIN objdump o ON o.variant_id = v.id AND o.instr_address = t.instr2_absolute
|
||||
WHERE v.variant = '$experiment'$filters
|
||||
GROUP BY mnemonic
|
||||
|
||||
Reference in New Issue
Block a user