http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/test/java/org/apache/calcite/test/SqlValidatorTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/calcite/test/SqlValidatorTest.java b/core/src/test/java/org/apache/calcite/test/SqlValidatorTest.java index d710661..d1f0ee6 100644 --- a/core/src/test/java/org/apache/calcite/test/SqlValidatorTest.java +++ b/core/src/test/java/org/apache/calcite/test/SqlValidatorTest.java @@ -43,7 +43,6 @@ import org.apache.calcite.sql.validate.SqlValidatorUtil; import org.apache.calcite.util.Bug; import org.apache.calcite.util.ImmutableBitSet; -import com.google.common.base.Function; import com.google.common.collect.ImmutableList; import com.google.common.collect.Ordering; @@ -61,6 +60,7 @@ import java.util.Comparator; import java.util.List; import java.util.Locale; import java.util.Objects; +import java.util.function.Consumer; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.is; @@ -5988,16 +5988,10 @@ public class SqlValidatorTest extends SqlValidatorTestCase { * lurking in the validation process. */ @Test public void testLarge() { - checkLarge(700, - new Function<String, Void>() { - public Void apply(String input) { - check(input); - return null; - } - }); + checkLarge(700, this::check); } - static void checkLarge(int x, Function<String, Void> f) { + static void checkLarge(int x, Consumer<String> f) { if (System.getProperty("os.name").startsWith("Windows")) { // NOTE jvs 1-Nov-2006: Default thread stack size // on Windows is too small, so avoid stack overflow @@ -6006,24 +6000,24 @@ public class SqlValidatorTest extends SqlValidatorTestCase { // E.g. large = "deptno * 1 + deptno * 2 + deptno * 3". String large = list(" + ", "deptno * ", x); - f.apply("select " + large + "from emp"); - f.apply("select distinct " + large + "from emp"); - f.apply("select " + large + " from emp " + "group by deptno"); - f.apply("select * from emp where " + large + " > 5"); - f.apply("select * from emp order by " + large + " desc"); - f.apply("select " + large + " from emp order by 1"); - f.apply("select distinct " + large + " from emp order by " + large); + f.accept("select " + large + "from emp"); + f.accept("select distinct " + large + "from emp"); + f.accept("select " + large + " from emp " + "group by deptno"); + f.accept("select * from emp where " + large + " > 5"); + f.accept("select * from emp order by " + large + " desc"); + f.accept("select " + large + " from emp order by 1"); + f.accept("select distinct " + large + " from emp order by " + large); // E.g. "in (0, 1, 2, ...)" - f.apply("select * from emp where deptno in (" + list(", ", "", x) + ")"); + f.accept("select * from emp where deptno in (" + list(", ", "", x) + ")"); // E.g. "where x = 1 or x = 2 or x = 3 ..." - f.apply("select * from emp where " + list(" or ", "deptno = ", x)); + f.accept("select * from emp where " + list(" or ", "deptno = ", x)); // E.g. "select x1, x2 ... from ( // select 'a' as x1, 'a' as x2, ... from emp union // select 'bb' as x1, 'bb' as x2, ... from dept)" - f.apply("select " + list(", ", "x", x) + f.accept("select " + list(", ", "x", x) + " from (select " + list(", ", "'a' as x", x) + " from emp " + "union all select " + list(", ", "'bb' as x", x) + " from dept)"); } @@ -8544,20 +8538,17 @@ public class SqlValidatorTest extends SqlValidatorTestCase { * the documentation</a>. */ @Test public void testOperatorsSortedByPrecedence() { final StringBuilder b = new StringBuilder(); - final Comparator<SqlOperator> comparator = - new Comparator<SqlOperator>() { - public int compare(SqlOperator o1, SqlOperator o2) { - int c = Integer.compare(prec(o1), prec(o2)); - if (c != 0) { - return -c; - } - c = o1.getName().compareTo(o2.getName()); - if (c != 0) { - return c; - } - return o1.getSyntax().compareTo(o2.getSyntax()); - } - }; + final Comparator<SqlOperator> comparator = (o1, o2) -> { + int c = Integer.compare(prec(o1), prec(o2)); + if (c != 0) { + return -c; + } + c = o1.getName().compareTo(o2.getName()); + if (c != 0) { + return c; + } + return o1.getSyntax().compareTo(o2.getSyntax()); + }; final List<SqlOperator> operators = SqlStdOperatorTable.instance().getOperatorList(); int p = -1;
http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/test/java/org/apache/calcite/test/SqlValidatorTestCase.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/calcite/test/SqlValidatorTestCase.java b/core/src/test/java/org/apache/calcite/test/SqlValidatorTestCase.java index b78df79..7e983dd 100644 --- a/core/src/test/java/org/apache/calcite/test/SqlValidatorTestCase.java +++ b/core/src/test/java/org/apache/calcite/test/SqlValidatorTestCase.java @@ -28,7 +28,6 @@ import org.apache.calcite.sql.test.DelegatingSqlTestFactory; import org.apache.calcite.sql.test.SqlTestFactory; import org.apache.calcite.sql.test.SqlTester; import org.apache.calcite.sql.test.SqlTesterImpl; -import org.apache.calcite.sql.test.SqlTests; import org.apache.calcite.sql.validate.SqlConformance; import org.apache.calcite.sql.validate.SqlConformanceEnum; import org.apache.calcite.sql.validate.SqlMonotonicity; @@ -620,13 +619,9 @@ public class SqlValidatorTestCase { } public Sql bindType(final String bindType) { - tester.check(sql, null, - new SqlTester.ParameterChecker() { - public void checkParameters(RelDataType parameterRowType) { - assertThat(parameterRowType.toString(), is(bindType)); - } - }, - SqlTests.ANY_RESULT_CHECKER); + tester.check(sql, null, parameterRowType -> + assertThat(parameterRowType.toString(), is(bindType)), + result -> { }); return this; } http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/test/java/org/apache/calcite/test/StreamTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/calcite/test/StreamTest.java b/core/src/test/java/org/apache/calcite/test/StreamTest.java index d425f30..b25da6d 100644 --- a/core/src/test/java/org/apache/calcite/test/StreamTest.java +++ b/core/src/test/java/org/apache/calcite/test/StreamTest.java @@ -37,9 +37,7 @@ import org.apache.calcite.schema.TableFactory; import org.apache.calcite.sql.SqlCall; import org.apache.calcite.sql.SqlNode; import org.apache.calcite.sql.type.SqlTypeName; -import org.apache.calcite.util.ImmutableBitSet; -import com.google.common.base.Function; import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; @@ -51,6 +49,7 @@ import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.Iterator; import java.util.Map; +import java.util.function.Consumer; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.is; @@ -246,36 +245,29 @@ public class StreamTest { .withDefaultSchema(INFINITE_STREAM_SCHEMA_NAME) .query("select stream * from orders") .explainContains(explain) - .returns( - new Function<ResultSet, Void>() { - public Void apply(final ResultSet resultSet) { - int n = 0; - try { - while (resultSet.next()) { - if (++n == 5) { - new Thread( - new Runnable() { - @Override public void run() { - try { - Thread.sleep(3); - resultSet.getStatement().cancel(); - } catch (InterruptedException | SQLException e) { - // ignore - } - } - }).start(); - } + .returns(resultSet -> { + int n = 0; + try { + while (resultSet.next()) { + if (++n == 5) { + new Thread(() -> { + try { + Thread.sleep(3); + resultSet.getStatement().cancel(); + } catch (InterruptedException | SQLException e) { + // ignore } - fail("expected cancel, got end-of-data"); - } catch (SQLException e) { - assertThat(e.getMessage(), is("Statement canceled")); - } - // With a 3 millisecond delay, typically n is between 200 - 400 - // before cancel takes effect. - assertTrue("n is " + n, n > 5); - return null; + }).start(); } - }); + } + fail("expected cancel, got end-of-data"); + } catch (SQLException e) { + assertThat(e.getMessage(), is("Statement canceled")); + } + // With a 3 millisecond delay, typically n is between 200 - 400 + // before cancel takes effect. + assertTrue("n is " + n, n > 5); + }); } @Test public void testStreamToRelationJoin() { @@ -332,26 +324,23 @@ public class StreamTest { .query(sql); } - private Function<ResultSet, Void> startsWith(String... rows) { + private Consumer<ResultSet> startsWith(String... rows) { final ImmutableList<String> rowList = ImmutableList.copyOf(rows); - return new Function<ResultSet, Void>() { - public Void apply(ResultSet input) { - try { - final CalciteAssert.ResultSetFormatter formatter = - new CalciteAssert.ResultSetFormatter(); - final ResultSetMetaData metaData = input.getMetaData(); - for (String expectedRow : rowList) { - if (!input.next()) { - throw new AssertionError("input ended too soon"); - } - formatter.rowToString(input, metaData); - String actualRow = formatter.string(); - assertThat(actualRow, equalTo(expectedRow)); + return resultSet -> { + try { + final CalciteAssert.ResultSetFormatter formatter = + new CalciteAssert.ResultSetFormatter(); + final ResultSetMetaData metaData = resultSet.getMetaData(); + for (String expectedRow : rowList) { + if (!resultSet.next()) { + throw new AssertionError("input ended too soon"); } - return null; - } catch (SQLException e) { - throw new RuntimeException(e); + formatter.rowToString(resultSet, metaData); + String actualRow = formatter.string(); + assertThat(actualRow, equalTo(expectedRow)); } + } catch (SQLException e) { + throw new RuntimeException(e); } }; } @@ -361,24 +350,19 @@ public class StreamTest { * functions. */ private abstract static class BaseOrderStreamTable implements ScannableTable { - protected final RelProtoDataType protoRowType = new RelProtoDataType() { - public RelDataType apply(RelDataTypeFactory a0) { - return a0.builder() - .add("ROWTIME", SqlTypeName.TIMESTAMP) - .add("ID", SqlTypeName.INTEGER) - .add("PRODUCT", SqlTypeName.VARCHAR, 10) - .add("UNITS", SqlTypeName.INTEGER) - .build(); - } - }; + protected final RelProtoDataType protoRowType = a0 -> a0.builder() + .add("ROWTIME", SqlTypeName.TIMESTAMP) + .add("ID", SqlTypeName.INTEGER) + .add("PRODUCT", SqlTypeName.VARCHAR, 10) + .add("UNITS", SqlTypeName.INTEGER) + .build(); public RelDataType getRowType(RelDataTypeFactory typeFactory) { return protoRowType.apply(typeFactory); } public Statistic getStatistic() { - return Statistics.of(100d, - ImmutableList.<ImmutableBitSet>of(), + return Statistics.of(100d, ImmutableList.of(), RelCollations.createSingleton(0)); } @@ -391,8 +375,7 @@ public class StreamTest { } @Override public boolean rolledUpColumnValidInsideAgg(String column, - SqlCall call, SqlNode parent, - CalciteConnectionConfig config) { + SqlCall call, SqlNode parent, CalciteConnectionConfig config) { return false; } } @@ -447,8 +430,7 @@ public class StreamTest { } @Override public boolean rolledUpColumnValidInsideAgg(String column, - SqlCall call, SqlNode parent, - CalciteConnectionConfig config) { + SqlCall call, SqlNode parent, CalciteConnectionConfig config) { return false; } } @@ -485,21 +467,17 @@ public class StreamTest { public static class InfiniteOrdersTable extends BaseOrderStreamTable implements StreamableTable { public Enumerable<Object[]> scan(DataContext root) { - return Linq4j.asEnumerable(new Iterable<Object[]>() { - @Override public Iterator<Object[]> iterator() { - return new Iterator<Object[]>() { - public boolean hasNext() { - return true; - } + return Linq4j.asEnumerable(() -> new Iterator<Object[]>() { + public boolean hasNext() { + return true; + } - public Object[] next() { - return ROW_GENERATOR.apply(); - } + public Object[] next() { + return ROW_GENERATOR.apply(); + } - public void remove() { - throw new UnsupportedOperationException(); - } - }; + public void remove() { + throw new UnsupportedOperationException(); } }); } @@ -547,14 +525,10 @@ public class StreamTest { this.rows = rows; } - private final RelProtoDataType protoRowType = new RelProtoDataType() { - public RelDataType apply(RelDataTypeFactory a0) { - return a0.builder() - .add("ID", SqlTypeName.VARCHAR, 32) - .add("SUPPLIER", SqlTypeName.INTEGER) - .build(); - } - }; + private final RelProtoDataType protoRowType = a0 -> a0.builder() + .add("ID", SqlTypeName.VARCHAR, 32) + .add("SUPPLIER", SqlTypeName.INTEGER) + .build(); public Enumerable<Object[]> scan(DataContext root) { return Linq4j.asEnumerable(rows); @@ -565,7 +539,7 @@ public class StreamTest { } public Statistic getStatistic() { - return Statistics.of(200d, ImmutableList.<ImmutableBitSet>of()); + return Statistics.of(200d, ImmutableList.of()); } public Schema.TableType getJdbcTableType() { @@ -577,8 +551,7 @@ public class StreamTest { } @Override public boolean rolledUpColumnValidInsideAgg(String column, - SqlCall call, SqlNode parent, - CalciteConnectionConfig config) { + SqlCall call, SqlNode parent, CalciteConnectionConfig config) { return false; } } http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/test/java/org/apache/calcite/test/TableFunctionTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/calcite/test/TableFunctionTest.java b/core/src/test/java/org/apache/calcite/test/TableFunctionTest.java index b56d2f6..55ba318 100644 --- a/core/src/test/java/org/apache/calcite/test/TableFunctionTest.java +++ b/core/src/test/java/org/apache/calcite/test/TableFunctionTest.java @@ -27,8 +27,6 @@ import org.apache.calcite.schema.impl.TableFunctionImpl; import org.apache.calcite.sql.validate.SqlConformanceEnum; import org.apache.calcite.util.Smalls; -import com.google.common.base.Function; - import org.junit.Ignore; import org.junit.Test; @@ -382,22 +380,18 @@ public class TableFunctionTest { final String q = "select *\n" + "from table(\"s\".\"fibonacci\"())"; with().query(q) - .returns( - new Function<ResultSet, Void>() { - public Void apply(ResultSet r) { - try { - final List<Long> numbers = new ArrayList<>(); - while (r.next() && numbers.size() < 13) { - numbers.add(r.getLong(1)); - } - assertThat(numbers.toString(), - is("[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233]")); - return null; - } catch (SQLException e) { - throw new RuntimeException(e); - } - } - }); + .returns(r -> { + try { + final List<Long> numbers = new ArrayList<>(); + while (r.next() && numbers.size() < 13) { + numbers.add(r.getLong(1)); + } + assertThat(numbers.toString(), + is("[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233]")); + } catch (SQLException e) { + throw new RuntimeException(e); + } + }); } @Test public void testUserDefinedTableFunction7() { http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/test/java/org/apache/calcite/test/UdfTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/calcite/test/UdfTest.java b/core/src/test/java/org/apache/calcite/test/UdfTest.java index 6dc822a..10c7458 100644 --- a/core/src/test/java/org/apache/calcite/test/UdfTest.java +++ b/core/src/test/java/org/apache/calcite/test/UdfTest.java @@ -17,19 +17,15 @@ package org.apache.calcite.test; import org.apache.calcite.adapter.enumerable.CallImplementor; -import org.apache.calcite.adapter.enumerable.RexImpTable.NullAs; -import org.apache.calcite.adapter.enumerable.RexToLixTranslator; import org.apache.calcite.adapter.java.ReflectiveSchema; import org.apache.calcite.jdbc.CalciteConnection; import org.apache.calcite.linq4j.Ord; import org.apache.calcite.linq4j.function.SemiStrict; -import org.apache.calcite.linq4j.tree.Expression; import org.apache.calcite.linq4j.tree.Expressions; import org.apache.calcite.linq4j.tree.Types; import org.apache.calcite.rel.type.RelDataType; import org.apache.calcite.rel.type.RelDataTypeFactory; import org.apache.calcite.rel.type.RelProtoDataType; -import org.apache.calcite.rex.RexCall; import org.apache.calcite.schema.FunctionParameter; import org.apache.calcite.schema.ImplementableFunction; import org.apache.calcite.schema.ScalarFunction; @@ -244,7 +240,7 @@ public class UdfTest { + " POST.MY_INCREMENT(\"empid\", 10) as INCREMENTED_SALARY\n" + "from \"hr\".\"emps\""; post.add("V_EMP", - ViewTable.viewMacro(post, viewSql, ImmutableList.<String>of(), + ViewTable.viewMacro(post, viewSql, ImmutableList.of(), ImmutableList.of("POST", "V_EMP"), null)); final String result = "" @@ -998,14 +994,12 @@ public class UdfTest { protected abstract List<RelProtoDataType> getParams(); @Override public CallImplementor getImplementor() { - return new CallImplementor() { - public Expression implement(RexToLixTranslator translator, RexCall call, NullAs nullAs) { - Method lookupMethod = - Types.lookupMethod(Smalls.AllTypesFunction.class, - "arrayAppendFun", List.class, Integer.class); - return Expressions.call(lookupMethod, - translator.translateList(call.getOperands(), nullAs)); - } + return (translator, call, nullAs) -> { + Method lookupMethod = + Types.lookupMethod(Smalls.AllTypesFunction.class, + "arrayAppendFun", List.class, Integer.class); + return Expressions.call(lookupMethod, + translator.translateList(call.getOperands(), nullAs)); }; } } @@ -1020,17 +1014,9 @@ public class UdfTest { @Override public List<RelProtoDataType> getParams() { return ImmutableList.of( - new RelProtoDataType() { - public RelDataType apply(RelDataTypeFactory typeFactory) { - return typeFactory.createArrayType( - typeFactory.createSqlType(SqlTypeName.INTEGER), -1); - } - }, - new RelProtoDataType() { - public RelDataType apply(RelDataTypeFactory typeFactory) { - return typeFactory.createSqlType(SqlTypeName.INTEGER); - } - }); + typeFactory -> typeFactory.createArrayType( + typeFactory.createSqlType(SqlTypeName.INTEGER), -1), + typeFactory -> typeFactory.createSqlType(SqlTypeName.INTEGER)); } } @@ -1044,17 +1030,9 @@ public class UdfTest { public List<RelProtoDataType> getParams() { return ImmutableList.of( - new RelProtoDataType() { - public RelDataType apply(RelDataTypeFactory typeFactory) { - return typeFactory.createArrayType( - typeFactory.createSqlType(SqlTypeName.DOUBLE), -1); - } - }, - new RelProtoDataType() { - public RelDataType apply(RelDataTypeFactory typeFactory) { - return typeFactory.createSqlType(SqlTypeName.INTEGER); - } - }); + typeFactory -> typeFactory.createArrayType( + typeFactory.createSqlType(SqlTypeName.DOUBLE), -1), + typeFactory -> typeFactory.createSqlType(SqlTypeName.INTEGER)); } } http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/test/java/org/apache/calcite/test/concurrent/ConcurrentTestTimedCommandGenerator.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/calcite/test/concurrent/ConcurrentTestTimedCommandGenerator.java b/core/src/test/java/org/apache/calcite/test/concurrent/ConcurrentTestTimedCommandGenerator.java index 4c48d35..ef48003 100644 --- a/core/src/test/java/org/apache/calcite/test/concurrent/ConcurrentTestTimedCommandGenerator.java +++ b/core/src/test/java/org/apache/calcite/test/concurrent/ConcurrentTestTimedCommandGenerator.java @@ -79,13 +79,9 @@ public class ConcurrentTestTimedCommandGenerator } } - return new Iterable<ConcurrentTestCommand>() { - public Iterator<ConcurrentTestCommand> iterator() { - return new TimedIterator<ConcurrentTestCommand>( - getCommands(threadId), - endTimeMillis); - } - }; + return () -> new TimedIterator<ConcurrentTestCommand>( + getCommands(threadId), + endTimeMillis); } /** http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/test/java/org/apache/calcite/tools/FrameworksTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/calcite/tools/FrameworksTest.java b/core/src/test/java/org/apache/calcite/tools/FrameworksTest.java index 684cfe7..3aa4998 100644 --- a/core/src/test/java/org/apache/calcite/tools/FrameworksTest.java +++ b/core/src/test/java/org/apache/calcite/tools/FrameworksTest.java @@ -19,7 +19,6 @@ package org.apache.calcite.tools; import org.apache.calcite.DataContext; import org.apache.calcite.adapter.enumerable.EnumerableConvention; import org.apache.calcite.adapter.enumerable.EnumerableTableScan; -import org.apache.calcite.jdbc.CalciteConnection; import org.apache.calcite.linq4j.Enumerable; import org.apache.calcite.linq4j.QueryProvider; import org.apache.calcite.linq4j.Queryable; @@ -36,7 +35,6 @@ import org.apache.calcite.plan.RelTraitSet; import org.apache.calcite.plan.volcano.AbstractConverter; import org.apache.calcite.prepare.CalcitePrepareImpl; import org.apache.calcite.prepare.Prepare; -import org.apache.calcite.rel.RelCollation; import org.apache.calcite.rel.RelDistributionTraitDef; import org.apache.calcite.rel.RelNode; import org.apache.calcite.rel.core.TableModify; @@ -72,7 +70,6 @@ import org.apache.calcite.test.CalciteAssert; import org.apache.calcite.util.ImmutableBitSet; import org.apache.calcite.util.Util; -import com.google.common.base.Function; import com.google.common.collect.ImmutableList; import org.junit.Test; @@ -95,55 +92,51 @@ import static org.junit.Assert.fail; public class FrameworksTest { @Test public void testOptimize() { RelNode x = - Frameworks.withPlanner(new Frameworks.PlannerAction<RelNode>() { - public RelNode apply(RelOptCluster cluster, - RelOptSchema relOptSchema, - SchemaPlus rootSchema) { - final RelDataTypeFactory typeFactory = cluster.getTypeFactory(); - final Table table = new AbstractTable() { - public RelDataType getRowType(RelDataTypeFactory typeFactory) { - final RelDataType stringType = - typeFactory.createJavaType(String.class); - final RelDataType integerType = - typeFactory.createJavaType(Integer.class); - return typeFactory.builder() - .add("s", stringType) - .add("i", integerType) - .build(); - } - }; - - // "SELECT * FROM myTable" - final RelOptAbstractTable relOptTable = new RelOptAbstractTable( - relOptSchema, - "myTable", - table.getRowType(typeFactory)) { - }; - final EnumerableTableScan tableRel = - EnumerableTableScan.create(cluster, relOptTable); - - // "WHERE i > 1" - final RexBuilder rexBuilder = cluster.getRexBuilder(); - final RexNode condition = - rexBuilder.makeCall(SqlStdOperatorTable.GREATER_THAN, - rexBuilder.makeFieldAccess( - rexBuilder.makeRangeReference(tableRel), "i", true), - rexBuilder.makeExactLiteral(BigDecimal.ONE)); - final LogicalFilter filter = - LogicalFilter.create(tableRel, condition); - - // Specify that the result should be in Enumerable convention. - final RelNode rootRel = filter; - final RelOptPlanner planner = cluster.getPlanner(); - RelTraitSet desiredTraits = - cluster.traitSet().replace(EnumerableConvention.INSTANCE); - final RelNode rootRel2 = planner.changeTraits(rootRel, - desiredTraits); - planner.setRoot(rootRel2); - - // Now, plan. - return planner.findBestExp(); - } + Frameworks.withPlanner((cluster, relOptSchema, rootSchema) -> { + final RelDataTypeFactory typeFactory = cluster.getTypeFactory(); + final Table table = new AbstractTable() { + public RelDataType getRowType(RelDataTypeFactory typeFactory) { + final RelDataType stringType = + typeFactory.createJavaType(String.class); + final RelDataType integerType = + typeFactory.createJavaType(Integer.class); + return typeFactory.builder() + .add("s", stringType) + .add("i", integerType) + .build(); + } + }; + + // "SELECT * FROM myTable" + final RelOptAbstractTable relOptTable = new RelOptAbstractTable( + relOptSchema, + "myTable", + table.getRowType(typeFactory)) { + }; + final EnumerableTableScan tableRel = + EnumerableTableScan.create(cluster, relOptTable); + + // "WHERE i > 1" + final RexBuilder rexBuilder = cluster.getRexBuilder(); + final RexNode condition = + rexBuilder.makeCall(SqlStdOperatorTable.GREATER_THAN, + rexBuilder.makeFieldAccess( + rexBuilder.makeRangeReference(tableRel), "i", true), + rexBuilder.makeExactLiteral(BigDecimal.ONE)); + final LogicalFilter filter = + LogicalFilter.create(tableRel, condition); + + // Specify that the result should be in Enumerable convention. + final RelNode rootRel = filter; + final RelOptPlanner planner = cluster.getPlanner(); + RelTraitSet desiredTraits = + cluster.traitSet().replace(EnumerableConvention.INSTANCE); + final RelNode rootRel2 = planner.changeTraits(rootRel, + desiredTraits); + planner.setRoot(rootRel2); + + // Now, plan. + return planner.findBestExp(); }); String s = RelOptUtil.dumpPlan("", x, SqlExplainFormat.TEXT, @@ -271,38 +264,35 @@ public class FrameworksTest { @Test public void testJdbcValues() throws Exception { CalciteAssert.that() .with(CalciteAssert.SchemaSpec.JDBC_SCOTT) - .doWithConnection(new Function<CalciteConnection, Void>() { - public Void apply(CalciteConnection conn) { - try { - final FrameworkConfig config = Frameworks.newConfigBuilder() - .defaultSchema(conn.getRootSchema()) - .build(); - final RelBuilder builder = RelBuilder.create(config); - final RelRunner runner = conn.unwrap(RelRunner.class); - - final RelNode values = - builder.values(new String[]{"a", "b"}, "X", 1, "Y", 2) - .project(builder.field("a")) - .build(); - - // If you run the "values" query before the "scan" query, - // everything works fine. JdbcValues is never instantiated in any - // of the 3 queries. - if (false) { - runner.prepare(values).executeQuery(); - } - - final RelNode scan = builder.scan("JDBC_SCOTT", "EMP").build(); - runner.prepare(scan).executeQuery(); - builder.clear(); - - // running this after the scott query causes the exception - RelRunner runner2 = conn.unwrap(RelRunner.class); - runner2.prepare(values).executeQuery(); - return null; - } catch (Exception e) { - throw new RuntimeException(e); + .doWithConnection(connection -> { + try { + final FrameworkConfig config = Frameworks.newConfigBuilder() + .defaultSchema(connection.getRootSchema()) + .build(); + final RelBuilder builder = RelBuilder.create(config); + final RelRunner runner = connection.unwrap(RelRunner.class); + + final RelNode values = + builder.values(new String[]{"a", "b"}, "X", 1, "Y", 2) + .project(builder.field("a")) + .build(); + + // If you run the "values" query before the "scan" query, + // everything works fine. JdbcValues is never instantiated in any + // of the 3 queries. + if (false) { + runner.prepare(values).executeQuery(); } + + final RelNode scan = builder.scan("JDBC_SCOTT", "EMP").build(); + runner.prepare(scan).executeQuery(); + builder.clear(); + + // running this after the scott query causes the exception + RelRunner runner2 = connection.unwrap(RelRunner.class); + runner2.prepare(values).executeQuery(); + } catch (Exception e) { + throw new RuntimeException(e); } }); } @@ -387,7 +377,7 @@ public class FrameworksTest { public Statistic getStatistic() { return Statistics.of(15D, ImmutableList.of(ImmutableBitSet.of(0)), - ImmutableList.<RelCollation>of()); + ImmutableList.of()); } public Enumerable<Object[]> scan(DataContext root, List<RexNode> filters, http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/test/java/org/apache/calcite/tools/PlannerTest.java ---------------------------------------------------------------------- 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 4150d85..da54ee8 100644 --- a/core/src/test/java/org/apache/calcite/tools/PlannerTest.java +++ b/core/src/test/java/org/apache/calcite/tools/PlannerTest.java @@ -60,7 +60,6 @@ import org.apache.calcite.sql.SqlExplainLevel; import org.apache.calcite.sql.SqlFunctionCategory; import org.apache.calcite.sql.SqlKind; import org.apache.calcite.sql.SqlNode; -import org.apache.calcite.sql.SqlOperator; import org.apache.calcite.sql.SqlOperatorTable; import org.apache.calcite.sql.fun.SqlStdOperatorTable; import org.apache.calcite.sql.parser.SqlParseException; @@ -196,7 +195,7 @@ public class PlannerTest { SqlOperatorTable opTab = ChainedSqlOperatorTable.of(stdOpTab, new ListSqlOperatorTable( - ImmutableList.<SqlOperator>of(new MyCountAggFunction()))); + ImmutableList.of(new MyCountAggFunction()))); final SchemaPlus rootSchema = Frameworks.createRootSchema(true); final FrameworkConfig config = Frameworks.newConfigBuilder() .defaultSchema( http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/test/java/org/apache/calcite/util/BitSetsTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/calcite/util/BitSetsTest.java b/core/src/test/java/org/apache/calcite/util/BitSetsTest.java index 4581e9a..fc16c86 100644 --- a/core/src/test/java/org/apache/calcite/util/BitSetsTest.java +++ b/core/src/test/java/org/apache/calcite/util/BitSetsTest.java @@ -16,14 +16,13 @@ */ package org.apache.calcite.util; -import com.google.common.collect.Maps; - import org.junit.Test; import java.util.Arrays; import java.util.BitSet; import java.util.Collections; import java.util.SortedMap; +import java.util.TreeMap; import static org.hamcrest.CoreMatchers.equalTo; import static org.junit.Assert.assertEquals; @@ -192,11 +191,11 @@ public class BitSetsTest { * Tests the method {@link BitSets#closure(java.util.SortedMap)} */ @Test public void testClosure() { - final SortedMap<Integer, BitSet> empty = Maps.newTreeMap(); + final SortedMap<Integer, BitSet> empty = new TreeMap<>(); assertThat(BitSets.closure(empty), equalTo(empty)); // Map with an an entry for each position. - final SortedMap<Integer, BitSet> map = Maps.newTreeMap(); + final SortedMap<Integer, BitSet> map = new TreeMap<>(); map.put(0, BitSets.of(3)); map.put(1, BitSets.of()); map.put(2, BitSets.of(7)); @@ -217,7 +216,7 @@ public class BitSetsTest { assertThat("argument modified", map.toString(), equalTo(original)); // Now a similar map with missing entries. Same result. - final SortedMap<Integer, BitSet> map2 = Maps.newTreeMap(); + final SortedMap<Integer, BitSet> map2 = new TreeMap<>(); map2.put(0, BitSets.of(3)); map2.put(2, BitSets.of(7)); map2.put(3, BitSets.of(4, 12)); http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/test/java/org/apache/calcite/util/ChunkListTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/calcite/util/ChunkListTest.java b/core/src/test/java/org/apache/calcite/util/ChunkListTest.java index efb1b09..4069c3e 100644 --- a/core/src/test/java/org/apache/calcite/util/ChunkListTest.java +++ b/core/src/test/java/org/apache/calcite/util/ChunkListTest.java @@ -17,7 +17,6 @@ package org.apache.calcite.util; import org.apache.calcite.linq4j.function.Function0; -import org.apache.calcite.linq4j.function.Function1; import com.google.common.collect.ImmutableList; @@ -383,22 +382,7 @@ public class ChunkListTest { //noinspection unchecked final Iterable<Pair<Function0<List<Integer>>, String>> factories0 = Pair.zip( - Arrays.asList( - new Function0<List<Integer>>() { - public List<Integer> apply() { - return new ArrayList<>(); - } - }, - new Function0<List<Integer>>() { - public List<Integer> apply() { - return new LinkedList<>(); - } - }, - new Function0<List<Integer>>() { - public List<Integer> apply() { - return new ChunkList<>(); - } - }), + Arrays.asList(ArrayList::new, LinkedList::new, ChunkList::new), Arrays.asList("ArrayList", "LinkedList", "ChunkList-64")); final List<Pair<Function0<List<Integer>>, String>> factories1 = new ArrayList<>(); @@ -412,63 +396,52 @@ public class ChunkListTest { Arrays.asList(100000, 1000000, 10000000), Arrays.asList("100k", "1m", "10m")); for (final Pair<Function0<List<Integer>>, String> pair : factories) { - new Benchmark( - "add 10m values, " + pair.right, - new Function1<Benchmark.Statistician, Void>() { - public Void apply(Benchmark.Statistician statistician) { - final List<Integer> list = pair.left.apply(); - long start = System.currentTimeMillis(); - for (int i = 0; i < 10000000; i++) { - list.add(1); - } - statistician.record(start); - return null; - } - }, - 10).run(); + new Benchmark("add 10m values, " + pair.right, statistician -> { + final List<Integer> list = pair.left.apply(); + long start = System.currentTimeMillis(); + for (int i = 0; i < 10000000; i++) { + list.add(1); + } + statistician.record(start); + return null; + }, + 10).run(); } for (final Pair<Function0<List<Integer>>, String> pair : factories) { - new Benchmark( - "iterate over 10m values, " + pair.right, - new Function1<Benchmark.Statistician, Void>() { - public Void apply(Benchmark.Statistician statistician) { - final List<Integer> list = pair.left.apply(); - list.addAll(Collections.nCopies(10000000, 1)); - long start = System.currentTimeMillis(); - int count = 0; - for (Integer integer : list) { - count += integer; - } - statistician.record(start); - assert count == 10000000; - return null; - } - }, - 10).run(); + new Benchmark("iterate over 10m values, " + pair.right, statistician -> { + final List<Integer> list = pair.left.apply(); + list.addAll(Collections.nCopies(10000000, 1)); + long start = System.currentTimeMillis(); + int count = 0; + for (Integer integer : list) { + count += integer; + } + statistician.record(start); + assert count == 10000000; + return null; + }, + 10).run(); } for (final Pair<Function0<List<Integer>>, String> pair : factories) { for (final Pair<Integer, String> size : sizes) { if (size.left > 1000000) { continue; } - new Benchmark( - "delete 10% of " + size.right + " values, " + pair.right, - new Function1<Benchmark.Statistician, Void>() { - public Void apply(Benchmark.Statistician statistician) { - final List<Integer> list = pair.left.apply(); - list.addAll(Collections.nCopies(size.left, 1)); - long start = System.currentTimeMillis(); - int n = 0; - for (Iterator<Integer> it = list.iterator(); it.hasNext();) { - Integer integer = it.next(); - Util.discard(integer); - if (n++ % 10 == 0) { - it.remove(); - } + new Benchmark("delete 10% of " + size.right + " values, " + pair.right, + statistician -> { + final List<Integer> list = pair.left.apply(); + list.addAll(Collections.nCopies(size.left, 1)); + long start = System.currentTimeMillis(); + int n = 0; + for (Iterator<Integer> it = list.iterator(); it.hasNext();) { + Integer integer = it.next(); + Util.discard(integer); + if (n++ % 10 == 0) { + it.remove(); } - statistician.record(start); - return null; } + statistician.record(start); + return null; }, 10).run(); } @@ -479,24 +452,21 @@ public class ChunkListTest { continue; } new Benchmark("get from " + size.right + " values, " - + (size.left / 1000) + " times, " + pair.right, - new Function1<Benchmark.Statistician, Void>() { - public Void apply(Benchmark.Statistician statistician) { - final List<Integer> list = pair.left.apply(); - list.addAll(Collections.nCopies(size.left, 1)); - final int probeCount = size.left / 1000; - final Random random = new Random(1); - long start = System.currentTimeMillis(); - int n = 0; - for (int i = 0; i < probeCount; i++) { - n += list.get(random.nextInt(list.size())); - } - assert n == probeCount; - statistician.record(start); - return null; - } - }, - 10).run(); + + (size.left / 1000) + " times, " + pair.right, statistician -> { + final List<Integer> list = pair.left.apply(); + list.addAll(Collections.nCopies(size.left, 1)); + final int probeCount = size.left / 1000; + final Random random = new Random(1); + long start = System.currentTimeMillis(); + int n = 0; + for (int i = 0; i < probeCount; i++) { + n += list.get(random.nextInt(list.size())); + } + assert n == probeCount; + statistician.record(start); + return null; + }, + 10).run(); } } for (final Pair<Function0<List<Integer>>, String> pair : factories) { @@ -507,40 +477,37 @@ public class ChunkListTest { new Benchmark( "add " + size.right + " values, delete 10%, insert 20%, get 1%, using " - + pair.right, - new Function1<Benchmark.Statistician, Void>() { - public Void apply(Benchmark.Statistician statistician) { - final List<Integer> list = pair.left.apply(); - final int probeCount = size.left / 100; - long start = System.currentTimeMillis(); - list.addAll(Collections.nCopies(size.left, 1)); - final Random random = new Random(1); - for (Iterator<Integer> it = list.iterator(); - it.hasNext();) { - Integer integer = it.next(); - Util.discard(integer); - if (random.nextInt(10) == 0) { - it.remove(); - } - } - for (ListIterator<Integer> it = list.listIterator(); - it.hasNext();) { - Integer integer = it.next(); - Util.discard(integer); - if (random.nextInt(5) == 0) { - it.add(2); - } - } - int n = 0; - for (int i = 0; i < probeCount; i++) { - n += list.get(random.nextInt(list.size())); - } - assert n > probeCount; - statistician.record(start); - return null; - } - }, - 10).run(); + + pair.right, statistician -> { + final List<Integer> list = pair.left.apply(); + final int probeCount = size.left / 100; + long start = System.currentTimeMillis(); + list.addAll(Collections.nCopies(size.left, 1)); + final Random random = new Random(1); + for (Iterator<Integer> it = list.iterator(); + it.hasNext();) { + Integer integer = it.next(); + Util.discard(integer); + if (random.nextInt(10) == 0) { + it.remove(); + } + } + for (ListIterator<Integer> it = list.listIterator(); + it.hasNext();) { + Integer integer = it.next(); + Util.discard(integer); + if (random.nextInt(5) == 0) { + it.add(2); + } + } + int n = 0; + for (int i = 0; i < probeCount; i++) { + n += list.get(random.nextInt(list.size())); + } + assert n > probeCount; + statistician.record(start); + return null; + }, + 10).run(); } } } http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/test/java/org/apache/calcite/util/ImmutableBitSetTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/calcite/util/ImmutableBitSetTest.java b/core/src/test/java/org/apache/calcite/util/ImmutableBitSetTest.java index 680bed4..b8dd2e6 100644 --- a/core/src/test/java/org/apache/calcite/util/ImmutableBitSetTest.java +++ b/core/src/test/java/org/apache/calcite/util/ImmutableBitSetTest.java @@ -19,7 +19,6 @@ package org.apache.calcite.util; import org.apache.calcite.runtime.Utilities; import com.google.common.collect.Iterables; -import com.google.common.collect.Maps; import org.junit.Test; @@ -30,6 +29,7 @@ import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.SortedMap; +import java.util.TreeMap; import static org.hamcrest.CoreMatchers.anyOf; import static org.hamcrest.CoreMatchers.equalTo; @@ -154,7 +154,7 @@ public class ImmutableBitSetTest { @Test public void testCompare2() { final List<ImmutableBitSet> sorted = getSortedList(); - Collections.sort(sorted, ImmutableBitSet.COMPARATOR); + sorted.sort(ImmutableBitSet.COMPARATOR); assertThat(sorted.toString(), equalTo("[{0, 1, 3}, {0, 1}, {1, 1000}, {1}, {1}, {2, 3}, {}]")); } @@ -390,12 +390,12 @@ public class ImmutableBitSetTest { /** Tests the method * {@link org.apache.calcite.util.BitSets#closure(java.util.SortedMap)}. */ @Test public void testClosure() { - final SortedMap<Integer, ImmutableBitSet> empty = Maps.newTreeMap(); + final SortedMap<Integer, ImmutableBitSet> empty = new TreeMap<>(); assertThat(ImmutableBitSet.closure(empty), equalTo(empty)); // Currently you need an entry for each position, otherwise you get an NPE. // We should fix that. - final SortedMap<Integer, ImmutableBitSet> map = Maps.newTreeMap(); + final SortedMap<Integer, ImmutableBitSet> map = new TreeMap<>(); map.put(0, ImmutableBitSet.of(3)); map.put(1, ImmutableBitSet.of()); map.put(2, ImmutableBitSet.of(7)); @@ -416,7 +416,7 @@ public class ImmutableBitSetTest { assertThat("argument modified", map.toString(), equalTo(original)); // Now a similar map with missing entries. Same result. - final SortedMap<Integer, ImmutableBitSet> map2 = Maps.newTreeMap(); + final SortedMap<Integer, ImmutableBitSet> map2 = new TreeMap<>(); map2.put(0, ImmutableBitSet.of(3)); map2.put(2, ImmutableBitSet.of(7)); map2.put(3, ImmutableBitSet.of(4, 12)); http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/test/java/org/apache/calcite/util/PartiallyOrderedSetTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/calcite/util/PartiallyOrderedSetTest.java b/core/src/test/java/org/apache/calcite/util/PartiallyOrderedSetTest.java index 8a6a9da..586562b 100644 --- a/core/src/test/java/org/apache/calcite/util/PartiallyOrderedSetTest.java +++ b/core/src/test/java/org/apache/calcite/util/PartiallyOrderedSetTest.java @@ -18,8 +18,6 @@ package org.apache.calcite.util; import org.apache.calcite.test.CalciteAssert; -import com.google.common.base.Function; - import org.junit.Assume; import org.junit.Test; @@ -28,9 +26,11 @@ import java.util.ArrayList; import java.util.Collection; import java.util.LinkedHashSet; import java.util.List; +import java.util.Objects; import java.util.Random; import java.util.Set; import java.util.TreeSet; +import java.util.function.Function; import static org.hamcrest.CoreMatchers.nullValue; import static org.hamcrest.core.Is.is; @@ -51,58 +51,44 @@ public class PartiallyOrderedSetTest { final Random random = new Random(seed); static final PartiallyOrderedSet.Ordering<String> STRING_SUBSET_ORDERING = - new PartiallyOrderedSet.Ordering<String>() { - public boolean lessThan(String e1, String e2) { - // e1 < e2 if every char in e1 is also in e2 - for (int i = 0; i < e1.length(); i++) { - if (e2.indexOf(e1.charAt(i)) < 0) { - return false; - } + (e1, e2) -> { + // e1 < e2 if every char in e1 is also in e2 + for (int i = 0; i < e1.length(); i++) { + if (e2.indexOf(e1.charAt(i)) < 0) { + return false; } - return true; } + return true; }; - // Integers, ordered by division. Top is 1, its children are primes, - // etc. - static final PartiallyOrderedSet.Ordering<Integer> IS_DIVISOR = - new PartiallyOrderedSet.Ordering<Integer>() { - public boolean lessThan(Integer e1, Integer e2) { - return e2 % e1 == 0; - } - }; + /** As an ordering, integers are ordered by division. + * Top is 1, its children are primes, etc. */ + private static boolean isDivisor(int e1, int e2) { + return e2 % e1 == 0; + } - // Bottom is 1, parents are primes, etc. - static final PartiallyOrderedSet.Ordering<Integer> IS_DIVISOR_INVERSE = - new PartiallyOrderedSet.Ordering<Integer>() { - public boolean lessThan(Integer e1, Integer e2) { - return e1 % e2 == 0; - } - }; + /** As an ordering, bottom is 1, parents are primes, etc. */ + private static boolean isDivisorInverse(Integer e1, Integer e2) { + return isDivisor(e2, e1); + } - // Ordered by bit inclusion. E.g. the children of 14 (1110) are - // 12 (1100), 10 (1010) and 6 (0110). - static final PartiallyOrderedSet.Ordering<Integer> IS_BIT_SUBSET = - new PartiallyOrderedSet.Ordering<Integer>() { - public boolean lessThan(Integer e1, Integer e2) { - return (e2 & e1) == e2; - } - }; + /** As an ordering, integers are ordered by bit inclusion. + * E.g. the children of 14 (1110) are 12 (1100), 10 (1010) and 6 (0110). */ + private static boolean isBitSubset(int e1, int e2) { + return (e2 & e1) == e2; + } - // Ordered by bit inclusion. E.g. the children of 14 (1110) are - // 12 (1100), 10 (1010) and 6 (0110). - static final PartiallyOrderedSet.Ordering<Integer> IS_BIT_SUPERSET = - new PartiallyOrderedSet.Ordering<Integer>() { - public boolean lessThan(Integer e1, Integer e2) { - return (e2 & e1) == e1; - } - }; + /** As an ordering, integers are ordered by bit inclusion. + * E.g. the parents of 14 (1110) are 12 (1100), 10 (1010) and 6 (0110). */ + private static boolean isBitSuperset(Integer e1, Integer e2) { + return (e2 & e1) == e1; + } @Test public void testPoset() { String empty = "''"; String abcd = "'abcd'"; - PartiallyOrderedSet<String> poset = - new PartiallyOrderedSet<String>(STRING_SUBSET_ORDERING); + final PartiallyOrderedSet<String> poset = + new PartiallyOrderedSet<>(STRING_SUBSET_ORDERING); assertEquals(0, poset.size()); final StringBuilder buf = new StringBuilder(); @@ -195,8 +181,8 @@ public class PartiallyOrderedSetTest { } @Test public void testPosetTricky() { - PartiallyOrderedSet<String> poset = - new PartiallyOrderedSet<String>(STRING_SUBSET_ORDERING); + final PartiallyOrderedSet<String> poset = + new PartiallyOrderedSet<>(STRING_SUBSET_ORDERING); // A tricky little poset with 4 elements: // {a <= ab and ac, b < ab, ab, ac} @@ -213,7 +199,7 @@ public class PartiallyOrderedSetTest { @Test public void testPosetBits() { final PartiallyOrderedSet<Integer> poset = - new PartiallyOrderedSet<Integer>(IS_BIT_SUPERSET); + new PartiallyOrderedSet<>(PartiallyOrderedSetTest::isBitSuperset); poset.add(2112); // {6, 11} i.e. 64 + 2048 poset.add(2240); // {6, 7, 11} i.e. 64 + 128 + 2048 poset.add(2496); // {6, 7, 8, 11} i.e. 64 + 128 + 256 + 2048 @@ -226,7 +212,7 @@ public class PartiallyOrderedSetTest { @Test public void testPosetBitsLarge() { final PartiallyOrderedSet<Integer> poset = - new PartiallyOrderedSet<>(IS_BIT_SUPERSET); + new PartiallyOrderedSet<>(PartiallyOrderedSetTest::isBitSuperset); checkPosetBitsLarge(poset, 30000, 2921, 164782); } @@ -234,11 +220,9 @@ public class PartiallyOrderedSetTest { Assume.assumeTrue("too slow to run every day", CalciteAssert.ENABLE_SLOW); final int n = 30000; final PartiallyOrderedSet<Integer> poset = - new PartiallyOrderedSet<>(IS_BIT_SUPERSET, - new Function<Integer, Iterable<Integer>>() { - public Iterable<Integer> apply(Integer input) { - final int i = input; - int r = i; // bits not yet cleared + new PartiallyOrderedSet<>(PartiallyOrderedSetTest::isBitSuperset, + (Function<Integer, Iterable<Integer>>) i -> { + int r = Objects.requireNonNull(i); // bits not yet cleared final List<Integer> list = new ArrayList<>(); for (int z = 1; r != 0; z <<= 1) { if ((i & z) != 0) { @@ -247,11 +231,9 @@ public class PartiallyOrderedSetTest { } } return list; - } - }, - new Function<Integer, Iterable<Integer>>() { - public Iterable<Integer> apply(Integer input) { - final int i = input; + }, + i -> { + Objects.requireNonNull(i); final List<Integer> list = new ArrayList<>(); for (int z = 1; z <= n; z <<= 1) { if ((i & z) == 0) { @@ -259,8 +241,7 @@ public class PartiallyOrderedSetTest { } } return list; - } - }); + }); checkPosetBitsLarge(poset, n, 2921, 11961); } @@ -286,7 +267,7 @@ public class PartiallyOrderedSetTest { @Test public void testPosetBitsRemoveParent() { final PartiallyOrderedSet<Integer> poset = - new PartiallyOrderedSet<Integer>(IS_BIT_SUPERSET); + new PartiallyOrderedSet<>(PartiallyOrderedSetTest::isBitSuperset); poset.add(66); // {bit 2, bit 6} poset.add(68); // {bit 3, bit 6} poset.add(72); // {bit 4, bit 6} @@ -298,13 +279,14 @@ public class PartiallyOrderedSetTest { @Test public void testDivisorPoset() { PartiallyOrderedSet<Integer> integers = - new PartiallyOrderedSet<Integer>(IS_DIVISOR, range(1, 1000)); + new PartiallyOrderedSet<>(PartiallyOrderedSetTest::isDivisor, + range(1, 1000)); assertEquals( "[1, 2, 3, 4, 5, 6, 8, 10, 12, 15, 20, 24, 30, 40, 60]", - new TreeSet<Integer>(integers.getDescendants(120)).toString()); + new TreeSet<>(integers.getDescendants(120)).toString()); assertEquals( "[240, 360, 480, 600, 720, 840, 960]", - new TreeSet<Integer>(integers.getAncestors(120)).toString()); + new TreeSet<>(integers.getAncestors(120)).toString()); assertTrue(integers.getDescendants(1).isEmpty()); assertEquals( 998, @@ -313,14 +295,15 @@ public class PartiallyOrderedSetTest { } @Test public void testDivisorSeries() { - checkPoset(IS_DIVISOR, DEBUG, range(1, SCALE * 3), false); + checkPoset(PartiallyOrderedSetTest::isDivisor, DEBUG, range(1, SCALE * 3), + false); } @Test public void testDivisorRandom() { boolean ok = false; try { - checkPoset( - IS_DIVISOR, DEBUG, random(random, SCALE, SCALE * 3), false); + checkPoset(PartiallyOrderedSetTest::isDivisor, DEBUG, + random(random, SCALE, SCALE * 3), false); ok = true; } finally { if (!ok) { @@ -332,8 +315,8 @@ public class PartiallyOrderedSetTest { @Test public void testDivisorRandomWithRemoval() { boolean ok = false; try { - checkPoset( - IS_DIVISOR, DEBUG, random(random, SCALE, SCALE * 3), true); + checkPoset(PartiallyOrderedSetTest::isDivisor, DEBUG, + random(random, SCALE, SCALE * 3), true); ok = true; } finally { if (!ok) { @@ -343,14 +326,14 @@ public class PartiallyOrderedSetTest { } @Test public void testDivisorInverseSeries() { - checkPoset(IS_DIVISOR_INVERSE, DEBUG, range(1, SCALE * 3), false); + checkPoset(PartiallyOrderedSetTest::isDivisorInverse, DEBUG, + range(1, SCALE * 3), false); } @Test public void testDivisorInverseRandom() { boolean ok = false; try { - checkPoset( - IS_DIVISOR_INVERSE, DEBUG, random(random, SCALE, SCALE * 3), + checkPoset(PartiallyOrderedSetTest::isDivisorInverse, DEBUG, random(random, SCALE, SCALE * 3), false); ok = true; } finally { @@ -363,8 +346,7 @@ public class PartiallyOrderedSetTest { @Test public void testDivisorInverseRandomWithRemoval() { boolean ok = false; try { - checkPoset( - IS_DIVISOR_INVERSE, DEBUG, random(random, SCALE, SCALE * 3), + checkPoset(PartiallyOrderedSetTest::isDivisorInverse, DEBUG, random(random, SCALE, SCALE * 3), true); ok = true; } finally { @@ -375,14 +357,14 @@ public class PartiallyOrderedSetTest { } @Test public void testSubsetSeries() { - checkPoset(IS_BIT_SUBSET, DEBUG, range(1, SCALE / 2), false); + checkPoset(PartiallyOrderedSetTest::isBitSubset, DEBUG, range(1, SCALE / 2), false); } @Test public void testSubsetRandom() { boolean ok = false; try { - checkPoset( - IS_BIT_SUBSET, DEBUG, random(random, SCALE / 4, SCALE), false); + checkPoset(PartiallyOrderedSetTest::isBitSubset, DEBUG, + random(random, SCALE / 4, SCALE), false); ok = true; } finally { if (!ok) { @@ -404,7 +386,7 @@ public class PartiallyOrderedSetTest { Iterable<Integer> generator, boolean remove) { final PartiallyOrderedSet<Integer> poset = - new PartiallyOrderedSet<Integer>(ordering); + new PartiallyOrderedSet<>(ordering); int n = 0; int z = 0; if (debug) { @@ -464,7 +446,7 @@ public class PartiallyOrderedSetTest { private static Iterable<Integer> random( Random random, final int size, final int max) { - final Set<Integer> set = new LinkedHashSet<Integer>(); + final Set<Integer> set = new LinkedHashSet<>(); while (set.size() < size) { set.add(random.nextInt(max) + 1); } @@ -472,9 +454,7 @@ public class PartiallyOrderedSetTest { } private static void assertEqualsList(String expected, List<String> ss) { - assertEquals( - expected, - new TreeSet<String>(ss).toString()); + assertEquals(expected, new TreeSet<>(ss).toString()); } } http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/test/java/org/apache/calcite/util/PermutationTestCase.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/calcite/util/PermutationTestCase.java b/core/src/test/java/org/apache/calcite/util/PermutationTestCase.java index 75c78c0..2fe6ed2 100644 --- a/core/src/test/java/org/apache/calcite/util/PermutationTestCase.java +++ b/core/src/test/java/org/apache/calcite/util/PermutationTestCase.java @@ -16,7 +16,6 @@ */ package org.apache.calcite.util; - import org.apache.calcite.jdbc.JavaTypeFactoryImpl; import org.apache.calcite.rel.core.Project; import org.apache.calcite.rel.type.RelDataType; http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/test/java/org/apache/calcite/util/PrecedenceClimbingParserTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/calcite/util/PrecedenceClimbingParserTest.java b/core/src/test/java/org/apache/calcite/util/PrecedenceClimbingParserTest.java index 3fbeac4..0988430 100644 --- a/core/src/test/java/org/apache/calcite/util/PrecedenceClimbingParserTest.java +++ b/core/src/test/java/org/apache/calcite/util/PrecedenceClimbingParserTest.java @@ -134,17 +134,12 @@ public class PrecedenceClimbingParserTest { .infix("and", 2, true) .atom("price") .special("between", 3, 3, - new PrecedenceClimbingParser.Special() { - public PrecedenceClimbingParser.Result apply( - PrecedenceClimbingParser parser, - PrecedenceClimbingParser.SpecialOp op) { - return new PrecedenceClimbingParser.Result(op.previous, + (parser, op) -> + new PrecedenceClimbingParser.Result(op.previous, op.next.next.next, parser.call(op, ImmutableList.of(op.previous, op.next, - op.next.next.next))); - } - }) + op.next.next.next)))) .atom("1") .infix("+", 5, true) .atom("2") http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/test/java/org/apache/calcite/util/Smalls.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/calcite/util/Smalls.java b/core/src/test/java/org/apache/calcite/util/Smalls.java index bffeca6..46ae6a3 100644 --- a/core/src/test/java/org/apache/calcite/util/Smalls.java +++ b/core/src/test/java/org/apache/calcite/util/Smalls.java @@ -27,14 +27,11 @@ import org.apache.calcite.linq4j.Linq4j; import org.apache.calcite.linq4j.QueryProvider; import org.apache.calcite.linq4j.Queryable; import org.apache.calcite.linq4j.function.Deterministic; -import org.apache.calcite.linq4j.function.Function1; -import org.apache.calcite.linq4j.function.Function2; import org.apache.calcite.linq4j.function.Parameter; import org.apache.calcite.linq4j.function.SemiStrict; import org.apache.calcite.linq4j.tree.Types; import org.apache.calcite.rel.type.RelDataType; import org.apache.calcite.rel.type.RelDataTypeFactory; -import org.apache.calcite.rel.type.RelProtoDataType; import org.apache.calcite.rex.RexLiteral; import org.apache.calcite.runtime.SqlFunctions; import org.apache.calcite.schema.QueryableTable; @@ -67,7 +64,6 @@ import java.util.concurrent.atomic.AtomicInteger; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; - /** * Holder for various classes and functions used in tests as user-defined * functions and so forth. @@ -303,11 +299,7 @@ public class Smalls { public <T> Queryable<T> asQueryable(QueryProvider queryProvider, SchemaPlus schema, String tableName) { final Enumerable<Integer> enumerable = - a.select(new Function1<Object[], Integer>() { - public Integer apply(Object[] a0) { - return offset + ((Integer) a0[0]); - } - }); + a.select(a0 -> offset + ((Integer) a0[0])); //noinspection unchecked return (Queryable) enumerable.asQueryable(); } @@ -330,11 +322,7 @@ public class Smalls { public <T> Queryable<T> asQueryable(QueryProvider queryProvider, SchemaPlus schema, String tableName) { final Enumerable<Integer> enumerable = - a.zip(b, new Function2<Object[], IntString, Integer>() { - public Integer apply(Object[] v0, IntString v1) { - return ((Integer) v0[1]) + v1.n + offset; - } - }); + a.zip(b, (v0, v1) -> ((Integer) v0[1]) + v1.n + offset); //noinspection unchecked return (Queryable) enumerable.asQueryable(); } @@ -342,39 +330,26 @@ public class Smalls { } public static TranslatableTable view(String s) { - return new ViewTable(Object.class, - new RelProtoDataType() { - public RelDataType apply(RelDataTypeFactory typeFactory) { - return typeFactory.builder().add("c", SqlTypeName.INTEGER) - .build(); - } - }, "values (1), (3), " + s, ImmutableList.<String>of(), Arrays.asList("view")); + return new ViewTable(Object.class, typeFactory -> + typeFactory.builder().add("c", SqlTypeName.INTEGER).build(), + "values (1), (3), " + s, ImmutableList.of(), Arrays.asList("view")); } public static TranslatableTable strView(String s) { - return new ViewTable(Object.class, - new RelProtoDataType() { - public RelDataType apply(RelDataTypeFactory typeFactory) { - return typeFactory.builder().add("c", SqlTypeName.VARCHAR, 100) - .build(); - } - }, "values (" + CalciteSqlDialect.DEFAULT.quoteStringLiteral(s) + ")", - ImmutableList.<String>of(), Arrays.asList("view")); + return new ViewTable(Object.class, typeFactory -> + typeFactory.builder().add("c", SqlTypeName.VARCHAR, 100).build(), + "values (" + CalciteSqlDialect.DEFAULT.quoteStringLiteral(s) + ")", + ImmutableList.of(), Arrays.asList("view")); } public static TranslatableTable str(Object o, Object p) { assertThat(RexLiteral.validConstant(o, Litmus.THROW), is(true)); assertThat(RexLiteral.validConstant(p, Litmus.THROW), is(true)); - return new ViewTable(Object.class, - new RelProtoDataType() { - public RelDataType apply(RelDataTypeFactory typeFactory) { - return typeFactory.builder().add("c", SqlTypeName.VARCHAR, 100) - .build(); - } - }, + return new ViewTable(Object.class, typeFactory -> + typeFactory.builder().add("c", SqlTypeName.VARCHAR, 100).build(), "values " + CalciteSqlDialect.DEFAULT.quoteStringLiteral(o.toString()) + ", " + CalciteSqlDialect.DEFAULT.quoteStringLiteral(p.toString()), - ImmutableList.<String>of(), Arrays.asList("view")); + ImmutableList.of(), Arrays.asList("view")); } /** Class with int and String fields. */ http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/test/java/org/apache/calcite/util/UtilTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/calcite/util/UtilTest.java b/core/src/test/java/org/apache/calcite/util/UtilTest.java index 4560fd5..e9159a9 100644 --- a/core/src/test/java/org/apache/calcite/util/UtilTest.java +++ b/core/src/test/java/org/apache/calcite/util/UtilTest.java @@ -23,7 +23,6 @@ import org.apache.calcite.linq4j.Enumerable; import org.apache.calcite.linq4j.Enumerator; import org.apache.calcite.linq4j.Linq4j; import org.apache.calcite.linq4j.Ord; -import org.apache.calcite.linq4j.function.Function1; import org.apache.calcite.linq4j.function.Parameter; import org.apache.calcite.runtime.ConsList; import org.apache.calcite.runtime.FlatLists; @@ -37,7 +36,6 @@ import org.apache.calcite.sql.util.SqlString; import org.apache.calcite.test.DiffTestCase; import org.apache.calcite.test.Matchers; -import com.google.common.base.Function; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMultiset; import com.google.common.collect.ImmutableSortedSet; @@ -70,17 +68,19 @@ import java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.LinkedHashSet; +import java.util.LinkedList; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.NavigableSet; import java.util.Properties; import java.util.Random; +import java.util.RandomAccess; import java.util.Set; import java.util.SortedSet; import java.util.TimeZone; import java.util.TreeSet; -import javax.annotation.Nullable; +import java.util.function.Function; import static org.apache.calcite.test.Matchers.isLinux; @@ -455,7 +455,7 @@ public class UtilTest { // ok } - final List<String> a = ConsList.of("a", ImmutableList.<String>of()); + final List<String> a = ConsList.of("a", ImmutableList.of()); assertThat(a.size(), is(1)); assertThat(a, is(Collections.singletonList("a"))); } @@ -1419,11 +1419,11 @@ public class UtilTest { checkCompositeMap(beatles, map); map = CompositeMap.of( - beatleMap, Collections.<String, Integer>emptyMap()); + beatleMap, Collections.emptyMap()); checkCompositeMap(beatles, map); map = CompositeMap.of( - Collections.<String, Integer>emptyMap(), beatleMap); + Collections.emptyMap(), beatleMap); checkCompositeMap(beatles, map); map = CompositeMap.of(beatleMap, beatleMap); @@ -1471,7 +1471,7 @@ public class UtilTest { } catch (NullPointerException e) { // ok } - assertThat(Util.commaList(ImmutableList.<Object>of()), equalTo("")); + assertThat(Util.commaList(ImmutableList.of()), equalTo("")); assertThat(Util.commaList(ImmutableList.of(1)), equalTo("1")); assertThat(Util.commaList(ImmutableList.of(2, 3)), equalTo("2, 3")); assertThat(Util.commaList(Arrays.asList(2, null, 3)), @@ -1503,28 +1503,25 @@ public class UtilTest { final int zMax = 100; for (int i = 0; i < 30; i++) { final int size = i; - new Benchmark("isDistinct " + i + " (set)", - new Function1<Benchmark.Statistician, Void>() { - public Void apply(Benchmark.Statistician statistician) { - final Random random = new Random(0); - final List<List<Integer>> lists = new ArrayList<List<Integer>>(); - for (int z = 0; z < zMax; z++) { - final List<Integer> list = new ArrayList<Integer>(); - for (int k = 0; k < size; k++) { - list.add(random.nextInt(size * size)); - } - lists.add(list); - } - long nanos = System.nanoTime(); - int n = 0; - for (int j = 0; j < limit; j++) { - n += Util.firstDuplicate(lists.get(j % zMax)); - } - statistician.record(nanos); - Util.discard(n); - return null; - } - }, + new Benchmark("isDistinct " + i + " (set)", statistician -> { + final Random random = new Random(0); + final List<List<Integer>> lists = new ArrayList<List<Integer>>(); + for (int z = 0; z < zMax; z++) { + final List<Integer> list = new ArrayList<Integer>(); + for (int k = 0; k < size; k++) { + list.add(random.nextInt(size * size)); + } + lists.add(list); + } + long nanos = System.nanoTime(); + int n = 0; + for (int j = 0; j < limit; j++) { + n += Util.firstDuplicate(lists.get(j % zMax)); + } + statistician.record(nanos); + Util.discard(n); + return null; + }, 5).run(); } } @@ -1622,16 +1619,14 @@ public class UtilTest { treeSet2.addAll(treeSet); assertThat(treeSet2.size(), equalTo(3)); - final Comparator<String> comparator = new Comparator<String>() { - public int compare(String o1, String o2) { - String u1 = o1.toUpperCase(Locale.ROOT); - String u2 = o2.toUpperCase(Locale.ROOT); - int c = u1.compareTo(u2); - if (c == 0) { - c = o1.compareTo(o2); - } - return c; + final Comparator<String> comparator = (o1, o2) -> { + String u1 = o1.toUpperCase(Locale.ROOT); + String u2 = o2.toUpperCase(Locale.ROOT); + int c = u1.compareTo(u2); + if (c == 0) { + c = o1.compareTo(o2); } + return c; }; final TreeSet<String> treeSet3 = new TreeSet<String>(comparator); treeSet3.addAll(treeSet); @@ -1702,24 +1697,14 @@ public class UtilTest { isA((Class) ImmutableList.class)); // list with no nulls uses ImmutableList - final Iterable<String> abc = - new Iterable<String>() { - public Iterator<String> iterator() { - return abcList.iterator(); - } - }; + final Iterable<String> abc = abcList::iterator; assertThat(ImmutableNullableList.copyOf(abc), isA((Class) ImmutableList.class)); assertThat(ImmutableNullableList.copyOf(abc), equalTo(abcList)); // list with no nulls uses ImmutableList final List<String> ab0cList = Arrays.asList("a", "b", null, "c"); - final Iterable<String> ab0c = - new Iterable<String>() { - public Iterator<String> iterator() { - return ab0cList.iterator(); - } - }; + final Iterable<String> ab0c = ab0cList::iterator; assertThat(ImmutableNullableList.copyOf(ab0c), not(isA((Class) ImmutableList.class))); assertThat(ImmutableNullableList.copyOf(ab0c), equalTo(ab0cList)); @@ -1850,12 +1835,8 @@ public class UtilTest { @Test public void testAsIndexView() { final List<String> values = Lists.newArrayList("abCde", "X", "y"); - final Map<String, String> map = Util.asIndexMap(values, - new Function<String, String>() { - public String apply(@Nullable String input) { - return input.toUpperCase(Locale.ROOT); - } - }); + final Map<String, String> map = + Util.asIndexMapJ(values, input -> input.toUpperCase(Locale.ROOT)); assertThat(map.size(), equalTo(values.size())); assertThat(map.get("X"), equalTo("X")); assertThat(map.get("Y"), equalTo("y")); @@ -2149,12 +2130,7 @@ public class UtilTest { assertThat("x", is("x")); assertThat(is("x").matches("x"), is(true)); assertThat(is("X").matches("x"), is(false)); - final Function<String, String> toUpper = - new Function<String, String>() { - public String apply(String input) { - return input.toUpperCase(Locale.ROOT); - } - }; + final Function<String, String> toUpper = s -> s.toUpperCase(Locale.ROOT); assertThat(Matchers.compose(is("A"), toUpper).matches("a"), is(true)); assertThat(Matchers.compose(is("A"), toUpper).matches("A"), is(true)); assertThat(Matchers.compose(is("a"), toUpper).matches("A"), is(false)); @@ -2182,6 +2158,23 @@ public class UtilTest { assertThat(isLinux("x\r\ny").matches("x\ny"), is(false)); } + /** Tests {@link Util#transform(List, java.util.function.Function)}. */ + @Test public void testTransform() { + final List<String> beatles = + Arrays.asList("John", "Paul", "George", "Ringo"); + final List<String> empty = Collections.emptyList(); + assertThat(Util.transform(beatles, s -> s.toUpperCase(Locale.ROOT)), + is(Arrays.asList("JOHN", "PAUL", "GEORGE", "RINGO"))); + assertThat(Util.transform(empty, s -> s.toUpperCase(Locale.ROOT)), is(empty)); + assertThat(Util.transform(beatles, String::length), + is(Arrays.asList(4, 4, 6, 5))); + assertThat(Util.transform(beatles, String::length), + instanceOf(RandomAccess.class)); + final List<String> beatles2 = new LinkedList<>(beatles); + assertThat(Util.transform(beatles2, String::length), + not(instanceOf(RandomAccess.class))); + } + static String mismatchDescription(Matcher m, Object item) { final StringDescription d = new StringDescription(); m.describeMismatch(item, d); http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/test/java/org/apache/calcite/util/graph/DirectedGraphTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/calcite/util/graph/DirectedGraphTest.java b/core/src/test/java/org/apache/calcite/util/graph/DirectedGraphTest.java index 6724ffc..483a704 100644 --- a/core/src/test/java/org/apache/calcite/util/graph/DirectedGraphTest.java +++ b/core/src/test/java/org/apache/calcite/util/graph/DirectedGraphTest.java @@ -221,7 +221,7 @@ public class DirectedGraphTest { // +- E - F DefaultDirectedGraph<String, DefaultEdge> graph = createDag(); assertThat(new CycleDetector<String, DefaultEdge>(graph).findCycles(), - CoreMatchers.<Set<String>>equalTo(ImmutableSet.<String>of())); + CoreMatchers.equalTo(ImmutableSet.of())); // Add cycle C-D-E-C // @@ -232,8 +232,8 @@ public class DirectedGraphTest { // \_____/ graph.addEdge("D", "E"); assertThat(new CycleDetector<String, DefaultEdge>(graph).findCycles(), - CoreMatchers.<Set<String>>equalTo( - ImmutableSet.<String>of("C", "D", "E", "F"))); + CoreMatchers.equalTo( + ImmutableSet.of("C", "D", "E", "F"))); // Add another cycle, D-C-D in addition to C-D-E-C. // __ @@ -245,8 +245,8 @@ public class DirectedGraphTest { // \_____/ graph.addEdge("D", "C"); assertThat(new CycleDetector<String, DefaultEdge>(graph).findCycles(), - CoreMatchers.<Set<String>>equalTo( - ImmutableSet.<String>of("C", "D", "E", "F"))); + CoreMatchers.equalTo( + ImmutableSet.of("C", "D", "E", "F"))); graph.removeEdge("D", "E"); graph.removeEdge("D", "C"); @@ -262,8 +262,8 @@ public class DirectedGraphTest { // Detected cycle contains "D", which is downstream from the cycle but not // in the cycle. Not sure whether that is correct. assertThat(new CycleDetector<String, DefaultEdge>(graph).findCycles(), - CoreMatchers.<Set<String>>equalTo( - ImmutableSet.<String>of("B", "C", "D"))); + CoreMatchers.equalTo( + ImmutableSet.of("B", "C", "D"))); // Add single-node cycle, C-C // @@ -275,13 +275,13 @@ public class DirectedGraphTest { graph.removeEdge("C", "B"); graph.addEdge("C", "C"); assertThat(new CycleDetector<String, DefaultEdge>(graph).findCycles(), - CoreMatchers.<Set<String>>equalTo( - ImmutableSet.<String>of("C", "D"))); + CoreMatchers.equalTo( + ImmutableSet.of("C", "D"))); // Empty graph is not cyclic. graph.removeAllVertices(graph.vertexSet()); assertThat(new CycleDetector<String, DefaultEdge>(graph).findCycles(), - CoreMatchers.<Set<String>>equalTo(ImmutableSet.<String>of())); + CoreMatchers.equalTo(ImmutableSet.of())); } /** Unit test for http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/test/java/org/apache/calcite/util/mapping/MappingTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/calcite/util/mapping/MappingTest.java b/core/src/test/java/org/apache/calcite/util/mapping/MappingTest.java index 2155294..e9817fb 100644 --- a/core/src/test/java/org/apache/calcite/util/mapping/MappingTest.java +++ b/core/src/test/java/org/apache/calcite/util/mapping/MappingTest.java @@ -204,7 +204,7 @@ public class MappingTest { assertThat(mapping.inverse().toString(), equalTo("[1, 2, 3, 0]")); // empty is OK - final Mapping empty = Mappings.bijection(Collections.<Integer>emptyList()); + final Mapping empty = Mappings.bijection(Collections.emptyList()); assertThat(empty.size(), equalTo(0)); assertThat(empty.iterator().hasNext(), equalTo(false)); assertThat(empty.toString(), equalTo("[]")); http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/druid/src/main/java/org/apache/calcite/adapter/druid/DefaultDimensionSpec.java ---------------------------------------------------------------------- diff --git a/druid/src/main/java/org/apache/calcite/adapter/druid/DefaultDimensionSpec.java b/druid/src/main/java/org/apache/calcite/adapter/druid/DefaultDimensionSpec.java index 28f99da..446b26b 100644 --- a/druid/src/main/java/org/apache/calcite/adapter/druid/DefaultDimensionSpec.java +++ b/druid/src/main/java/org/apache/calcite/adapter/druid/DefaultDimensionSpec.java @@ -17,9 +17,9 @@ package org.apache.calcite.adapter.druid; import com.fasterxml.jackson.core.JsonGenerator; -import com.google.common.base.Preconditions; import java.io.IOException; +import java.util.Objects; /** * Default implementation of DimensionSpec. @@ -34,8 +34,8 @@ public class DefaultDimensionSpec implements DimensionSpec { private final DruidType outputType; public DefaultDimensionSpec(String dimension, String outputName, DruidType outputType) { - this.dimension = Preconditions.checkNotNull(dimension); - this.outputName = Preconditions.checkNotNull(outputName); + this.dimension = Objects.requireNonNull(dimension); + this.outputName = Objects.requireNonNull(outputName); this.outputType = outputType == null ? DruidType.STRING : outputType; } http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/druid/src/main/java/org/apache/calcite/adapter/druid/DruidConnectionImpl.java ---------------------------------------------------------------------- diff --git a/druid/src/main/java/org/apache/calcite/adapter/druid/DruidConnectionImpl.java b/druid/src/main/java/org/apache/calcite/adapter/druid/DruidConnectionImpl.java index 6d57438..175a16d 100644 --- a/druid/src/main/java/org/apache/calcite/adapter/druid/DruidConnectionImpl.java +++ b/druid/src/main/java/org/apache/calcite/adapter/druid/DruidConnectionImpl.java @@ -37,7 +37,6 @@ import com.fasterxml.jackson.core.JsonToken; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.type.CollectionType; -import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; @@ -56,6 +55,7 @@ import java.util.List; import java.util.Locale; import java.util.Map; import java.util.NoSuchElementException; +import java.util.Objects; import java.util.Set; import java.util.TimeZone; import java.util.concurrent.ArrayBlockingQueue; @@ -84,8 +84,8 @@ class DruidConnectionImpl implements DruidConnection { } DruidConnectionImpl(String url, String coordinatorUrl) { - this.url = Preconditions.checkNotNull(url); - this.coordinatorUrl = Preconditions.checkNotNull(coordinatorUrl); + this.url = Objects.requireNonNull(url); + this.coordinatorUrl = Objects.requireNonNull(coordinatorUrl); } /** Executes a query request. http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/druid/src/main/java/org/apache/calcite/adapter/druid/DruidDateTimeUtils.java ---------------------------------------------------------------------- diff --git a/druid/src/main/java/org/apache/calcite/adapter/druid/DruidDateTimeUtils.java b/druid/src/main/java/org/apache/calcite/adapter/druid/DruidDateTimeUtils.java index 20da334..efaab36 100644 --- a/druid/src/main/java/org/apache/calcite/adapter/druid/DruidDateTimeUtils.java +++ b/druid/src/main/java/org/apache/calcite/adapter/druid/DruidDateTimeUtils.java @@ -29,7 +29,6 @@ import org.apache.calcite.util.TimestampString; import org.apache.calcite.util.Util; import org.apache.calcite.util.trace.CalciteTrace; -import com.google.common.base.Function; import com.google.common.collect.BoundType; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; @@ -83,29 +82,26 @@ public class DruidDateTimeUtils { protected static List<Interval> toInterval( List<Range<Long>> ranges) { - List<Interval> intervals = Lists.transform(ranges, - new Function<Range<Long>, Interval>() { - public Interval apply(Range<Long> range) { - if (!range.hasLowerBound() && !range.hasUpperBound()) { - return DruidTable.DEFAULT_INTERVAL; - } - long start = range.hasLowerBound() - ? range.lowerEndpoint().longValue() - : DruidTable.DEFAULT_INTERVAL.getStartMillis(); - long end = range.hasUpperBound() - ? range.upperEndpoint().longValue() - : DruidTable.DEFAULT_INTERVAL.getEndMillis(); - if (range.hasLowerBound() - && range.lowerBoundType() == BoundType.OPEN) { - start++; - } - if (range.hasUpperBound() - && range.upperBoundType() == BoundType.CLOSED) { - end++; - } - return new Interval(start, end, ISOChronology.getInstanceUTC()); - } - }); + List<Interval> intervals = Lists.transform(ranges, range -> { + if (!range.hasLowerBound() && !range.hasUpperBound()) { + return DruidTable.DEFAULT_INTERVAL; + } + long start = range.hasLowerBound() + ? range.lowerEndpoint().longValue() + : DruidTable.DEFAULT_INTERVAL.getStartMillis(); + long end = range.hasUpperBound() + ? range.upperEndpoint().longValue() + : DruidTable.DEFAULT_INTERVAL.getEndMillis(); + if (range.hasLowerBound() + && range.lowerBoundType() == BoundType.OPEN) { + start++; + } + if (range.hasUpperBound() + && range.upperBoundType() == BoundType.CLOSED) { + end++; + } + return new Interval(start, end, ISOChronology.getInstanceUTC()); + }); if (LOGGER.isDebugEnabled()) { LOGGER.debug("Converted time ranges " + ranges + " to interval " + intervals); } @@ -129,7 +125,7 @@ public class DruidDateTimeUtils { case OR: { RexCall call = (RexCall) node; - List<Range<Long>> intervals = Lists.newArrayList(); + List<Range<Long>> intervals = new ArrayList<>(); for (RexNode child : call.getOperands()) { List<Range<Long>> extracted = extractRanges(child, withNot);
