The following works for me

@Test public void relBuilderProjectAlias() throws Exception {
  final RelBuilder builder = RelBuilder.create(config().build());
  final RelNode root =
      builder.scan("EMP")
          .project(
                    builder.alias(builder.field("EMPNO"), "aaa"),
                    builder.alias(builder.field("ENAME"), "bbb")
                  )
          .build();

  try (PreparedStatement stm = RelRunners.run(root);
      ResultSet rset = stm.executeQuery();
  ) {
    while (rset.next()) {
      System.out.printf("aaa=%s bbb=%s\n",
          rset.getString("aaa"),
          rset.getString("bbb"));
    }
  }
}


aaa=7369 bbb=SMITH
aaa=7499 bbb=ALLEN
aaa=7521 bbb=WARD


On Thu, Aug 23, 2018 at 5:54 PM Anand Gupta <[email protected]> wrote:

> Hi All,
>
> I am using RelBuilder to build relational expression and then converting it
> to a SQL query using Rel2SqlConverter. I skimmed through the examples of
> RelBuilder
> <
> https://github.com/apache/calcite/blob/master/core/src/test/java/org/apache/calcite/examples/RelBuilderExample.java
> >
> but
> couldn't figure out a way to assign an alias to a column name.
>
> I am able to select columns from a table and create a query like
>
> "select col1, col2, col3 from table1"
>
> However, I want to do something like
>
> "select col1 as t1, col2 as t2, col3 as n9 from table1"
>
> Ideally, there should be a way to set an alias while projecting the
> columns. However, I couldn't find it. I found two relevant methods "as" and
> "alias" in the code. However, couldn't make them work - "as" only works on
> table and "alias" refer to table name alias.
>
> Any suggestion on how to make this work will be appreciated.
>
> Thanks,
> -A
>

Reply via email to