You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@calcite.apache.org by "xzh_dz (Jira)" <ji...@apache.org> on 2020/09/12 07:47:00 UTC

[jira] [Created] (CALCITE-4250) Failed to get original column of aggregate operator

xzh_dz created CALCITE-4250:
-------------------------------

             Summary: Failed to get original column of aggregate operator
                 Key: CALCITE-4250
                 URL: https://issues.apache.org/jira/browse/CALCITE-4250
             Project: Calcite
          Issue Type: Wish
            Reporter: xzh_dz


We often useĀ `RelMetadataQuery` to track column lineage, but failed to get original column of aggregate operator.

This case can be reproduced as below:
{code:java}
// @Test void testAggregateRelMdColumnOrigins() {
  final RelBuilder relBuilder = RelBuilder.create(config().build());
  final LogicalProject project = (LogicalProject) relBuilder.scan("EMP")
      .project(relBuilder.field("EMPNO"),
          relBuilder.field("ENAME"),
          relBuilder.field("JOB"),
          relBuilder.field("SAL"),
          relBuilder.field("DEPTNO")).build();
  final LogicalAggregate aggregate = (LogicalAggregate) relBuilder.push(project)
      .aggregate(
          relBuilder.groupKey(relBuilder.field(1, 0, "DEPTNO")),
          relBuilder.count(relBuilder.field(1, 0, "SAL")))
      .build();
  RelMetadataQuery mq = aggregate.getCluster().getMetadataQuery();
  final RelColumnOrigin nameColumn = mq.getColumnOrigin(aggregate , 0);
  assertThat(nameColumn.getOriginTable().getRowType().getFieldNames().get(7).equals("DEPTNO"), is(true));
  System.out.println(nameColumn.getOriginColumnOrdinal()); // 5
}
{code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)