> The case there is that "correlation variables" are added to the Logical*
nodes (e.g. LogicalFilter, LogicalProject).

BTW, "correlation variables" were added to a LogicalFilter in CALCITE-816.
So what is wrong with CALCITE-3183?

вт, 14 дек. 2021 г. в 01:24, Konstantin Orlov <kostyaorlo...@gmail.com>:

> Vladimir, could you please clarify in what way the PR#2623 changes
> the semantics?
>
> The correlated project is already possible in the master. The MongoProject
> already discards variablesSet (simply because it's currently not stored
> for
> project node) and either fails or returns invalid results. This behavior
> (alas,
> incorrect) will be preserved after this patch.
>
> пн, 13 дек. 2021 г. в 17:55, Vladimir Sitnikov <
> sitnikov.vladi...@gmail.com>:
>
>> Hi,
>>
>> It turns out Calcite's nodes can change semantics without notification for
>> the end-users.
>>
>> Here are the release notes for Calcite 1.21, and it says **nothing** like
>> "Ensure you handle Filter#variablesSet in case you implement Filter or in
>> case you transform LogicalFilter in your rules"
>> https://calcite.apache.org/news/2019/09/11/release-1.21.0/
>>
>> On top of that, the in-core adapters fail to handle that properly. For
>> example, MongoFilter discards Filter#variablesSet.
>>
>> Can we please stop changing the semantics of RelNodes or can we have a
>> better way to detect the changes in the client code?
>>
>> What if we add a "version" property to the corresponding RelNodes, and we
>> increment it every time the semantic changes?
>> Then client APIs could be coded like "ok, I'm prepared to handle Project
>> v4, and Filter v5" (e.g. make "version" required when registering a rule),
>> and there will be a runtime error in case Calcite generates Filter v6 in
>> runtime.
>>
>> ---
>>
>> Sample case:
>> CALCITE-3183 Trimming method for Filter rel uses wrong traitSet
>> CALCITE-4913 Correlated variables in a select list are not deduplicated
>>
>> The case there is that "correlation variables" are added to the Logical*
>> nodes (e.g. LogicalFilter, LogicalProject).
>> Unfortunately, that change is hard to notice: there's no compilation
>> failure, and there's no runtime error.
>>
>> The old client code just discards "correlation variables", and I guess it
>> would result in wrong results or something like that.
>> Silent wrong results is a really sad outcome from the database.
>>
>> CALCITE-4913 / PR#2623 adds Project#variablesSet property as well, and I
>> guess it would in the same hidden semantic loss.
>>
>> Vladimir
>>
>
>
> --
> Regards,
> Konstantin Orlov
>


-- 
Regards,
Konstantin Orlov

Reply via email to