Details
-
Improvement
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
-
None
Description
With CALCITE-890, we now try applying each materialization with all possible substitution combinations. And this works fine if all applicable materializations are independent of each other. But with dependent materializations, the order of materializations in which we perform substitution matters.
For example, if we have tables A and B, a materialization table C that uses A, and another materialization table D that uses tables C and B. Thus, we should apply materialization C before applying materialization D.
Right now we output the applicable materialization list as we iterate through the input materialization list which could be of random order (and it actually is). A directed graph is used to find all the applicable materializations, but we can also take advantage of this graph to organize them in the desired order.