[ 
https://issues.apache.org/jira/browse/CALCITE-4250?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

xzh_dz updated CALCITE-4250:
----------------------------
    Description: 
We often use `RelMetadataQuery` to track column lineage, but failed to get 
original column of aggregate operator.

This case can be reproduced as below, the correct column index is 7, but got 5.
{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}

  was:
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}


> 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
>            Priority: Major
>              Labels: pull-request-available
>          Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> We often use `RelMetadataQuery` to track column lineage, but failed to get 
> original column of aggregate operator.
> This case can be reproduced as below, the correct column index is 7, but got 
> 5.
> {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)

Reply via email to