This is an automated email from the ASF dual-hosted git repository.
hyuan 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 ebc16af [CALCITE-3421] Reuse RelMetadataQuery in test suites
ebc16af is described below
commit ebc16afa935888578b5befc870c1997f307a6cb5
Author: dz <[email protected]>
AuthorDate: Wed Oct 16 19:22:37 2019 +0800
[CALCITE-3421] Reuse RelMetadataQuery in test suites
Close #1513
---
.../apache/calcite/rel/logical/LogicalCalc.java | 2 +-
.../calcite/plan/volcano/TraitPropagationTest.java | 4 +-
.../plan/volcano/VolcanoPlannerTraitTest.java | 6 +-
.../org/apache/calcite/test/RelMetadataTest.java | 120 ++++++++++-----------
.../java/org/apache/calcite/tools/PlannerTest.java | 2 +-
5 files changed, 67 insertions(+), 67 deletions(-)
diff --git a/core/src/main/java/org/apache/calcite/rel/logical/LogicalCalc.java
b/core/src/main/java/org/apache/calcite/rel/logical/LogicalCalc.java
index 2eac9bd..71257dc 100644
--- a/core/src/main/java/org/apache/calcite/rel/logical/LogicalCalc.java
+++ b/core/src/main/java/org/apache/calcite/rel/logical/LogicalCalc.java
@@ -52,7 +52,7 @@ import java.util.Set;
*
* <ul>
* <li>{@link FilterToCalcRule} creates this from a {@link LogicalFilter}
- * <li>{@link ProjectToCalcRule} creates this from a {@link LogicalFilter}
+ * <li>{@link ProjectToCalcRule} creates this from a {@link LogicalProject}
* <li>{@link org.apache.calcite.rel.rules.FilterCalcMergeRule}
* merges this with a {@link LogicalFilter}
* <li>{@link org.apache.calcite.rel.rules.ProjectCalcMergeRule}
diff --git
a/core/src/test/java/org/apache/calcite/plan/volcano/TraitPropagationTest.java
b/core/src/test/java/org/apache/calcite/plan/volcano/TraitPropagationTest.java
index 11701a6..dc31500 100644
---
a/core/src/test/java/org/apache/calcite/plan/volcano/TraitPropagationTest.java
+++
b/core/src/test/java/org/apache/calcite/plan/volcano/TraitPropagationTest.java
@@ -110,7 +110,7 @@ public class TraitPropagationTest {
RelOptUtil.dumpPlan("LOGICAL PLAN", planned, SqlExplainFormat.TEXT,
SqlExplainLevel.ALL_ATTRIBUTES));
}
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = planned.getCluster().getMetadataQuery();
assertEquals("Sortedness was not propagated", 3,
mq.getCumulativeCost(planned).getRows(), 0);
}
@@ -323,7 +323,7 @@ public class TraitPropagationTest {
public static PhysProj create(final RelNode input,
final List<RexNode> projects, RelDataType rowType) {
final RelOptCluster cluster = input.getCluster();
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = cluster.getMetadataQuery();
final RelTraitSet traitSet =
cluster.traitSet().replace(PHYSICAL)
.replaceIfs(
diff --git
a/core/src/test/java/org/apache/calcite/plan/volcano/VolcanoPlannerTraitTest.java
b/core/src/test/java/org/apache/calcite/plan/volcano/VolcanoPlannerTraitTest.java
index 2c42b3c..07edf4a 100644
---
a/core/src/test/java/org/apache/calcite/plan/volcano/VolcanoPlannerTraitTest.java
+++
b/core/src/test/java/org/apache/calcite/plan/volcano/VolcanoPlannerTraitTest.java
@@ -264,12 +264,12 @@ public class VolcanoPlannerTraitTest {
RelOptCluster cluster = newCluster(planner);
NoneTinyLeafRel leaf = new NoneTinyLeafRel(cluster, "noneLeafRel");
planner.setRoot(leaf);
- RelOptCost cost = planner.getCost(leaf, RelMetadataQuery.instance());
+ RelOptCost cost = planner.getCost(leaf, cluster.getMetadataQuery());
assertTrue(cost.isInfinite());
planner.setNoneConventionHasInfiniteCost(false);
- cost = planner.getCost(leaf, RelMetadataQuery.instance());
+ cost = planner.getCost(leaf, cluster.getMetadataQuery());
assertTrue(!cost.isInfinite());
}
@@ -342,7 +342,7 @@ public class VolcanoPlannerTraitTest {
RelTrait fromTrait = rel.getTraitSet().getTrait(this);
if (conversionMap.containsKey(fromTrait)) {
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
for (Pair<RelTrait, ConverterRule> traitAndRule
: conversionMap.get(fromTrait)) {
RelTrait trait = traitAndRule.left;
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 b877680..a5546e7 100644
--- a/core/src/test/java/org/apache/calcite/test/RelMetadataTest.java
+++ b/core/src/test/java/org/apache/calcite/test/RelMetadataTest.java
@@ -198,7 +198,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
double expected,
double epsilon) {
RelNode rel = convertSql(sql);
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
Double result = mq.getPercentageOriginalRows(rel);
assertTrue(result != null);
assertEquals(expected, result, epsilon);
@@ -284,7 +284,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
private Set<RelColumnOrigin> checkColumnOrigin(String sql) {
RelNode rel = convertSql(sql);
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
return mq.getColumnOrigins(rel, 0);
}
@@ -486,7 +486,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
private void checkRowCount(String sql, double expected, double expectedMin,
double expectedMax) {
RelNode rel = convertSql(sql);
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
final Double result = mq.getRowCount(rel);
assertThat(result, notNullValue());
assertEquals(expected, result, 0d);
@@ -707,7 +707,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
String sql,
double expected) {
RelNode rel = convertSql(sql);
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
Double result = mq.getSelectivity(rel, null);
assertTrue(result != null);
assertEquals(expected, result, EPSILON);
@@ -752,7 +752,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
private void checkRelSelectivity(
RelNode rel,
double expected) {
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
Double result = mq.getSelectivity(rel, null);
assertTrue(result != null);
assertEquals(expected, result, EPSILON);
@@ -797,7 +797,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
new CachingRelMetadataProvider(
rel.getCluster().getMetadataProvider(),
rel.getCluster().getPlanner()));
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
Double result = mq.getSelectivity(rel, null);
assertThat(result,
within(DEFAULT_COMP_SELECTIVITY * DEFAULT_EQUAL_SELECTIVITY, EPSILON));
@@ -823,7 +823,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
RelMetadataQuery.THREAD_PROVIDERS.set(
JaninoRelMetadataProvider.of(
new CachingRelMetadataProvider(metadataProvider, planner)));
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
final Double result = mq.getRowCount(rel);
assertThat(result, within(14d, 0.1d));
}
@@ -832,7 +832,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
@Test public void testDistinctRowCountTable() {
// no unique key information is available so return null
RelNode rel = convertSql("select * from emp where deptno = 10");
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
ImmutableBitSet groupKey =
ImmutableBitSet.of(rel.getRowType().getFieldNames().indexOf("DEPTNO"));
Double result = mq.getDistinctRowCount(rel, groupKey, null);
@@ -842,7 +842,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
@Test public void testDistinctRowCountTableEmptyKey() {
RelNode rel = convertSql("select * from emp where deptno = 10");
ImmutableBitSet groupKey = ImmutableBitSet.of(); // empty key
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
Double result = mq.getDistinctRowCount(rel, groupKey, null);
assertThat(result, is(1D));
}
@@ -851,7 +851,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
* and {@link RelMetadataQuery#areColumnsUnique(RelNode, ImmutableBitSet)}
* return consistent results. */
private void assertUniqueConsistent(RelNode rel) {
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
final Set<ImmutableBitSet> uniqueKeys = mq.getUniqueKeys(rel);
final ImmutableBitSet allCols =
ImmutableBitSet.range(0, rel.getRowType().getFieldCount());
@@ -878,7 +878,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
* NullPointerException"</a>. */
@Test public void testJoinUniqueKeys() {
RelNode rel = convertSql("select * from emp join bonus using (ename)");
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
Set<ImmutableBitSet> result = mq.getUniqueKeys(rel);
assertThat(result.isEmpty(), is(true));
assertUniqueConsistent(rel);
@@ -890,7 +890,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
+ " lateral (\n"
+ " select * from dept where dept.deptno = e.deptno)";
final RelNode rel = convertSql(sql);
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
assertThat(rel, isA((Class) Project.class));
final Project project = (Project) rel;
@@ -911,7 +911,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
@Test public void testGroupByEmptyUniqueKeys() {
RelNode rel = convertSql("select count(*) from emp");
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
Set<ImmutableBitSet> result = mq.getUniqueKeys(rel);
assertThat(result,
CoreMatchers.equalTo(
@@ -921,7 +921,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
@Test public void testGroupByEmptyHavingUniqueKeys() {
RelNode rel = convertSql("select count(*) from emp where 1 = 1");
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
final Set<ImmutableBitSet> result = mq.getUniqueKeys(rel);
assertThat(result,
CoreMatchers.equalTo(
@@ -937,7 +937,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
+ "group by cast(null as int)) as d on e.empno = d.deptno \n"
+ "group by e.empno, d.deptno";
RelNode rel = convertSql(sql);
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
final ImmutableBitSet allCols =
ImmutableBitSet.range(0, rel.getRowType().getFieldCount());
Boolean areGroupByKeysUnique = mq.areColumnsUnique(rel.getInput(0),
allCols);
@@ -947,7 +947,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
@Test public void testGroupBy() {
RelNode rel = convertSql("select deptno, count(*), sum(sal) from emp\n"
+ "group by deptno");
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
final Set<ImmutableBitSet> result = mq.getUniqueKeys(rel);
assertThat(result,
CoreMatchers.equalTo(
@@ -959,7 +959,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
RelNode rel = convertSql("select deptno from emp\n"
+ "union\n"
+ "select deptno from dept");
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
final Set<ImmutableBitSet> result = mq.getUniqueKeys(rel);
assertThat(result,
CoreMatchers.equalTo(
@@ -1029,7 +1029,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
// Top node is a filter. Its metadata uses getColType(RelNode, int).
assertThat(rel, instanceOf(LogicalFilter.class));
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
assertThat(colType(mq, rel, 0), equalTo("DEPTNO-rel"));
assertThat(colType(mq, rel, 1), equalTo("EXPR$1-rel"));
@@ -1112,7 +1112,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
rexBuilder.makeInputRef(empSort, 0),
rexBuilder.makeInputRef(empSort, 3)));
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = cluster.getMetadataQuery();
collations = RelMdCollation.project(mq, empSort, projects);
assertThat(collations.size(), equalTo(1));
assertThat(collations.get(0).getFieldCollations().size(), equalTo(2));
@@ -1192,7 +1192,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
@Test public void testColumnUniquenessForValues() {
Frameworks.withPlanner((cluster, relOptSchema, rootSchema) -> {
final RexBuilder rexBuilder = cluster.getRexBuilder();
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = cluster.getMetadataQuery();
final RelDataType rowType = cluster.getTypeFactory().builder()
.add("a", SqlTypeName.INTEGER)
.add("b", SqlTypeName.VARCHAR)
@@ -1273,7 +1273,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
private void checkAverageRowSize(RelOptCluster cluster, RelOptTable empTable,
RelOptTable deptTable) {
final RexBuilder rexBuilder = cluster.getRexBuilder();
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = cluster.getMetadataQuery();
final LogicalTableScan empScan = LogicalTableScan.create(cluster,
empTable);
Double rowSize = mq.getAverageRowSize(empScan);
@@ -1412,7 +1412,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
private void checkPredicates(RelOptCluster cluster, RelOptTable empTable,
RelOptTable deptTable) {
final RelBuilder relBuilder = RelBuilder.proto().create(cluster, null);
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = cluster.getMetadataQuery();
final LogicalTableScan empScan = LogicalTableScan.create(cluster,
empTable);
relBuilder.push(empScan);
@@ -1521,7 +1521,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
+ " select 1 as a, 2 as b from emp)subq\n"
+ "group by a";
final Aggregate rel = (Aggregate) convertSql(sql);
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
RelOptPredicateList inputSet = mq.getPulledUpPredicates(rel);
ImmutableList<RexNode> pulledUpPredicates = inputSet.pulledUpPredicates;
assertThat(pulledUpPredicates, sortsAs("[=($0, 1)]"));
@@ -1559,7 +1559,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
JdbcAdapterTest.LockWrapper.lock(LOCK)) {
// FIXME: fix timeout when enable implicit type coercion.
final RelNode rel = convertSql(sql, false);
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
RelOptPredicateList inputSet = mq.getPulledUpPredicates(rel.getInput(0));
assertThat(inputSet.pulledUpPredicates.size(), is(18));
}
@@ -1571,7 +1571,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
+ " from emp\n"
+ " where mgr is null and deptno < 10)";
final RelNode rel = convertSql(sql);
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
RelOptPredicateList list = mq.getPulledUpPredicates(rel);
assertThat(list.pulledUpPredicates,
sortsAs("[<($0, 10), =($3, 'y'), =($4, 1), IS NULL($1), IS
NULL($2)]"));
@@ -1582,7 +1582,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
+ " from emp\n"
+ " where mgr is null and deptno < 10";
final RelNode rel = convertSql(sql);
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
RelOptPredicateList list = mq.getPulledUpPredicates(rel);
// Uses "IS NOT DISTINCT FROM" rather than "=" because cannot guarantee
not null.
assertThat(list.pulledUpPredicates,
@@ -1591,7 +1591,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
@Test public void testDistributionSimple() {
RelNode rel = convertSql("select * from emp where deptno = 10");
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
RelDistribution d = mq.getDistribution(rel);
assertThat(d, is(RelDistributions.BROADCAST_DISTRIBUTED));
}
@@ -1601,7 +1601,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
final RelDistribution dist = RelDistributions.hash(ImmutableList.of(1));
final LogicalExchange exchange = LogicalExchange.create(rel, dist);
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
RelDistribution d = mq.getDistribution(exchange);
assertThat(d, is(dist));
}
@@ -1611,7 +1611,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
final RelDistribution dist =
RelDistributions.hash(ImmutableList.<Integer>of());
final LogicalExchange exchange = LogicalExchange.create(rel, dist);
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
RelDistribution d = mq.getDistribution(exchange);
assertThat(d, is(dist));
}
@@ -1621,7 +1621,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
final RelDistribution dist = RelDistributions.SINGLETON;
final LogicalExchange exchange = LogicalExchange.create(rel, dist);
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
RelDistribution d = mq.getDistribution(exchange);
assertThat(d, is(dist));
}
@@ -1639,7 +1639,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
@Test public void testExpressionLineageStar() {
// All columns in output
final RelNode tableRel = convertSql("select * from emp");
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = tableRel.getCluster().getMetadataQuery();
final RexNode ref = RexInputRef.of(4,
tableRel.getRowType().getFieldList());
final Set<RexNode> r = mq.getExpressionLineage(tableRel, ref);
@@ -1654,7 +1654,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
// mgr is column 3 in catalog.sales.emp
// deptno is column 7 in catalog.sales.emp
final RelNode rel = convertSql("select mgr, deptno from emp");
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
final RexNode ref1 = RexInputRef.of(0, rel.getRowType().getFieldList());
final Set<RexNode> r1 = mq.getExpressionLineage(rel, ref1);
@@ -1677,7 +1677,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
// deptno is column 7 in catalog.sales.emp
// mgr is column 3 in catalog.sales.emp
final RelNode rel = convertSql("select deptno, mgr from emp");
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
final RexNode ref1 = RexInputRef.of(0, rel.getRowType().getFieldList());
final Set<RexNode> r1 = mq.getExpressionLineage(rel, ref1);
@@ -1700,7 +1700,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
// empno is column 0 in catalog.sales.emp
// deptno is column 7 in catalog.sales.emp
final RelNode rel = convertSql("select empno + deptno from emp");
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
final RexNode ref = RexInputRef.of(0, rel.getRowType().getFieldList());
final Set<RexNode> r = mq.getExpressionLineage(rel, ref);
@@ -1722,7 +1722,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
@Test public void testExpressionLineageInnerJoinLeft() {
// ename is column 1 in catalog.sales.emp
final RelNode rel = convertSql("select ename from emp,dept");
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
final RexNode ref = RexInputRef.of(0, rel.getRowType().getFieldList());
final Set<RexNode> r = mq.getExpressionLineage(rel, ref);
@@ -1735,7 +1735,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
@Test public void testExpressionLineageInnerJoinRight() {
// ename is column 0 in catalog.sales.bonus
final RelNode rel = convertSql("select bonus.ename from emp join bonus
using (ename)");
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
final RexNode ref = RexInputRef.of(0, rel.getRowType().getFieldList());
final Set<RexNode> r = mq.getExpressionLineage(rel, ref);
@@ -1748,7 +1748,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
@Test public void testExpressionLineageLeftJoinLeft() {
// ename is column 1 in catalog.sales.emp
final RelNode rel = convertSql("select ename from emp left join dept using
(deptno)");
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
final RexNode ref = RexInputRef.of(0, rel.getRowType().getFieldList());
final Set<RexNode> r = mq.getExpressionLineage(rel, ref);
@@ -1761,7 +1761,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
@Test public void testExpressionLineageRightJoinRight() {
// ename is column 0 in catalog.sales.bonus
final RelNode rel = convertSql("select bonus.ename from emp right join
bonus using (ename)");
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
final RexNode ref = RexInputRef.of(0, rel.getRowType().getFieldList());
final Set<RexNode> r = mq.getExpressionLineage(rel, ref);
@@ -1778,7 +1778,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
+ "inner join (select * from emp limit 2) as b\n"
+ "on a.deptno = b.deptno");
final RelNode tableRel = convertSql("select * from emp");
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = tableRel.getCluster().getMetadataQuery();
final RexNode ref1 = RexInputRef.of(0, rel.getRowType().getFieldList());
final Set<RexNode> r1 = mq.getExpressionLineage(rel, ref1);
@@ -1804,7 +1804,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
// lineage cannot be determined
final RelNode rel = convertSql("select name as dname from emp left outer
join dept"
+ " on emp.deptno = dept.deptno");
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
final RexNode ref = RexInputRef.of(0, rel.getRowType().getFieldList());
final Set<RexNode> r = mq.getExpressionLineage(rel, ref);
@@ -1815,7 +1815,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
// ename is column 1 in catalog.sales.emp
final RelNode rel = convertSql("select ename from emp where deptno = 10");
final RelNode tableRel = convertSql("select * from emp");
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
final RexNode ref = RexInputRef.of(0, rel.getRowType().getFieldList());
final Set<RexNode> r = mq.getExpressionLineage(rel, ref);
@@ -1831,7 +1831,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
final RelNode rel = convertSql("select deptno, count(*) from emp where
deptno > 10 "
+ "group by deptno having count(*) = 0");
final RelNode tableRel = convertSql("select * from emp");
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
final RexNode ref = RexInputRef.of(0, rel.getRowType().getFieldList());
final Set<RexNode> r = mq.getExpressionLineage(rel, ref);
@@ -1846,7 +1846,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
// lineage cannot be determined
final RelNode rel = convertSql("select deptno, count(*) from emp where
deptno > 10 "
+ "group by deptno having count(*) = 0");
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
final RexNode ref = RexInputRef.of(1, rel.getRowType().getFieldList());
final Set<RexNode> r = mq.getExpressionLineage(rel, ref);
@@ -1859,7 +1859,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
+ " select * from emp union all select * from emp) "
+ "where deptno = 10");
final RelNode tableRel = convertSql("select * from emp");
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
final RexNode ref = RexInputRef.of(0, rel.getRowType().getFieldList());
final Set<RexNode> r = mq.getExpressionLineage(rel, ref);
@@ -1884,7 +1884,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
+ " (select * from emp union all select * from emp) b \n"
+ " on a.empno = b.empno \n"
+ " where b.deptno = 10");
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
final RexNode ref = RexInputRef.of(0, rel.getRowType().getFieldList());
final Set<RexNode> r = mq.getExpressionLineage(rel, ref);
@@ -1914,7 +1914,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
@Test public void testExpressionLineageValues() {
// lineage cannot be determined
final RelNode rel = convertSql("select * from (values (1), (2)) as t(c)");
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
final RexNode ref = RexInputRef.of(0, rel.getRowType().getFieldList());
final Set<RexNode> r = mq.getExpressionLineage(rel, ref);
@@ -1935,7 +1935,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
private void checkAllPredicates(RelOptCluster cluster, RelOptTable empTable,
RelOptTable deptTable) {
final RelBuilder relBuilder = RelBuilder.proto().create(cluster, null);
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = cluster.getMetadataQuery();
final LogicalTableScan empScan = LogicalTableScan.create(cluster,
empTable);
relBuilder.push(empScan);
@@ -1991,7 +1991,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
+ " select empno as a, sal as b from emp where empno = 5)subq\n"
+ "group by a";
final RelNode rel = convertSql(sql);
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
RelOptPredicateList inputSet = mq.getAllPredicates(rel);
ImmutableList<RexNode> pulledUpPredicates = inputSet.pulledUpPredicates;
assertThat(pulledUpPredicates.size(), is(1));
@@ -2010,7 +2010,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
+ "group by a) \n"
+ "where a = 5";
final RelNode rel = convertSql(sql);
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
RelOptPredicateList inputSet = mq.getAllPredicates(rel);
ImmutableList<RexNode> pulledUpPredicates = inputSet.pulledUpPredicates;
assertThat(pulledUpPredicates.size(), is(1));
@@ -2029,7 +2029,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
+ "group by a) \n"
+ "where b = 5";
final RelNode rel = convertSql(sql);
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
RelOptPredicateList inputSet = mq.getAllPredicates(rel);
// Filter on aggregate, we cannot infer lineage
assertNull(inputSet);
@@ -2048,7 +2048,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
+ "on a.deptno = c.deptno) as y\n"
+ "on x.deptno = y.deptno";
final RelNode rel = convertSql(sql);
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
final RelOptPredicateList inputSet = mq.getAllPredicates(rel);
assertThat(inputSet.pulledUpPredicates.toString(),
equalTo("[true, "
@@ -2074,7 +2074,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
+ "inner join (select * from emp limit 2) as c\n"
+ "on a.deptno = c.deptno";
final RelNode rel = convertSql(sql);
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
final RelOptPredicateList inputSet = mq.getAllPredicates(rel);
assertThat(inputSet.pulledUpPredicates.toString(),
equalTo("[true, "
@@ -2094,7 +2094,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
+ "cross join (select * from dept limit 1) as b\n"
+ "cross join (select * from emp where empno = 5 limit 2) as c) as x";
final RelNode rel = convertSql(sql);
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
final Set<RelTableRef> tableReferences =
Sets.newTreeSet(mq.getTableReferences(rel));
assertThat(tableReferences.toString(),
equalTo("[[CATALOG, SALES, DEPT].#0, "
@@ -2116,7 +2116,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
final LogicalJoin join =
LogicalJoin.create(nodeWithUnknown, node, rexBuilder.makeLiteral(true),
ImmutableSet.of(), JoinRelType.INNER);
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = node.getCluster().getMetadataQuery();
final Set<RelTableRef> tableReferences = mq.getTableReferences(join);
assertNull(tableReferences);
}
@@ -2127,7 +2127,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
+ "union all select emp.deptno, emp.sal from emp\n"
+ "union all select emp.deptno, emp.sal from emp where empno = 5) as
x";
final RelNode rel = convertSql(sql);
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
final Set<RelTableRef> tableReferences =
Sets.newTreeSet(mq.getTableReferences(rel));
assertThat(tableReferences.toString(),
equalTo("[[CATALOG, SALES, EMP].#0, "
@@ -2149,14 +2149,14 @@ public class RelMetadataTest extends SqlToRelTestBase {
final LogicalUnion union =
LogicalUnion.create(ImmutableList.of(nodeWithUnknown, node),
true);
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = node.getCluster().getMetadataQuery();
final Set<RelTableRef> tableReferences = mq.getTableReferences(union);
assertNull(tableReferences);
}
private void checkNodeTypeCount(String sql, Map<Class<? extends RelNode>,
Integer> expected) {
final RelNode rel = convertSql(sql);
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
final Multimap<Class<? extends RelNode>, RelNode> result =
mq.getNodeTypes(rel);
assertThat(result, notNullValue());
final Map<Class<? extends RelNode>, Integer> resultCount = new HashMap<>();
@@ -2418,7 +2418,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
@Test public void testEmptyAggregateTableOrigin() {
final FrameworkConfig config = RelBuilderTest.config().build();
final RelBuilder builder = RelBuilder.create(config);
- RelMetadataQuery mq = RelMetadataQuery.instance();
+ RelMetadataQuery mq = builder.getCluster().getMetadataQuery();
RelNode agg = builder
.scan("EMP")
.aggregate(builder.groupKey())
@@ -2435,7 +2435,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
.scan("DEPT")
.join(JoinRelType.INNER, builder.call(NONDETERMINISTIC_OP))
.build();
- RelMetadataQuery mq = RelMetadataQuery.instance();
+ RelMetadataQuery mq = join.getCluster().getMetadataQuery();
assertTrue(mq.getPulledUpPredicates(join).pulledUpPredicates.isEmpty());
RelNode join1 = builder
@@ -2457,7 +2457,7 @@ public class RelMetadataTest extends SqlToRelTestBase {
.scan("EMP")
.filter(builder.call(NONDETERMINISTIC_OP))
.build();
- RelMetadataQuery mq = RelMetadataQuery.instance();
+ RelMetadataQuery mq = filter.getCluster().getMetadataQuery();
assertTrue(mq.getPulledUpPredicates(filter).pulledUpPredicates.isEmpty());
RelNode filter1 = builder
diff --git a/core/src/test/java/org/apache/calcite/tools/PlannerTest.java
b/core/src/test/java/org/apache/calcite/tools/PlannerTest.java
index db9dc9e..e476d99 100644
--- a/core/src/test/java/org/apache/calcite/tools/PlannerTest.java
+++ b/core/src/test/java/org/apache/calcite/tools/PlannerTest.java
@@ -284,7 +284,7 @@ public class PlannerTest {
SqlNode parse = planner.parse(sql);
SqlNode validate = planner.validate(parse);
RelNode rel = planner.rel(validate).project();
- final RelMetadataQuery mq = RelMetadataQuery.instance();
+ final RelMetadataQuery mq = rel.getCluster().getMetadataQuery();
final RelOptPredicateList predicates = mq.getPulledUpPredicates(rel);
final String buf = predicates.pulledUpPredicates.toString();
assertThat(buf, equalTo(expectedPredicates));