You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Julian Hyde (JIRA)" <ji...@apache.org> on 2016/11/28 18:33:58 UTC
[jira] [Resolved] (CALCITE-1506) Push OVER Clause to underlying SQL
via JDBC adapter
[ https://issues.apache.org/jira/browse/CALCITE-1506?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Julian Hyde resolved CALCITE-1506.
----------------------------------
Resolution: Fixed
Fix Version/s: 1.11.0
Fixed in http://git-wip-us.apache.org/repos/asf/calcite/commit/e4fb4c4e. Thanks for the PR, [~tzolov]!
> Push OVER Clause to underlying SQL via JDBC adapter
> ---------------------------------------------------
>
> Key: CALCITE-1506
> URL: https://issues.apache.org/jira/browse/CALCITE-1506
> Project: Calcite
> Issue Type: Bug
> Components: jdbc-adapter
> Affects Versions: 1.10.0
> Reporter: Christian Tzolov
> Assignee: Julian Hyde
> Fix For: 1.11.0
>
>
> The jdbc adapter adapter should push down the OVER clause for all dialects that support window functions.
> At the moment the Rel to SQL conversion ignores the 'OVER(...)'. The RexOver expression is treated as a plain RexCall and the RexOver#window attribute is not converted into SQL.
> For example if the following sql query (using Postgres dialect):
> {code:sql}
> SELECT "id", "device_id", "transaction_value", "account_id", "ts_millis", MAX("ts_millis") OVER(partition by "device_id") as "last_version_number"
> FROM "HAWQ"."transaction"
> WHERE "device_id" = 1445
> {code}
> is pushed down to the jdbc like this:
> {code:sql}
> SELECT "id", "device_id", "transaction_value", "account_id", "ts_millis", MAX("ts_millis") AS "last_version_number"
> FROM "transaction"
> WHERE "device_id" = 1445
> {code}
> The OVER clause is completely dropped! Here is the plan:
> {code}
> JdbcToEnumerableConverter
> JdbcProject(id=[$0], device_id=[$1], transaction_value=[$2], account_id=[$3], ts_millis=[$4], last_version_number=[MAX($4) OVER (PARTITION BY $1 RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)])
> JdbcFilter(condition=[=($1, 1445)])
> JdbcTableScan(table=[[HAWQ, transaction]])
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)