It's such a comprehensive explanation, Thanks Jacques, I get it.

Jacques Nadeau <[email protected]> 于2021年11月27日周六 上午1:10写道:

> >
> > Yes, I'm referring to the RelNode's row type, the planBefore and
> > planAfter's row types are different in field name.
> >
>
> You cannot rely on field names from individual RelNodes. It's just the way
> Calcite was designed.
>
> I'm trying to convert the optimized RelNodes tree to a sql with same
> > semantics with the original RelNodes,
> > If the field name is missing, the sql will be incorrect.
> >
>
> You should be using the RelRoot's validated row type to generate the field
> names of the output, not the RelNode's. They will be correct. If you're
> constructing the plan by hand, you'll need to create a rowtype independent
> of the relnodes to maintain the field names through the process.
>
>
> > Thanks JiaTao and Jing, I understand the fact that alias is trivial in
> > rules, But how can Calcite ensure the physical plan
> > which transformed from optimized logical plan outputs the correct column
> > names?
> >
>
> By using the RelRoot's validated row type.
>

Reply via email to