You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@calcite.apache.org by "Julian Hyde (JIRA)" <ji...@apache.org> on 2017/05/02 03:22:04 UTC

[jira] [Created] (CALCITE-1772) Add a hook to allow RelNode expressions to be executed by JDBC driver

Julian Hyde created CALCITE-1772:
------------------------------------

             Summary: Add a hook to allow RelNode expressions to be executed by JDBC driver
                 Key: CALCITE-1772
                 URL: https://issues.apache.org/jira/browse/CALCITE-1772
             Project: Calcite
          Issue Type: Bug
            Reporter: Julian Hyde
            Assignee: Julian Hyde


Add a hook to allow RelNode expressions to be executed by JDBC driver in the same way that SQL would.

If you set Hook.STRING_TO_QUERY you can provide a function that creates a [CalcitePrepare.Query|https://calcite.apache.org/apidocs/org/apache/calcite/jdbc/CalcitePrepare.Query.html] object; this can wrap a String (SQL query), RelNode tree or Queryable.

In tests, you can call convenience method {{AssertQuery.withRel}}, whose implementation sets the hook. For example,

{code}
    sql("?")
        .withRel(new Function<RelBuilder, RelNode>() {
          public RelNode apply(RelBuilder b) {
            // select count(*) as c
            // from foodmart.foodmart
            // where product_id < cast(10 as varchar)
            return b.scan("foodmart", "foodmart")
                .filter(
                    b.call(SqlStdOperatorTable.LESS_THAN,
                        b.field("product_id"),
                        b.getRexBuilder().makeCall(
                            b.getTypeFactory().createSqlType(SqlTypeName.INTEGER),
                            SqlStdOperatorTable.CAST,
                            ImmutableList.<RexNode>of(b.literal("10")))))
                .aggregate(b.groupKey(), b.countStar("c"))
                .build();
          }
        })
    .returns("c=45");
{code}




--
This message was sent by Atlassian JIRA
(v6.3.15#6346)