Konstantin Orlov created IGNITE-25471:
-----------------------------------------

             Summary: Sql. Introduce custom infrastructure for rel explanation
                 Key: IGNITE-25471
                 URL: https://issues.apache.org/jira/browse/IGNITE-25471
             Project: Ignite
          Issue Type: Improvement
          Components: sql ai3
            Reporter: Konstantin Orlov


Currently, we are taking an advantage of 
{{org.apache.calcite.rel.RelNode#explain(org.apache.calcite.rel.RelWriter)}}. 
This approach has number of drawbacks.

First, we don't have necessary control over attributers included into printout. 
For example,   the output of {{TableModify}} node contains attributes 
{{sourceExpressionList}} and {{flattened}} which doesn't make sense in our 
case. This can be WA'ed by inlining all the explainTerms of parent rel within 
{{IgniteTableModify}}, but there is a chance to break serialization in case new 
attributes is introduced in upcoming release.

Second, we are resolving indexes into column names, and sometimes you need to 
know context to do it properly. For example, {{IgniteMergeJoin}} has 
{{leftCollation}} and {{rightCollation}} which must be resolved with lhs or rhs 
row type respectively. The context is available in 
{{org.apache.ignite.internal.sql.engine.rel.IgniteMergeJoin#explainTerms}}, but 
is completely lost in relation-agnostic {{RelWriter}}.

Given that said, it would be beneficial to introduce distinct infrastructure to 
printout relations for EXPLAIN command.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to