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)