Jess Balint created CALCITE-1611:
------------------------------------

             Summary: RelToSqlConverter not handling table alias reference 
correctly
                 Key: CALCITE-1611
                 URL: https://issues.apache.org/jira/browse/CALCITE-1611
             Project: Calcite
          Issue Type: Bug
          Components: core
    Affects Versions: 1.11.0
            Reporter: Jess Balint
            Assignee: Julian Hyde
            Priority: Minor


The following code fails:
{code:java}
    RelBuilder relBuilder = RelBuilder.create(config);
    relBuilder.scan("product")
              .scan("product")
              .join(JoinRelType.INNER, "product_id")
              .filter(relBuilder.call(SqlStdOperatorTable.PLUS, 
relBuilder.field(0), relBuilder.literal(10)))
              .scan("product").as("p3")
              .join(JoinRelType.INNER, "product_id")
              .project(relBuilder.field("p3", "product_id"));

    final RelToSqlConverter converter =
        new RelToSqlConverter(SqlDialect.CALCITE);
    final SqlNode sqlNode = converter.visitChild(0, 
relBuilder.build()).asStatement();
{code}

The exception is:
{noformat}
Caused by: java.lang.AssertionError: field ordinal 1 out of range 
{t=RecordType(INTEGER product_class_id, INTEGER product_id, VARCHAR(60) 
brand_name, VARCHAR(60) product_name, BIGINT SKU, DECIMAL(10, 4) SRP, DOUBLE 
gross_weight, DOUBLE net_weight, BOOLEAN recyclable_package, BOOLEAN low_fat, 
SMALLINT units_per_case, SMALLINT cases_per_pallet, DOUBLE shelf_width, DOUBLE 
shelf_height, DOUBLE shelf_depth), product1=RecordType(INTEGER 
product_class_id, INTEGER product_id, VARCHAR(60) brand_name, VARCHAR(60) 
product_name, BIGINT SKU, DECIMAL(10, 4) SRP, DOUBLE gross_weight, DOUBLE 
net_weight, BOOLEAN recyclable_package, BOOLEAN low_fat, SMALLINT 
units_per_case, SMALLINT cases_per_pallet, DOUBLE shelf_width, DOUBLE 
shelf_height, DOUBLE shelf_depth)}
        at 
org.apache.calcite.rel.rel2sql.SqlImplementor$AliasContext.field(SqlImplementor.java:845)
        at 
org.apache.calcite.rel.rel2sql.SqlImplementor$Context.toSql(SqlImplementor.java:512)
        at 
org.apache.calcite.rel.rel2sql.RelToSqlConverter.visit(RelToSqlConverter.java:151)
{noformat}

The {{RelToSqlConvertor}} (and {{SqlImplementor}}) is attempt to track the 
aliases but fails to do so when a filter is placed over top of the join. As of 
yet, I'm unsure what the fix is. This code is a bit ... cumbersome.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to