Hi,  Shubham Kumar
If I understand correctly, you want get the optimized(by materialized view)
SQL String. I wrote a simple test as below, please check if it's helpful
for you.

@Test public void testDEV() {
  final String m = "select \"deptno\", \"empid\", \"name\""
      + "from \"emps\" where \"deptno\" = 10";
  final String q = "select \"empid\" + 1 as x, \"name\""
      + "from \"emps\" where \"deptno\" = 10";

  CalciteAssert.that()
      .withMaterializations(HR_FKUK_MODEL, "m0", m)
      .query(q)
      .withHook(Hook.SUB, (Consumer<RelNode>) r ->
      {
        RelToSqlConverter converter =
            new RelToSqlConverter(CalciteSqlDialect.DEFAULT);
        final SqlNode sqlNode = converter.visitChild(0, r).asStatement();
        
System.out.println(sqlNode.toSqlString(CalciteSqlDialect.DEFAULT).getSql());
      })
      .enableMaterializations(true)
      .explainContains("hr, m0");
}

The output is as below:

SELECT "empid" + 1 AS "X", "name"
FROM "hr"."m0"


Danny Chan <yuzhao....@gmail.com> 于2019年9月16日周一 下午1:44写道:

> Hi, Shubham Kumar ~
>
> > However, I wanted the optimized rewrite SQL query if possible, not just
> the
> > plan. So far, I tried to use the rel2sql api but when I print
> > RelNode.toString(), it gives me a plan which involves scanning the raw
> > tables and hence the SQL generated by rel2sql is not the one which
> utilized
> > the materialized view. Any pointers to get the rewrite query.
>
> Did you try the RelNode.toString() after the volcano planner promotion, it
> is not expected to involve scanning the raw tables.
>
> Best,
> Danny Chan
> 在 2019年9月11日 +0800 PM9:42,dev@calcite.apache.org,写道:
> >
> > However, I wanted the optimized rewrite SQL query if possible, not just
> the
> > plan. So far, I tried to use the rel2sql api but when I print
> > RelNode.toString(), it gives me a plan which involves scanning the raw
> > tables and hence the SQL generated by rel2sql is not the one which
> utilized
> > the materialized view. Any pointers to get the rewrite query.
>

Reply via email to