[ 
https://issues.apache.org/jira/browse/CALCITE-7228?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

ASF GitHub Bot updated CALCITE-7228:
------------------------------------
    Labels: pull-request-available  (was: )

> Validator rejects legal ASOF JOIN program
> -----------------------------------------
>
>                 Key: CALCITE-7228
>                 URL: https://issues.apache.org/jira/browse/CALCITE-7228
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.40.0
>            Reporter: Mihai Budiu
>            Assignee: Mihai Budiu
>            Priority: Minor
>              Labels: pull-request-available
>             Fix For: 1.41.0
>
>
> The following legal program involving ASOF JOIN is rejected by the validator:
> {code:sql}
>                 CREATE TABLE source_stream_a (
>                     common_join_attribute SMALLINT,
>                     join_key_a2 VARCHAR,
>                     join_key_a1 VARCHAR,
>                     event_timestamp TIMESTAMP
>                 );
>                 
>                 CREATE TABLE reference_table_b (
>                     join_key_b1 VARCHAR NOT NULL PRIMARY KEY,
>                     common_join_attribute SMALLINT,
>                     event_timestamp TIMESTAMP
>                 );
>                 
>                 CREATE TABLE source_stream_c (
>                     join_key_b1 VARCHAR NOT NULL,
>                     join_key_c2 VARCHAR NOT NULL,
>                     common_join_attribute SMALLINT,
>                     epoch_ts_c BIGINT LATENESS 10::BIGINT,
>                     timestamp_c TIMESTAMP,
>                     event_timestamp TIMESTAMP,
>                     PRIMARY KEY (join_key_b1, join_key_c2)
>                 );
>                               
>                 SELECT t1.* FROM source_stream_a AS t1
>                 LEFT JOIN reference_table_b AS t2
>                 ON t1.common_join_attribute = t2.common_join_attribute AND 
> t1.join_key_a1 = t2.join_key_b1
>                 LEFT ASOF JOIN source_stream_c AS t3
>                 MATCH_CONDITION ( t1.event_timestamp >= t3.event_timestamp )
>                 ON t1.common_join_attribute = t3.common_join_attribute AND 
> t1.join_key_a2 = t3.join_key_c2
>                  AND t1.join_key_a1 = t3.join_key_b1;
> {code}
> The error reported is:
> {code}
> Compilation error: From line 31, column 4 to line 31, column 54: ASOF JOIN 
> condition must be a conjunction of equality comparisons
>    31|ON t1.common_join_attribute = t3.common_join_attribute AND 
> t1.join_key_a2 = t3.join_key_c2
>          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> {code}
> I wrote the broken code; it's the CompareFromBothSides visitor, so it's up to 
> me to fix it. The bug is in the code which checks the well-formedness of the 
> ASOF JOIN condition; it doesn't work if an input is another JOIN.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to