You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Stamatis Zampetakis (Jira)" <ji...@apache.org> on 2021/10/20 19:58:00 UTC
[jira] [Commented] (CALCITE-4362) Unable to parse queries that use
BigQuery pseudo columns _PARTITIONDATE/_PARTITIONTIME
[ https://issues.apache.org/jira/browse/CALCITE-4362?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17431445#comment-17431445 ]
Stamatis Zampetakis commented on CALCITE-4362:
----------------------------------------------
I completely agree with [~julianhyde].
I might have done something like that in a previous project I was working on. Vaguely I remember I drew inspiration from the way rolled up columns are handled in [SqlValidatorImpl.expandStar|https://github.com/apache/calcite/blob/bf962b86d9c27ca429ae71bf75a2acdca06eee91/core/src/main/java/org/apache/calcite/sql/validate/SqlValidatorImpl.java#L635]. The trick is to find the table to which the column belongs and the latter should implement an appropriate interface (such as [Table.isRolledUp|https://github.com/apache/calcite/blob/bf962b86d9c27ca429ae71bf75a2acdca06eee91/core/src/main/java/org/apache/calcite/schema/Table.java#L71] ) to be able to tell if a column is a system column or not.
For that use-case, I think I ended up sub-classing {{SqlValidatorImpl}} and overloading [SqlValidatorImpl.addToSelectList|https://github.com/apache/calcite/blob/bf962b86d9c27ca429ae71bf75a2acdca06eee91/core/src/main/java/org/apache/calcite/sql/validate/SqlValidatorImpl.java#L2067] as an attempt to not modify Calcite. I guess if want to make this part of the core it will be easier.
> Unable to parse queries that use BigQuery pseudo columns _PARTITIONDATE/_PARTITIONTIME
> --------------------------------------------------------------------------------------
>
> Key: CALCITE-4362
> URL: https://issues.apache.org/jira/browse/CALCITE-4362
> Project: Calcite
> Issue Type: Bug
> Components: babel
> Reporter: Justin Swett
> Assignee: Julian Hyde
> Priority: Major
>
> BigQuery supports partitioned tables using pseudo columns "_PARTITIONDATE"
> e.g. The following table has two columns you can select from but also partitions the data by creation date
> {code:java}
> CREATE or REPLACE TABLE #{table} (
> transaction_id STRING,
> order_date DATE )
> PARTITION BY _PARTITIONDATE
> {code}
>
> The following queries cannot be validated
> {code:java}
> select * from #{table} where _PARTITIONDATE = '2020-11-03' ;
> -- OR
> select * from #{table} where _PARTITIONTIME = '2020-11-03' ;{code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)