Better handling of missing log data

This commit is contained in:
Dave Bartolomeo
2022-08-12 16:14:24 -04:00
parent 1aab49c719
commit 9a2bea39e6

View File

@@ -320,7 +320,7 @@ class JoinOrderScanner implements EvaluationLogScanner {
event: ComputeSimple
): { maxTupleCount: number; maxDependentPredicateSize: number } {
const dependentPredicateSizes = Object.values(event.dependencies).map(hash =>
this.predicateSizes.get(hash)! // REVIEW: '!'
this.predicateSizes.get(hash) ?? 0 // Should always be present, but zero is a safe default.
);
const maxDependentPredicateSize = safeMax(dependentPredicateSizes);
return {
@@ -339,7 +339,7 @@ class JoinOrderScanner implements EvaluationLogScanner {
// If an iteration isn't present in the map it means it was skipped because the optimizer
// inferred that it was empty. So its size is 0.
return (
this.layerEvents.get(event.raHash)!.find(x => x.predicateName === predicate)?.deltaSizes[i] || 0
this.layerEvents.get(event.raHash)?.find(x => x.predicateName === predicate)?.deltaSizes[i] ?? 0
);
}