You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@calcite.apache.org by "Stamatis Zampetakis (Jira)" <ji...@apache.org> on 2021/09/17 14:27:00 UTC
[jira] [Created] (CALCITE-4784) Ensure Correlate#requiredColumns is
subset of columns in left relation
Stamatis Zampetakis created CALCITE-4784:
--------------------------------------------
Summary: Ensure Correlate#requiredColumns is subset of columns in left relation
Key: CALCITE-4784
URL: https://issues.apache.org/jira/browse/CALCITE-4784
Project: Calcite
Issue Type: Improvement
Components: core
Reporter: Stamatis Zampetakis
Assignee: Stamatis Zampetakis
Fix For: 1.28.0
The {{Correlate}} [expression|https://github.com/apache/calcite/blob/f3baf348598fcc6bc4f97a0abee3f99309e5bf76/core/src/main/java/org/apache/calcite/rel/core/Correlate.java] has among others a field ({{requiredColumns}} for representing the set of columns that are used by the correlation.
{code:java}
public abstract class Correlate extends BiRel {
protected final CorrelationId correlationId;
protected final ImmutableBitSet requiredColumns;
protected final JoinRelType joinType;
/**
* Returns the required columns in left relation required for the correlation
* in the right.
*
* @return columns in left relation required for the correlation in the right
*/
public ImmutableBitSet getRequiredColumns() {
return requiredColumns;
}
{code}
As the javadoc indicates (implicitly) these columns must be a subset of the columns of the left relation. This is currently not enforced when creating a correlation which can lead to invalid plans and runtime failures which are hard to investigate.
I propose to introduce an additional check inside {{Correlate#isValid}} method for enforcing that required columns are valid.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)