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

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


The following commit(s) were added to refs/heads/main by this push:
     new 64268b9dd7 [CALCITE-5944] Add metadata for Sample
64268b9dd7 is described below

commit 64268b9dd70bcdc15a3421ab120b8e5ecba17339
Author: xiejiajun <[email protected]>
AuthorDate: Sun Aug 20 17:30:58 2023 +0800

    [CALCITE-5944] Add metadata for Sample
    
    - RelMdAllPredicates
    - RelMdColumnOrigins
    - RelMdExpressionLineage
    - RelMdMaxRowCount
    - RelMdMinRowCount
    - RelMdPredicates
    - RelMdRowCount
---
 .../calcite/rel/metadata/RelMdAllPredicates.java   |  9 ++++
 .../calcite/rel/metadata/RelMdColumnOrigins.java   |  6 +++
 .../rel/metadata/RelMdExpressionLineage.java       |  9 ++++
 .../calcite/rel/metadata/RelMdMaxRowCount.java     |  5 ++
 .../calcite/rel/metadata/RelMdMinRowCount.java     |  5 ++
 .../calcite/rel/metadata/RelMdPredicates.java      |  8 ++++
 .../apache/calcite/rel/metadata/RelMdRowCount.java |  7 +++
 .../org/apache/calcite/test/RelMetadataTest.java   | 56 ++++++++++++++++++++++
 .../GeneratedMetadata_AllPredicatesHandler.java    |  2 +
 .../GeneratedMetadata_ColumnOriginHandler.java     |  2 +
 ...GeneratedMetadata_ExpressionLineageHandler.java |  2 +
 .../GeneratedMetadata_MaxRowCountHandler.java      |  2 +
 .../GeneratedMetadata_MinRowCountHandler.java      |  2 +
 .../GeneratedMetadata_PredicatesHandler.java       |  2 +
 .../janino/GeneratedMetadata_RowCountHandler.java  |  2 +
 15 files changed, 119 insertions(+)

diff --git 
a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdAllPredicates.java 
b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdAllPredicates.java
index a062ab6502..d86a61fad8 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdAllPredicates.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdAllPredicates.java
@@ -27,6 +27,7 @@ import org.apache.calcite.rel.core.Exchange;
 import org.apache.calcite.rel.core.Filter;
 import org.apache.calcite.rel.core.Join;
 import org.apache.calcite.rel.core.Project;
+import org.apache.calcite.rel.core.Sample;
 import org.apache.calcite.rel.core.SetOp;
 import org.apache.calcite.rel.core.Sort;
 import org.apache.calcite.rel.core.TableModify;
@@ -345,6 +346,14 @@ public class RelMdAllPredicates
     return newPreds;
   }
 
+  /**
+   * Extracts predicates for a Sample.
+   */
+  public @Nullable RelOptPredicateList getAllPredicates(Sample sample,
+      RelMetadataQuery mq) {
+    return mq.getAllPredicates(sample.getInput());
+  }
+
   /**
    * Extracts predicates for a Sort.
    */
diff --git 
a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdColumnOrigins.java 
b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdColumnOrigins.java
index dc30e6a20a..a6ed11c104 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdColumnOrigins.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdColumnOrigins.java
@@ -25,6 +25,7 @@ import org.apache.calcite.rel.core.Exchange;
 import org.apache.calcite.rel.core.Filter;
 import org.apache.calcite.rel.core.Join;
 import org.apache.calcite.rel.core.Project;
+import org.apache.calcite.rel.core.Sample;
 import org.apache.calcite.rel.core.SetOp;
 import org.apache.calcite.rel.core.Snapshot;
 import org.apache.calcite.rel.core.Sort;
@@ -195,6 +196,11 @@ public class RelMdColumnOrigins
     return mq.getColumnOrigins(rel.getInput(), iOutputColumn);
   }
 
