You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Niels Pardon (Jira)" <ji...@apache.org> on 2025/03/07 09:38:00 UTC

[jira] [Created] (CALCITE-6877) Generate LogicalProject in RelRoot.project() when mapping is not name trivial

Niels Pardon created CALCITE-6877:
-------------------------------------

             Summary: Generate LogicalProject in RelRoot.project() when mapping is not name trivial
                 Key: CALCITE-6877
                 URL: https://issues.apache.org/jira/browse/CALCITE-6877
             Project: Calcite
          Issue Type: Improvement
          Components: core
    Affects Versions: 1.38.0
            Reporter: Niels Pardon
            Assignee: Niels Pardon
             Fix For: 1.39.0


Currently, the RelRoot.project() method only generates a project relation if the RelRoot fields are:
 * not ref trivial
 * or if one of the following is not true:
 ** is not a DML operation
 ** is not a force project
 ** the existing top relation is not already a LogicalProject

[https://github.com/apache/calcite/blob/802fce3c41be76fca899ddb8c856d72c754d1520/core/src/main/java/org/apache/calcite/rel/RelRoot.java#L163-L169]

The result is that for a simple SQL query that selects a single field from a table and renames the same field we are losing the renaming of the field if we call RelRoot.project() even if we set the force parameter to true since the relational tree embedded in the RelRoot already contains a LogicalProject at the top of the tree.

My expectation would be that when I call RelRoot.project() that a LogicalProject is being added also if the RelRoot fields are not name trivial aka they are being renamed.



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