You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by za...@apache.org on 2021/09/20 11:02:44 UTC

[calcite] branch master updated: [CALCITE-4784] Ensure Correlate#requiredColumns is subset of columns in left relation

This is an automated email from the ASF dual-hosted git repository.

zabetak pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/calcite.git


The following commit(s) were added to refs/heads/master by this push:
     new 8ddb3f8  [CALCITE-4784] Ensure Correlate#requiredColumns is subset of columns in left relation
8ddb3f8 is described below

commit 8ddb3f82e997d1a10619fc37ff7900823c7c0b91
Author: Stamatis Zampetakis <za...@gmail.com>
AuthorDate: Fri Sep 17 16:31:40 2021 +0200

    [CALCITE-4784] Ensure Correlate#requiredColumns is subset of columns in left relation
    
    Enforce the implicit class invariant (see Correlate#getRequiredColumns)
    via assertion to prevent construction of invalid plans and fail fast.
---
 core/src/main/java/org/apache/calcite/rel/core/Correlate.java | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/core/src/main/java/org/apache/calcite/rel/core/Correlate.java b/core/src/main/java/org/apache/calcite/rel/core/Correlate.java
index c73e7e5..d7d3602 100644
--- a/core/src/main/java/org/apache/calcite/rel/core/Correlate.java
+++ b/core/src/main/java/org/apache/calcite/rel/core/Correlate.java
@@ -122,7 +122,10 @@ public abstract class Correlate extends BiRel {
   //~ Methods ----------------------------------------------------------------
 
   @Override public boolean isValid(Litmus litmus, @Nullable Context context) {
+    ImmutableBitSet leftColumns = ImmutableBitSet.range(left.getRowType().getFieldCount());
     return super.isValid(litmus, context)
+        && litmus.check(leftColumns.contains(requiredColumns),
+        "Required columns {} not subset of left columns {}", requiredColumns, leftColumns)
         && RelOptUtil.notContainsCorrelation(left, correlationId, litmus);
   }