-
Type: Improvement
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: None
-
None
-
Fully Compatible
When we estimate individual predicates, we put the results in a logical property:
"| | Logical:\n" "| | cardinalityEstimate: \n" "| | ce: 189.571\n" "| | requirementCEs: \n" "| | refProjection: root, path: 'PathGet [a] PathIdentity []', ce: 330\n" "| | refProjection: root, path: 'PathGet [b] PathGet [c] PathIdentity " "[]', ce: 330\n"
Let's also include a string describing which CE method was used.
- Change the deriveCE() method to return pair<CEType, std::string>.
- Each CE implementation should return a short string like "heuristic" or "sampling".
- When one CE implementation delegates to another (like when sampling falls back to heuristic) we should report the ultimate source of the CEType (heuristic) and not the wrapper.
- Update the PartialSchemaKeyCE structure (in CardinalityEstimate) to hold the string for each estimate.
- Update explain.