import-trace: sanity-check speedup
The sanity check testing whether the fault space is rectangular is unnecessarily slow, as it joins the "trace" table without any reason, and includes all variants instead of the currently imported one. Change-Id: Icfe948290ec595209868952fc1639c979bd78d83
This commit is contained in:
@ -210,22 +210,19 @@ bool Importer::copy_to_database(fail::ProtoIStream &ps) {
|
|||||||
|
|
||||||
// rectangular?
|
// rectangular?
|
||||||
ss <<
|
ss <<
|
||||||
"SELECT t.variant_id, local.data_address, global.min_instr, global.max_instr, local.min_instr, local.max_instr\n"
|
"SELECT local.data_address, global.min_instr, global.max_instr, local.min_instr, local.max_instr\n"
|
||||||
"FROM trace t\n"
|
"FROM\n"
|
||||||
"JOIN\n"
|
" (SELECT MIN(instr1) AS min_instr, MAX(instr2) AS max_instr\n"
|
||||||
" (SELECT t2.variant_id, MIN(instr1) AS min_instr, MAX(instr2) AS max_instr\n"
|
|
||||||
" FROM trace t2\n"
|
" FROM trace t2\n"
|
||||||
|
" WHERE variant_id = " << m_variant_id << "\n"
|
||||||
" GROUP BY t2.variant_id) AS global\n"
|
" GROUP BY t2.variant_id) AS global\n"
|
||||||
" ON global.variant_id = t.variant_id\n"
|
|
||||||
"JOIN\n"
|
"JOIN\n"
|
||||||
" (SELECT variant_id, data_address, MIN(instr1) AS min_instr, MAX(instr2) AS max_instr\n"
|
" (SELECT data_address, MIN(instr1) AS min_instr, MAX(instr2) AS max_instr\n"
|
||||||
" FROM trace t3\n"
|
" FROM trace t3\n"
|
||||||
|
" WHERE variant_id = " << m_variant_id << "\n"
|
||||||
" GROUP BY t3.variant_id, t3.data_address) AS local\n"
|
" GROUP BY t3.variant_id, t3.data_address) AS local\n"
|
||||||
" ON local.variant_id = t.variant_id\n"
|
" ON (local.min_instr != global.min_instr\n"
|
||||||
"AND (local.min_instr != global.min_instr\n"
|
" OR local.max_instr != global.max_instr)";
|
||||||
" OR local.max_instr != global.max_instr)\n"
|
|
||||||
"WHERE t.variant_id = " << m_variant_id << "\n"
|
|
||||||
"GROUP BY t.variant_id, local.data_address\n";
|
|
||||||
if (!sanitycheck("Global min/max = FS row local min/max",
|
if (!sanitycheck("Global min/max = FS row local min/max",
|
||||||
"global MIN(instr1)/MAX(instr2) != row-local MIN(instr1)/MAX(instr2)",
|
"global MIN(instr1)/MAX(instr2) != row-local MIN(instr1)/MAX(instr2)",
|
||||||
ss.str())) {
|
ss.str())) {
|
||||||
|
|||||||
Reference in New Issue
Block a user