Zhong Yu created CALCITE-2267:
---------------------------------
Summary: AbstractRelNode.getId() may produce duplicate IDs
Key: CALCITE-2267
URL: https://issues.apache.org/jira/browse/CALCITE-2267
Project: Calcite
Issue Type: Bug
Components: core
Reporter: Zhong Yu
Assignee: Julian Hyde
RelOptNode.getId() is supposed to be unique per instance; however, the
generation of AbstractRelNode.id is not thread safe; in a multithreaded
environment, the behavior is undeterministic, and there is a non-trivial
possibility that duplicate IDs are generated for different nodes.
This ID is used for comparing nodes in several places, therefore it may affect
program stability and correctness. For example, if we set id=0 for all nodes,
Calcite's own test suite will have multiple failures.
In our own test environment, the optimizers are expected to be deterministic,
yet occasionally they mysteriously produce different plans. While we cannot be
100% sure that it is caused by AbstractRelNode.id, we can verify that fudging
with the ID will reliably change the output of our optimizers.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)