[
https://issues.apache.org/jira/browse/BEAM-8741?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Brian Hulette updated BEAM-8741:
--------------------------------
Description:
Currently it's possible to perform a query like:
{code:sql}
CREATE TABLE pubsub (
event_timestamp TIMESTAMP,
id VARCHAR
) ...
INSERT INTO pubsub (event_timestamp, id) VALUES (...)
{code}
But when this is executed, the event_timestamp will be dropped, because on read
it will be instead be populated with pubsub's publish time.
A couple of ideas:
- We could indicate that this is a VIRTUAL GENERATED column, and is therefore
read-only. Calcite seems to have some support for this concept, see
[ColumnStrategy.java|https://github.com/apache/calcite/blob/master/core/src/main/java/org/apache/calcite/schema/ColumnStrategy.java].
- We could just throw an exception in the Pubsub JSON Table Provider if the
query's output schema contains event_timestamp.
was:
Currently it's possible to perform a query like:
{code:sql}
CREATE TABLE pubsub (
event_timestamp TIMESTAMP,
id VARCHAR
) ...
INSERT INTO pubsub (event_timestamp, id) VALUES (...)
{code}
But when this is executed, the event_timestamp will be dropped, because on read
it will be instead be populated with pubsub's publish time.
We should somehow indicate that this is a VIRTUAL GENERATED column, and is
therefore read-only. Calcite seems to have some support for this concept, see
[ColumnStrategy.java|https://github.com/apache/calcite/blob/master/core/src/main/java/org/apache/calcite/schema/ColumnStrategy.java].
> Queries that attempt to write to pubsub publish time should fail at
> construction time
> -------------------------------------------------------------------------------------
>
> Key: BEAM-8741
> URL: https://issues.apache.org/jira/browse/BEAM-8741
> Project: Beam
> Issue Type: Improvement
> Components: dsl-sql
> Reporter: Brian Hulette
> Priority: P2
> Labels: stale-P2
>
> Currently it's possible to perform a query like:
> {code:sql}
> CREATE TABLE pubsub (
> event_timestamp TIMESTAMP,
> id VARCHAR
> ) ...
> INSERT INTO pubsub (event_timestamp, id) VALUES (...)
> {code}
> But when this is executed, the event_timestamp will be dropped, because on
> read it will be instead be populated with pubsub's publish time.
> A couple of ideas:
> - We could indicate that this is a VIRTUAL GENERATED column, and is therefore
> read-only. Calcite seems to have some support for this concept, see
> [ColumnStrategy.java|https://github.com/apache/calcite/blob/master/core/src/main/java/org/apache/calcite/schema/ColumnStrategy.java].
> - We could just throw an exception in the Pubsub JSON Table Provider if the
> query's output schema contains event_timestamp.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)