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) {