+  public @Nullable Set<RelColumnOrigin> getColumnOrigins(Sample rel,
+      RelMetadataQuery mq, int iOutputColumn) {
+    return mq.getColumnOrigins(rel.getInput(), iOutputColumn);
+  }
+
   public @Nullable Set<RelColumnOrigin> getColumnOrigins(Snapshot rel,
       RelMetadataQuery mq, int iOutputColumn) {
     return mq.getColumnOrigins(rel.getInput(), iOutputColumn);
diff --git 
a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdExpressionLineage.java
 
b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdExpressionLineage.java
index 1b34451111..3025ee1d4a 100644
--- 
a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdExpressionLineage.java
+++ 
b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdExpressionLineage.java
@@ -26,6 +26,7 @@ import org.apache.calcite.rel.core.Filter;
 import org.apache.calcite.rel.core.Join;
 import org.apache.calcite.rel.core.JoinRelType;
 import org.apache.calcite.rel.core.Project;
+import org.apache.calcite.rel.core.Sample;
 import org.apache.calcite.rel.core.Snapshot;
 import org.apache.calcite.rel.core.Sort;
 import org.apache.calcite.rel.core.TableModify;
@@ -394,6 +395,14 @@ public class RelMdExpressionLineage
     return mq.getExpressionLineage(rel.getInput(), outputExpression);
   }
 
