@@ -16,14 +16,36 @@ import KindPredicatesLog
1616float getBadness ( ComputeSimple simple ) {
1717 exists ( float maxTupleCount , float resultSize , float largestDependency , float denom |
1818 resultSize = simple .getResultSize ( ) and
19- maxTupleCount = max ( simple . getPipelineRun ( ) . getCount ( _ ) ) and
19+ extractInformation ( simple , maxTupleCount , _ , _ , _ , _ ) and
2020 largestDependency = max ( simple .getDependencies ( ) .getADependency ( ) .getResultSize ( ) ) and
2121 denom = resultSize .maximum ( largestDependency ) and
2222 denom > 0 and // avoid division by zero (which would create a NaN result).
2323 result = maxTupleCount / denom
2424 )
2525}
2626
27- from ComputeSimple evt , float f
28- where f = getBadness ( evt ) and f > 1.5
29- select evt , f order by f desc
27+ pragma [ nomagic]
28+ predicate hasPipelineRun ( ComputeSimple simple , PipeLineRun run ) { run = simple .getPipelineRun ( ) }
29+
30+ predicate extractInformation (
31+ ComputeSimple simple , float maxTupleCount , int pipelineIndex , Array tuples ,
32+ Array duplicationPercentages , Array ra
33+ ) {
34+ exists ( PipeLineRun run |
35+ hasPipelineRun ( simple , run ) and
36+ maxTupleCount = max ( run .getCount ( _) ) and
37+ pragma [ only_bind_out ] ( tuples .getFloat ( pipelineIndex ) ) = maxTupleCount and
38+ tuples = run .getCounts ( ) and
39+ duplicationPercentages = run .getDuplicationPercentage ( ) and
40+ ra = simple .getRa ( )
41+ )
42+ }
43+
44+ from
45+ ComputeSimple evt , float f , float maxTupleCount , int pipelineIndex , Array tuples ,
46+ Array duplicationPercentages , Array ra
47+ where
48+ f = getBadness ( evt ) and
49+ f > 1.5 and
50+ extractInformation ( evt , maxTupleCount , pipelineIndex , tuples , duplicationPercentages , ra )
51+ select evt , f , pipelineIndex , tuples , duplicationPercentages , ra order by f desc
0 commit comments