+  /**
+   * Expression lineage from Sample.
+   */
+  public @Nullable Set<RexNode> getExpressionLineage(Sample rel,
+      RelMetadataQuery mq, RexNode outputExpression) {
+    return mq.getExpressionLineage(rel.getInput(), outputExpression);
+  }
+
   /**
    * Expression lineage from Snapshot.
    *
diff --git 
a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdMaxRowCount.java 
b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdMaxRowCount.java
index 3fe8f4311a..0d9a61ebe9 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdMaxRowCount.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdMaxRowCount.java
@@ -28,6 +28,7 @@ import org.apache.calcite.rel.core.Intersect;
 import org.apache.calcite.rel.core.Join;
 import org.apache.calcite.rel.core.Minus;
 import org.apache.calcite.rel.core.Project;
+import org.apache.calcite.rel.core.Sample;
 import org.apache.calcite.rel.core.Sort;
 import org.apache.calcite.rel.core.TableModify;
 import org.apache.calcite.rel.core.TableScan;
@@ -104,6 +105,10 @@ public class RelMdMaxRowCount
     return mq.getMaxRowCount(rel.getInput());
   }
 
+  public @Nullable Double getMaxRowCount(Sample rel, RelMetadataQuery mq) {
+    return mq.getMaxRowCount(rel.getInput());
+  }
+
   public Double getMaxRowCount(Sort rel, RelMetadataQuery mq) {
     Double rowCount = mq.getMaxRowCount(rel.getInput());
     if (rowCount == null) {
diff --git 
a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdMinRowCount.java 
b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdMinRowCount.java
index 9fff399917..88c0aab97b 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdMinRowCount.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdMinRowCount.java
@@ -27,6 +27,7 @@ import org.apache.calcite.rel.core.Intersect;
 import org.apache.calcite.rel.core.Join;
 import org.apache.calcite.rel.core.Minus;
 import org.apache.calcite.rel.core.Project;
+import org.apache.calcite.rel.core.Sample;
 import org.apache.calcite.rel.core.Sort;
 import org.apache.calcite.rel.core.TableModify;
 import org.apache.calcite.rel.core.TableScan;
@@ -103,6 +104,10 @@ public class RelMdMinRowCount
     return mq.getMinRowCount(rel.getInput());
   }
 
+  public @Nullable Double getMinRowCount(Sample rel, RelMetadataQuery mq) {
+    return mq.getMinRowCount(rel.getInput());
+  }
+
   public Double getMinRowCount(Sort rel, RelMetadataQuery mq) {
     Double rowCount = mq.getMinRowCount(rel.getInput());
     if (rowCount == null) {
diff --git 
a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdPredicates.java 
b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdPredicates.java
index e1302639c2..287933312c 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdPredicates.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdPredicates.java
@@ -34,6 +34,7 @@ import org.apache.calcite.rel.core.Join;
 import org.apache.calcite.rel.core.JoinRelType;
 import org.apache.calcite.rel.core.Minus;
 import org.apache.calcite.rel.core.Project;
+import org.apache.calcite.rel.core.Sample;
 import org.apache.calcite.rel.core.Sort;
 import org.apache.calcite.rel.core.TableModify;
 import org.apache.calcite.rel.core.TableScan;
@@ -500,6 +501,13 @@ public class RelMdPredicates
     return mq.getPulledUpPredicates(minus.getInput(0));
   }
 
+  /**
+   * Infers predicates for a Sample.
+   */
+  public RelOptPredicateList getPredicates(Sample sample, RelMetadataQuery mq) 
{
+    RelNode input = sample.getInput();
+    return mq.getPulledUpPredicates(input);
+  }
 
   /**
    * Infers predicates for a Sort.
diff --git 
a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdRowCount.java 
b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdRowCount.java
index fc1266d9a9..b7393823ba 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdRowCount.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdRowCount.java
@@ -28,6 +28,7 @@ import org.apache.calcite.rel.core.Intersect;
 import org.apache.calcite.rel.core.Join;
 import org.apache.calcite.rel.core.Minus;
 import org.apache.calcite.rel.core.Project;
+import org.apache.calcite.rel.core.Sample;
 import org.apache.calcite.rel.core.Sort;
 import org.apache.calcite.rel.core.TableModify;
 import org.apache.calcite.rel.core.TableScan;
@@ -169,6 +170,12 @@ public class RelMdRowCount
     return limit < rowCount ? limit : rowCount;
   }
 
+  public @Nullable Double getRowCount(Sample rel, RelMetadataQuery mq) {
+    final Double inputRowCount = mq.getRowCount(rel.getInput());
+    final double sampleRate = 
rel.getSamplingParameters().sampleRate.doubleValue();
+    return sampleRate * inputRowCount;
+  }
+
   // Covers Converter, Interpreter
   public @Nullable Double getRowCount(SingleRel rel, RelMetadataQuery mq) {
     return mq.getRowCount(rel.getInput());
diff --git a/core/src/test/java/org/apache/calcite/test/RelMetadataTest.java 
b/core/src/test/java/org/apache/calcite/test/RelMetadataTest.java
index 57a58a3983..04408f347e 100644
--- a/core/src/test/java/org/apache/calcite/test/RelMetadataTest.java
+++ b/core/src/test/java/org/apache/calcite/test/RelMetadataTest.java
@@ -357,6 +357,16 @@ public class RelMetadataTest {
         .assertColumnOriginSingle("DEPT", "NAME", true);
   }
 
+  /** Test case for
+   * <a 
href="https://issues.apache.org/jira/browse/CALCITE-5944";>[CALCITE-5944]
+   * Add metadata for Sample</a>. */
+  @Test void testColumnOriginsSample() {
+    final String sql = "select productid from products_temporal\n"
+        + "tablesample bernoulli(50) repeatable(1)";
+    sql(sql)
+        .assertColumnOriginSingle("PRODUCTS_TEMPORAL", "PRODUCTID", false);
+  }
+
   @Test void testColumnOriginsSnapshot() {
     final String sql = "select productid from products_temporal\n"
         + "for system_time as of TIMESTAMP '2011-01-02 00:00:00'";
@@ -700,6 +710,16 @@ public class RelMetadataTest {
     sql(sql).assertThatRowCount(is(7d), is(0D), is(7d));
   }
 
+  /** Test case for
+   * <a 
href="https://issues.apache.org/jira/browse/CALCITE-5944";>[CALCITE-5944]
+   * Add metadata for Sample</a>. */
+  @Test void testRowCountSample() {
+    sql("select * from emp tablesample bernoulli(50) repeatable(1)")
+        .assertThatRowCount(is(EMP_SIZE * 0.5), is(0D), 
is(Double.POSITIVE_INFINITY));
+    sql("select * from emp tablesample system(20)")
+        .assertThatRowCount(is(EMP_SIZE * 0.2), is(0D), 
is(Double.POSITIVE_INFINITY));
+  }
+
   @Test void testRowCountAggregate() {
     final String sql = "select deptno from emp group by deptno";
     sql(sql).assertThatRowCount(is(1.4D), is(0D), 
is(Double.POSITIVE_INFINITY));
@@ -2232,6 +2252,19 @@ public class RelMetadataTest {
         sortsAs("[=($0, 1), =($1, 2)]"));
   }
 
+  /** Test case for
+   * <a 
href="https://issues.apache.org/jira/browse/CALCITE-5944";>[CALCITE-5944]
+   * Add metadata for Sample</a>. */
+  @Test void testPullUpPredicatesFromSample() {
+    final RelNode rel = sql("select * from("
+        + "select empno, deptno, comm from emp\n"
+        + "where empno=1 and deptno=2)\n"
+        + "tablesample bernoulli(50) repeatable(1)").toRel();
+    final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
+    assertThat(mq.getPulledUpPredicates(rel).pulledUpPredicates,
+        sortsAs("[=($0, 1), =($1, 2)]"));
+  }
+
   @Test void testDistributionSimple() {
     RelNode rel = sql("select * from emp where deptno = 10").toRel();
     final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
@@ -2296,6 +2329,16 @@ public class RelMetadataTest {
         String.valueOf(r), is(expected));
   }
 
+  /** Test case for
+   * <a 
href="https://issues.apache.org/jira/browse/CALCITE-5944";>[CALCITE-5944]
+   * Add metadata for Sample</a>. */
+  @Test void testExpressionLineageSample() {
+    final String sql = "select productid from products_temporal\n"
+        + "tablesample bernoulli(50) repeatable(1)";
+    final String expected = "[[CATALOG, SALES, PRODUCTS_TEMPORAL].#0.$0]";
+    final String comment = "'productid' is column 0 in 
'catalog.sales.products_temporal'";
+    assertExpressionLineage(sql, 0, expected, comment);
+  }
 
   /** Test case for
    * <a 
href="https://issues.apache.org/jira/browse/CALCITE-5392";>[CALCITE-5392]
@@ -2863,6 +2906,19 @@ public class RelMetadataTest {
     checkAllPredicatesAndTableSetOp(sql);
   }
 
+  /** Test case for
+   * <a 
href="https://issues.apache.org/jira/browse/CALCITE-5944";>[CALCITE-5944]
+   * Add metadata for Sample</a>. */
+  @Test void testAllPredicatesSample() {
+    final RelNode rel = sql("select * from("
+        + "select empno, deptno, comm from emp\n"
+        + "where empno=1 and deptno=2)\n"
+        + "tablesample bernoulli(50) repeatable(1)").toRel();
+    final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
+    assertThat(mq.getAllPredicates(rel).pulledUpPredicates,
+        sortsAs("[AND(=([CATALOG, SALES, EMP].#0.$0, 1), =([CATALOG, SALES, 
EMP].#0.$7, 2))]"));
+  }
+
   public void checkAllPredicatesAndTableSetOp(String sql) {
     final RelNode rel = sql(sql).toRel();
     final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
diff --git 
a/core/src/test/resources/org/apache/calcite/rel/metadata/janino/GeneratedMetadata_AllPredicatesHandler.java
 
b/core/src/test/resources/org/apache/calcite/rel/metadata/janino/GeneratedMetadata_AllPredicatesHandler.java
index 2abd62e2a3..9cbacd5326 100644
--- 
a/core/src/test/resources/org/apache/calcite/rel/metadata/janino/GeneratedMetadata_AllPredicatesHandler.java
+++ 
b/core/src/test/resources/org/apache/calcite/rel/metadata/janino/GeneratedMetadata_AllPredicatesHandler.java
@@ -76,6 +76,8 @@ public final class GeneratedMetadata_AllPredicatesHandler
       return provider0.getAllPredicates((org.apache.calcite.rel.core.Join) r, 
mq);
     } else if (r instanceof org.apache.calcite.rel.core.Project) {
       return provider0.getAllPredicates((org.apache.calcite.rel.core.Project) 
r, mq);
+    } else if (r instanceof org.apache.calcite.rel.core.Sample) {
+      return provider0.getAllPredicates((org.apache.calcite.rel.core.Sample) 
r, mq);
     } else if (r instanceof org.apache.calcite.rel.core.SetOp) {
       return provider0.getAllPredicates((org.apache.calcite.rel.core.SetOp) r, 
mq);
     } else if (r instanceof org.apache.calcite.rel.core.Sort) {
diff --git 
a/core/src/test/resources/org/apache/calcite/rel/metadata/janino/GeneratedMetadata_ColumnOriginHandler.java
 
b/core/src/test/resources/org/apache/calcite/rel/metadata/janino/GeneratedMetadata_ColumnOriginHandler.java
index 6063a0e006..ddb1a317b3 100644
--- 
a/core/src/test/resources/org/apache/calcite/rel/metadata/janino/GeneratedMetadata_ColumnOriginHandler.java
+++ 
b/core/src/test/resources/org/apache/calcite/rel/metadata/janino/GeneratedMetadata_ColumnOriginHandler.java
@@ -80,6 +80,8 @@ public final class GeneratedMetadata_ColumnOriginHandler
       return provider0.getColumnOrigins((org.apache.calcite.rel.core.Join) r, 
mq, a2);
     } else if (r instanceof org.apache.calcite.rel.core.Project) {
       return provider0.getColumnOrigins((org.apache.calcite.rel.core.Project) 
r, mq, a2);
+    } else if (r instanceof org.apache.calcite.rel.core.Sample) {
+      return provider0.getColumnOrigins((org.apache.calcite.rel.core.Sample) 
r, mq, a2);
     } else if (r instanceof org.apache.calcite.rel.core.SetOp) {
       return provider0.getColumnOrigins((org.apache.calcite.rel.core.SetOp) r, 
mq, a2);
     } else if (r instanceof org.apache.calcite.rel.core.Snapshot) {
diff --git 
a/core/src/test/resources/org/apache/calcite/rel/metadata/janino/GeneratedMetadata_ExpressionLineageHandler.java
 
b/core/src/test/resources/org/apache/calcite/rel/metadata/janino/GeneratedMetadata_ExpressionLineageHandler.java
index ad340108b6..5e0c668348 100644
--- 
a/core/src/test/resources/org/apache/calcite/rel/metadata/janino/GeneratedMetadata_ExpressionLineageHandler.java
+++ 
b/core/src/test/resources/org/apache/calcite/rel/metadata/janino/GeneratedMetadata_ExpressionLineageHandler.java
@@ -76,6 +76,8 @@ public final class GeneratedMetadata_ExpressionLineageHandler
       return provider0.getExpressionLineage((org.apache.calcite.rel.core.Join) 
r, mq, a2);
     } else if (r instanceof org.apache.calcite.rel.core.Project) {
       return 
provider0.getExpressionLineage((org.apache.calcite.rel.core.Project) r, mq, a2);
+    } else if (r instanceof org.apache.calcite.rel.core.Sample) {
+      return 
provider0.getExpressionLineage((org.apache.calcite.rel.core.Sample) r, mq, a2);
     } else if (r instanceof org.apache.calcite.rel.core.Snapshot) {
       return 
provider0.getExpressionLineage((org.apache.calcite.rel.core.Snapshot) r, mq, 
a2);
     } else if (r instanceof org.apache.calcite.rel.core.Sort) {
diff --git 
a/core/src/test/resources/org/apache/calcite/rel/metadata/janino/GeneratedMetadata_MaxRowCountHandler.java
 
b/core/src/test/resources/org/apache/calcite/rel/metadata/janino/GeneratedMetadata_MaxRowCountHandler.java
index db0eb1e075..34b296f8cf 100644
--- 
a/core/src/test/resources/org/apache/calcite/rel/metadata/janino/GeneratedMetadata_MaxRowCountHandler.java
+++ 
b/core/src/test/resources/org/apache/calcite/rel/metadata/janino/GeneratedMetadata_MaxRowCountHandler.java
@@ -80,6 +80,8 @@ public final class GeneratedMetadata_MaxRowCountHandler
       return provider0.getMaxRowCount((org.apache.calcite.rel.core.Minus) r, 
mq);
     } else if (r instanceof org.apache.calcite.rel.core.Project) {
       return provider0.getMaxRowCount((org.apache.calcite.rel.core.Project) r, 
mq);
+    } else if (r instanceof org.apache.calcite.rel.core.Sample) {
+      return provider0.getMaxRowCount((org.apache.calcite.rel.core.Sample) r, 
mq);
     } else if (r instanceof org.apache.calcite.rel.core.Sort) {
       return provider0.getMaxRowCount((org.apache.calcite.rel.core.Sort) r, 
mq);
     } else if (r instanceof org.apache.calcite.rel.core.TableModify) {
diff --git 
a/core/src/test/resources/org/apache/calcite/rel/metadata/janino/GeneratedMetadata_MinRowCountHandler.java
 
b/core/src/test/resources/org/apache/calcite/rel/metadata/janino/GeneratedMetadata_MinRowCountHandler.java
index b210a94dab..6fff772c64 100644
--- 
a/core/src/test/resources/org/apache/calcite/rel/metadata/janino/GeneratedMetadata_MinRowCountHandler.java
+++ 
b/core/src/test/resources/org/apache/calcite/rel/metadata/janino/GeneratedMetadata_MinRowCountHandler.java
@@ -80,6 +80,8 @@ public final class GeneratedMetadata_MinRowCountHandler
       return provider0.getMinRowCount((org.apache.calcite.rel.core.Minus) r, 
mq);
     } else if (r instanceof org.apache.calcite.rel.core.Project) {
       return provider0.getMinRowCount((org.apache.calcite.rel.core.Project) r, 
mq);
+    } else if (r instanceof org.apache.calcite.rel.core.Sample) {
+      return provider0.getMinRowCount((org.apache.calcite.rel.core.Sample) r, 
mq);
     } else if (r instanceof org.apache.calcite.rel.core.Sort) {
       return provider0.getMinRowCount((org.apache.calcite.rel.core.Sort) r, 
mq);
     } else if (r instanceof org.apache.calcite.rel.core.TableModify) {
diff --git 
a/core/src/test/resources/org/apache/calcite/rel/metadata/janino/GeneratedMetadata_PredicatesHandler.java
 
b/core/src/test/resources/org/apache/calcite/rel/metadata/janino/GeneratedMetadata_PredicatesHandler.java
index 9ecec20edf..c0bc003c41 100644
--- 
a/core/src/test/resources/org/apache/calcite/rel/metadata/janino/GeneratedMetadata_PredicatesHandler.java
+++ 
b/core/src/test/resources/org/apache/calcite/rel/metadata/janino/GeneratedMetadata_PredicatesHandler.java
@@ -78,6 +78,8 @@ public final class GeneratedMetadata_PredicatesHandler
       return provider0.getPredicates((org.apache.calcite.rel.core.Minus) r, 
mq);
     } else if (r instanceof org.apache.calcite.rel.core.Project) {
       return provider0.getPredicates((org.apache.calcite.rel.core.Project) r, 
mq);
+    } else if (r instanceof org.apache.calcite.rel.core.Sample) {
+      return provider0.getPredicates((org.apache.calcite.rel.core.Sample) r, 
mq);
     } else if (r instanceof org.apache.calcite.rel.core.Sort) {
       return provider0.getPredicates((org.apache.calcite.rel.core.Sort) r, mq);
     } else if (r instanceof org.apache.calcite.rel.core.TableModify) {
diff --git 
a/core/src/test/resources/org/apache/calcite/rel/metadata/janino/GeneratedMetadata_RowCountHandler.java
 
b/core/src/test/resources/org/apache/calcite/rel/metadata/janino/GeneratedMetadata_RowCountHandler.java
index 7f089e9a29..cef8019f14 100644
--- 
a/core/src/test/resources/org/apache/calcite/rel/metadata/janino/GeneratedMetadata_RowCountHandler.java
+++ 
b/core/src/test/resources/org/apache/calcite/rel/metadata/janino/GeneratedMetadata_RowCountHandler.java
@@ -80,6 +80,8 @@ public final class GeneratedMetadata_RowCountHandler
       return provider0.getRowCount((org.apache.calcite.rel.core.Minus) r, mq);
     } else if (r instanceof org.apache.calcite.rel.core.Project) {
       return provider0.getRowCount((org.apache.calcite.rel.core.Project) r, 
mq);
+    } else if (r instanceof org.apache.calcite.rel.core.Sample) {
+      return provider0.getRowCount((org.apache.calcite.rel.core.Sample) r, mq);
     } else if (r instanceof org.apache.calcite.rel.core.Sort) {
       return provider0.getRowCount((org.apache.calcite.rel.core.Sort) r, mq);
     } else if (r instanceof org.apache.calcite.rel.core.TableModify) {

Reply via email to