You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by jh...@apache.org on 2018/07/09 07:49:43 UTC

[21/30] calcite git commit: [CALCITE-2259] Allow Java 8 syntax

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/interpreter/Interpreter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/interpreter/Interpreter.java b/core/src/main/java/org/apache/calcite/interpreter/Interpreter.java
index 6096630..2bff11c 100644
--- a/core/src/main/java/org/apache/calcite/interpreter/Interpreter.java
+++ b/core/src/main/java/org/apache/calcite/interpreter/Interpreter.java
@@ -46,7 +46,6 @@ import org.apache.calcite.util.ReflectiveVisitDispatcher;
 import org.apache.calcite.util.ReflectiveVisitor;
 import org.apache.calcite.util.Util;
 
-import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Iterables;
@@ -65,6 +64,7 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 import java.util.NoSuchElementException;
+import java.util.Objects;
 
 /**
  * Interpreter.
@@ -81,7 +81,7 @@ public class Interpreter extends AbstractEnumerable<Object[]>
 
   /** Creates an Interpreter. */
   public Interpreter(DataContext dataContext, RelNode rootRel) {
-    this.dataContext = Preconditions.checkNotNull(dataContext);
+    this.dataContext = Objects.requireNonNull(dataContext);
     final RelNode rel = optimize(rootRel);
     final CompilerImpl compiler =
         new Nodes.CoreCompiler(this, rootRel.getCluster());
@@ -266,7 +266,7 @@ public class Interpreter extends AbstractEnumerable<Object[]>
     private final Enumerator<Row> enumerator;
 
     EnumeratorSource(final Enumerator<Row> enumerator) {
-      this.enumerator = Preconditions.checkNotNull(enumerator);
+      this.enumerator = Objects.requireNonNull(enumerator);
     }
 
     @Override public Row receive() {

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/interpreter/JaninoRexCompiler.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/interpreter/JaninoRexCompiler.java b/core/src/main/java/org/apache/calcite/interpreter/JaninoRexCompiler.java
index e4cf9e6..7b2ddca 100644
--- a/core/src/main/java/org/apache/calcite/interpreter/JaninoRexCompiler.java
+++ b/core/src/main/java/org/apache/calcite/interpreter/JaninoRexCompiler.java
@@ -17,7 +17,6 @@
 package org.apache.calcite.interpreter;
 
 import org.apache.calcite.adapter.enumerable.JavaRowFormat;
-import org.apache.calcite.adapter.enumerable.PhysType;
 import org.apache.calcite.adapter.enumerable.PhysTypeImpl;
 import org.apache.calcite.adapter.enumerable.RexToLixTranslator;
 import org.apache.calcite.jdbc.JavaTypeFactoryImpl;
@@ -40,7 +39,6 @@ import org.apache.calcite.util.Pair;
 import org.apache.calcite.util.Util;
 
 import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
 
 import org.codehaus.commons.compiler.CompileException;
 import org.codehaus.commons.compiler.CompilerFactoryFactory;
@@ -50,7 +48,7 @@ import org.codehaus.commons.compiler.ICompilerFactory;
 import java.io.IOException;
 import java.io.StringReader;
 import java.lang.reflect.Modifier;
-import java.lang.reflect.Type;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -85,17 +83,14 @@ public class JaninoRexCompiler implements Interpreter.ScalarCompiler {
     final RexToLixTranslator.InputGetter inputGetter =
         new RexToLixTranslator.InputGetterImpl(
             ImmutableList.of(
-                Pair.<Expression, PhysType>of(
+                Pair.of(
                     Expressions.field(context_,
                         BuiltInMethod.CONTEXT_VALUES.field),
                     PhysTypeImpl.of(javaTypeFactory, inputRowType,
                         JavaRowFormat.ARRAY, false))));
-    final Function1<String, RexToLixTranslator.InputGetter> correlates =
-        new Function1<String, RexToLixTranslator.InputGetter>() {
-          public RexToLixTranslator.InputGetter apply(String a0) {
-            throw new UnsupportedOperationException();
-          }
-        };
+    final Function1<String, RexToLixTranslator.InputGetter> correlates = a0 -> {
+      throw new UnsupportedOperationException();
+    };
     final Expression root =
         Expressions.field(context_, BuiltInMethod.CONTEXT_ROOT.field);
     final List<Expression> list =
@@ -117,7 +112,7 @@ public class JaninoRexCompiler implements Interpreter.ScalarCompiler {
    * compiles. */
   static Scalar baz(ParameterExpression context_,
       ParameterExpression outputValues_, BlockStatement block) {
-    final List<MemberDeclaration> declarations = Lists.newArrayList();
+    final List<MemberDeclaration> declarations = new ArrayList<>();
 
     // public void execute(Context, Object[] outputValues)
     declarations.add(
@@ -145,7 +140,7 @@ public class JaninoRexCompiler implements Interpreter.ScalarCompiler {
 
     final ClassDeclaration classDeclaration =
         Expressions.classDecl(Modifier.PUBLIC, "Buzz", null,
-            ImmutableList.<Type>of(Scalar.class), declarations);
+            ImmutableList.of(Scalar.class), declarations);
     String s = Expressions.toString(declarations, "\n", false);
     if (CalcitePrepareImpl.DEBUG) {
       Util.debugCode(System.out, s);

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/interpreter/JoinNode.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/interpreter/JoinNode.java b/core/src/main/java/org/apache/calcite/interpreter/JoinNode.java
index 349e26f..a167254 100644
--- a/core/src/main/java/org/apache/calcite/interpreter/JoinNode.java
+++ b/core/src/main/java/org/apache/calcite/interpreter/JoinNode.java
@@ -19,8 +19,8 @@ package org.apache.calcite.interpreter;
 import org.apache.calcite.rel.core.Join;
 
 import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -56,7 +56,7 @@ public class JoinNode implements Node {
     while ((left = leftSource.receive()) != null) {
       System.arraycopy(left.getValues(), 0, context.values, 0, leftCount);
       if (rightList == null) {
-        rightList = Lists.newArrayList();
+        rightList = new ArrayList<>();
         while ((right = rightSource.receive()) != null) {
           rightList.add(right);
         }

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/interpreter/NoneToBindableConverterRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/interpreter/NoneToBindableConverterRule.java b/core/src/main/java/org/apache/calcite/interpreter/NoneToBindableConverterRule.java
index e352ca1..233b2ed 100644
--- a/core/src/main/java/org/apache/calcite/interpreter/NoneToBindableConverterRule.java
+++ b/core/src/main/java/org/apache/calcite/interpreter/NoneToBindableConverterRule.java
@@ -23,7 +23,7 @@ import org.apache.calcite.rel.convert.ConverterRule;
 import org.apache.calcite.rel.core.RelFactories;
 import org.apache.calcite.tools.RelBuilderFactory;
 
-import com.google.common.base.Predicates;
+import java.util.function.Predicate;
 
 /**
  * Rule to convert a relational expression from
@@ -40,7 +40,7 @@ public class NoneToBindableConverterRule extends ConverterRule {
    * @param relBuilderFactory Builder for relational expressions
    */
   public NoneToBindableConverterRule(RelBuilderFactory relBuilderFactory) {
-    super(RelNode.class, Predicates.<RelNode>alwaysTrue(), Convention.NONE,
+    super(RelNode.class, (Predicate<RelNode>) r -> true, Convention.NONE,
         BindableConvention.INSTANCE, relBuilderFactory,
         "NoneToBindableConverterRule");
   }

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/interpreter/SortNode.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/interpreter/SortNode.java b/core/src/main/java/org/apache/calcite/interpreter/SortNode.java
index 04c95bf..210a530 100644
--- a/core/src/main/java/org/apache/calcite/interpreter/SortNode.java
+++ b/core/src/main/java/org/apache/calcite/interpreter/SortNode.java
@@ -20,12 +20,10 @@ import org.apache.calcite.rel.RelFieldCollation;
 import org.apache.calcite.rel.core.Sort;
 import org.apache.calcite.rex.RexLiteral;
 
-import com.google.common.base.Function;
 import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
 import com.google.common.collect.Ordering;
 
-import java.util.Collections;
+import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.List;
 
@@ -68,11 +66,11 @@ public class SortNode extends AbstractSingleNode<Sort> {
       }
     } else {
       // Build a sorted collection.
-      final List<Row> list = Lists.newArrayList();
+      final List<Row> list = new ArrayList<>();
       while ((row = source.receive()) != null) {
         list.add(row);
       }
-      Collections.sort(list, comparator());
+      list.sort(comparator());
       final int end = fetch < 0 || offset + fetch > list.size()
           ? list.size()
           : offset + fetch;
@@ -89,11 +87,7 @@ public class SortNode extends AbstractSingleNode<Sort> {
     }
     return Ordering.compound(
         Iterables.transform(rel.getCollation().getFieldCollations(),
-            new Function<RelFieldCollation, Comparator<Row>>() {
-              public Comparator<Row> apply(RelFieldCollation input) {
-                return comparator(input);
-              }
-            }));
+            this::comparator));
   }
 
   private Comparator<Row> comparator(RelFieldCollation fieldCollation) {
@@ -101,20 +95,16 @@ public class SortNode extends AbstractSingleNode<Sort> {
     final int x = fieldCollation.getFieldIndex();
     switch (fieldCollation.direction) {
     case ASCENDING:
-      return new Comparator<Row>() {
-        public int compare(Row o1, Row o2) {
-          final Comparable c1 = (Comparable) o1.getValues()[x];
-          final Comparable c2 = (Comparable) o2.getValues()[x];
-          return RelFieldCollation.compare(c1, c2, nullComparison);
-        }
+      return (o1, o2) -> {
+        final Comparable c1 = (Comparable) o1.getValues()[x];
+        final Comparable c2 = (Comparable) o2.getValues()[x];
+        return RelFieldCollation.compare(c1, c2, nullComparison);
       };
     default:
-      return new Comparator<Row>() {
-        public int compare(Row o1, Row o2) {
-          final Comparable c1 = (Comparable) o1.getValues()[x];
-          final Comparable c2 = (Comparable) o2.getValues()[x];
-          return RelFieldCollation.compare(c2, c1, -nullComparison);
-        }
+      return (o1, o2) -> {
+        final Comparable c1 = (Comparable) o1.getValues()[x];
+        final Comparable c2 = (Comparable) o2.getValues()[x];
+        return RelFieldCollation.compare(c2, c1, -nullComparison);
       };
     }
   }

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/interpreter/TableScanNode.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/interpreter/TableScanNode.java b/core/src/main/java/org/apache/calcite/interpreter/TableScanNode.java
index 9c8124e..54217c9 100644
--- a/core/src/main/java/org/apache/calcite/interpreter/TableScanNode.java
+++ b/core/src/main/java/org/apache/calcite/interpreter/TableScanNode.java
@@ -20,7 +20,6 @@ import org.apache.calcite.DataContext;
 import org.apache.calcite.linq4j.Enumerable;
 import org.apache.calcite.linq4j.Queryable;
 import org.apache.calcite.linq4j.function.Function1;
-import org.apache.calcite.linq4j.function.Predicate1;
 import org.apache.calcite.plan.RelOptTable;
 import org.apache.calcite.plan.RelOptUtil;
 import org.apache.calcite.rel.core.TableScan;
@@ -144,21 +143,18 @@ public class TableScanNode implements Node {
         }
       }
       final List<Field> fields = fieldBuilder.build();
-      rowEnumerable = queryable.select(
-          new Function1<Object, Row>() {
-            public Row apply(Object o) {
-              final Object[] values = new Object[fields.size()];
-              for (int i = 0; i < fields.size(); i++) {
-                Field field = fields.get(i);
-                try {
-                  values[i] = field.get(o);
-                } catch (IllegalAccessException e) {
-                  throw new RuntimeException(e);
-                }
-              }
-              return new Row(values);
-            }
-          });
+      rowEnumerable = queryable.select(o -> {
+        final Object[] values = new Object[fields.size()];
+        for (int i = 0; i < fields.size(); i++) {
+          Field field = fields.get(i);
+          try {
+            values[i] = field.get(o);
+          } catch (IllegalAccessException e) {
+            throw new RuntimeException(e);
+          }
+        }
+        return new Row(values);
+      });
     } else {
       rowEnumerable =
           Schemas.queryable(root, Row.class, relOptTable.getQualifiedName());
@@ -270,14 +266,11 @@ public class TableScanNode implements Node {
       final Scalar condition =
           compiler.compile(ImmutableList.of(filter2), inputRowType);
       final Context context = compiler.createContext();
-      enumerable = enumerable.where(
-          new Predicate1<Row>() {
-            @Override public boolean apply(Row row) {
-              context.values = row.getValues();
-              Boolean b = (Boolean) condition.execute(context);
-              return b != null && b;
-            }
-          });
+      enumerable = enumerable.where(row -> {
+        context.values = row.getValues();
+        Boolean b = (Boolean) condition.execute(context);
+        return b != null && b;
+      });
     }
     if (rejectedProjects != null) {
       enumerable = enumerable.select(

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/interpreter/UnionNode.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/interpreter/UnionNode.java b/core/src/main/java/org/apache/calcite/interpreter/UnionNode.java
index 0f6fe4f..98d5c52 100644
--- a/core/src/main/java/org/apache/calcite/interpreter/UnionNode.java
+++ b/core/src/main/java/org/apache/calcite/interpreter/UnionNode.java
@@ -19,8 +19,8 @@ package org.apache.calcite.interpreter;
 import org.apache.calcite.rel.core.Union;
 
 import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Sets;
 
+import java.util.HashSet;
 import java.util.Set;
 
 /**
@@ -43,7 +43,7 @@ public class UnionNode implements Node {
   }
 
   public void run() throws InterruptedException {
-    final Set<Row> rows = rel.all ? null : Sets.<Row>newHashSet();
+    final Set<Row> rows = rel.all ? null : new HashSet<>();
     for (Source source : sources) {
       Row row;
       while ((row = source.receive()) != null) {

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/interpreter/ValuesNode.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/interpreter/ValuesNode.java b/core/src/main/java/org/apache/calcite/interpreter/ValuesNode.java
index 1c6f255..83a510d 100644
--- a/core/src/main/java/org/apache/calcite/interpreter/ValuesNode.java
+++ b/core/src/main/java/org/apache/calcite/interpreter/ValuesNode.java
@@ -21,8 +21,8 @@ import org.apache.calcite.rex.RexLiteral;
 import org.apache.calcite.rex.RexNode;
 
 import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -42,7 +42,7 @@ public class ValuesNode implements Node {
 
   private ImmutableList<Row> createRows(Compiler compiler,
       ImmutableList<ImmutableList<RexLiteral>> tuples) {
-    final List<RexNode> nodes = Lists.newArrayList();
+    final List<RexNode> nodes = new ArrayList<>();
     for (ImmutableList<RexLiteral> tuple : tuples) {
       nodes.addAll(tuple);
     }

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/jdbc/CalciteConnectionImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/jdbc/CalciteConnectionImpl.java b/core/src/main/java/org/apache/calcite/jdbc/CalciteConnectionImpl.java
index ec5d610..5db3421 100644
--- a/core/src/main/java/org/apache/calcite/jdbc/CalciteConnectionImpl.java
+++ b/core/src/main/java/org/apache/calcite/jdbc/CalciteConnectionImpl.java
@@ -44,7 +44,6 @@ import org.apache.calcite.linq4j.tree.Expressions;
 import org.apache.calcite.materialize.Lattice;
 import org.apache.calcite.materialize.MaterializationService;
 import org.apache.calcite.prepare.CalciteCatalogReader;
-import org.apache.calcite.rel.RelNode;
 import org.apache.calcite.rel.type.DelegatingTypeSystem;
 import org.apache.calcite.rel.type.RelDataTypeSystem;
 import org.apache.calcite.runtime.Hook;
@@ -67,16 +66,17 @@ import org.apache.calcite.util.Holder;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Maps;
 
 import java.io.Serializable;
 import java.lang.reflect.Type;
-import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
+import java.util.HashMap;
 import java.util.Iterator;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Properties;
 import java.util.TimeZone;
 import java.util.concurrent.atomic.AtomicBoolean;
@@ -135,7 +135,7 @@ abstract class CalciteConnectionImpl
       this.typeFactory = new JavaTypeFactoryImpl(typeSystem);
     }
     this.rootSchema =
-        Preconditions.checkNotNull(rootSchema != null
+        Objects.requireNonNull(rootSchema != null
             ? rootSchema
             : CalciteSchema.createRootSchema(true));
     Preconditions.checkArgument(this.rootSchema.isRoot(), "must be root schema");
@@ -172,18 +172,15 @@ abstract class CalciteConnectionImpl
 
   @Override public <T> T unwrap(Class<T> iface) throws SQLException {
     if (iface == RelRunner.class) {
-      return iface.cast(
-          new RelRunner() {
-            public PreparedStatement prepare(RelNode rel) {
-              try {
-                return prepareStatement_(CalcitePrepare.Query.of(rel),
-                    ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY,
-                    getHoldability());
-              } catch (SQLException e) {
-                throw new RuntimeException(e);
-              }
-            }
-          });
+      return iface.cast((RelRunner) rel -> {
+        try {
+          return prepareStatement_(CalcitePrepare.Query.of(rel),
+              ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY,
+              getHoldability());
+        } catch (SQLException e) {
+          throw new RuntimeException(e);
+        }
+      });
     }
     return super.unwrap(iface);
   }
@@ -288,7 +285,7 @@ abstract class CalciteConnectionImpl
 
   public <T> Enumerable<T> enumerable(Meta.StatementHandle handle,
       CalcitePrepare.CalciteSignature<T> signature) throws SQLException {
-    Map<String, Object> map = Maps.newLinkedHashMap();
+    Map<String, Object> map = new LinkedHashMap<>();
     AvaticaStatement statement = lookupStatement(handle);
     final List<TypedValue> parameterValues =
         TROJAN.getParameterValues(statement);
@@ -346,7 +343,7 @@ abstract class CalciteConnectionImpl
 
   /** Implementation of Server. */
   private static class CalciteServerImpl implements CalciteServer {
-    final Map<Integer, CalciteServerStatement> statementMap = Maps.newHashMap();
+    final Map<Integer, CalciteServerStatement> statementMap = new HashMap<>();
 
     public void removeStatement(Meta.StatementHandle h) {
       statementMap.remove(h.id);
@@ -455,7 +452,7 @@ abstract class CalciteConnectionImpl
       }
       final List<String> schemaPath =
           schemaName == null
-              ? ImmutableList.<String>of()
+              ? ImmutableList.of()
               : ImmutableList.of(schemaName);
       final SqlValidatorWithHints validator =
           new SqlAdvisorValidator(SqlStdOperatorTable.instance(),
@@ -485,7 +482,7 @@ abstract class CalciteConnectionImpl
     private final CalciteSchema rootSchema;
 
     ContextImpl(CalciteConnectionImpl connection) {
-      this.connection = Preconditions.checkNotNull(connection);
+      this.connection = Objects.requireNonNull(connection);
       long now = System.currentTimeMillis();
       SchemaVersion schemaVersion = new LongSchemaVersion(now);
       this.mutableRootSchema = connection.rootSchema;
@@ -512,7 +509,7 @@ abstract class CalciteConnectionImpl
         throw new RuntimeException(e);
       }
       return schemaName == null
-          ? ImmutableList.<String>of()
+          ? ImmutableList.of()
           : ImmutableList.of(schemaName);
     }
 
@@ -525,7 +522,7 @@ abstract class CalciteConnectionImpl
     }
 
     public DataContext getDataContext() {
-      return connection.createDataContext(ImmutableMap.<String, Object>of(),
+      return connection.createDataContext(ImmutableMap.of(),
           rootSchema);
     }
 
@@ -577,7 +574,7 @@ abstract class CalciteConnectionImpl
     private final AtomicBoolean cancelFlag = new AtomicBoolean();
 
     CalciteServerStatementImpl(CalciteConnectionImpl connection) {
-      this.connection = Preconditions.checkNotNull(connection);
+      this.connection = Objects.requireNonNull(connection);
     }
 
     public Context createPrepareContext() {

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/jdbc/CalciteMetaImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/jdbc/CalciteMetaImpl.java b/core/src/main/java/org/apache/calcite/jdbc/CalciteMetaImpl.java
index 837aece..0e9457b 100644
--- a/core/src/main/java/org/apache/calcite/jdbc/CalciteMetaImpl.java
+++ b/core/src/main/java/org/apache/calcite/jdbc/CalciteMetaImpl.java
@@ -19,7 +19,6 @@ package org.apache.calcite.jdbc;
 import org.apache.calcite.DataContext;
 import org.apache.calcite.adapter.java.AbstractQueryableTable;
 import org.apache.calcite.adapter.java.JavaTypeFactory;
-import org.apache.calcite.avatica.AvaticaParameter;
 import org.apache.calcite.avatica.AvaticaStatement;
 import org.apache.calcite.avatica.AvaticaUtils;
 import org.apache.calcite.avatica.ColumnMetaData;
@@ -37,11 +36,9 @@ import org.apache.calcite.linq4j.Queryable;
 import org.apache.calcite.linq4j.function.Function1;
 import org.apache.calcite.linq4j.function.Functions;
 import org.apache.calcite.linq4j.function.Predicate1;
-import org.apache.calcite.rel.RelCollation;
 import org.apache.calcite.rel.type.RelDataType;
 import org.apache.calcite.rel.type.RelDataTypeFactory;
 import org.apache.calcite.rel.type.RelDataTypeFactoryImpl;
-import org.apache.calcite.rel.type.RelDataTypeField;
 import org.apache.calcite.rel.type.RelDataTypeSystem;
 import org.apache.calcite.runtime.FlatLists;
 import org.apache.calcite.runtime.Hook;
@@ -60,7 +57,6 @@ import org.apache.calcite.util.Pair;
 import org.apache.calcite.util.Util;
 
 import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.primitives.Ints;
@@ -75,6 +71,7 @@ import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.regex.Pattern;
 
 /**
@@ -98,11 +95,7 @@ public class CalciteMetaImpl extends MetaImpl {
       return Functions.truePredicate1();
     }
     final Pattern regex = likeToRegex(pattern);
-    return new Predicate1<T>() {
-      public boolean apply(T v1) {
-        return regex.matcher(v1.getName()).matches();
-      }
-    };
+    return v1 -> regex.matcher(v1.getName()).matches();
   }
 
   static Predicate1<String> matcher(final Pat pattern) {
@@ -110,11 +103,7 @@ public class CalciteMetaImpl extends MetaImpl {
       return Functions.truePredicate1();
     }
     final Pattern regex = likeToRegex(pattern);
-    return new Predicate1<String>() {
-      public boolean apply(String v1) {
-        return regex.matcher(v1).matches();
-      }
-    };
+    return v1 -> regex.matcher(v1).matches();
   }
 
   /** Converts a LIKE-style pattern (where '%' represents a wild-card, escaped
@@ -190,7 +179,7 @@ public class CalciteMetaImpl extends MetaImpl {
     }
     //noinspection unchecked
     final Iterable<Object> iterable = (Iterable<Object>) (Iterable) enumerable;
-    return createResultSet(Collections.<String, Object>emptyMap(),
+    return createResultSet(Collections.emptyMap(),
         columns, CursorFactory.record(clazz, fields, fieldNames),
         new Frame(0, true, iterable));
   }
@@ -199,7 +188,7 @@ public class CalciteMetaImpl extends MetaImpl {
   createEmptyResultSet(final Class<E> clazz) {
     final List<ColumnMetaData> columns = fieldMetaData(clazz).columns;
     final CursorFactory cursorFactory = CursorFactory.deduce(columns, clazz);
-    return createResultSet(Collections.<String, Object>emptyMap(), columns,
+    return createResultSet(Collections.emptyMap(), columns,
         cursorFactory, Frame.EMPTY);
   }
 
@@ -211,8 +200,8 @@ public class CalciteMetaImpl extends MetaImpl {
       final AvaticaStatement statement = connection.createStatement();
       final CalcitePrepare.CalciteSignature<Object> signature =
           new CalcitePrepare.CalciteSignature<Object>("",
-              ImmutableList.<AvaticaParameter>of(), internalParameters, null,
-              columns, cursorFactory, null, ImmutableList.<RelCollation>of(), -1,
+              ImmutableList.of(), internalParameters, null,
+              columns, cursorFactory, null, ImmutableList.of(), -1,
               null, Meta.StatementType.SELECT) {
             @Override public Enumerable<Object> enumerable(
                 DataContext dataContext) {
@@ -268,21 +257,12 @@ public class CalciteMetaImpl extends MetaImpl {
     if (typeList == null) {
       typeFilter = Functions.truePredicate1();
     } else {
-      typeFilter = new Predicate1<MetaTable>() {
-        public boolean apply(MetaTable v1) {
-          return typeList.contains(v1.tableType);
-        }
-      };
+      typeFilter = v1 -> typeList.contains(v1.tableType);
     }
     final Predicate1<MetaSchema> schemaMatcher = namedMatcher(schemaPattern);
     return createResultSet(schemas(catalog)
             .where(schemaMatcher)
-            .selectMany(
-                new Function1<MetaSchema, Enumerable<MetaTable>>() {
-                  public Enumerable<MetaTable> apply(MetaSchema schema) {
-                    return tables(schema, matcher(tableNamePattern));
-                  }
-                })
+            .selectMany(schema -> tables(schema, matcher(tableNamePattern)))
             .where(typeFilter),
         MetaTable.class,
         "TABLE_CAT",
@@ -331,18 +311,8 @@ public class CalciteMetaImpl extends MetaImpl {
         namedMatcher(columnNamePattern);
     return createResultSet(schemas(catalog)
             .where(schemaMatcher)
-            .selectMany(
-                new Function1<MetaSchema, Enumerable<MetaTable>>() {
-                  public Enumerable<MetaTable> apply(MetaSchema schema) {
-                    return tables(schema, tableNameMatcher);
-                  }
-                })
-            .selectMany(
-                new Function1<MetaTable, Enumerable<MetaColumn>>() {
-                  public Enumerable<MetaColumn> apply(MetaTable schema) {
-                    return columns(schema);
-                  }
-                })
+            .selectMany(schema -> tables(schema, tableNameMatcher))
+            .selectMany(this::columns)
             .where(columnMatcher),
         MetaColumn.class,
         "TABLE_CAT",
@@ -391,75 +361,49 @@ public class CalciteMetaImpl extends MetaImpl {
   Enumerable<MetaSchema> schemas(final String catalog) {
     return Linq4j.asEnumerable(
         getConnection().rootSchema.getSubSchemaMap().values())
-        .select(
-            new Function1<CalciteSchema, MetaSchema>() {
-              public MetaSchema apply(CalciteSchema calciteSchema) {
-                return new CalciteMetaSchema(
-                    calciteSchema,
-                    catalog,
-                    calciteSchema.getName());
-              }
-            })
-        .orderBy(
-            new Function1<MetaSchema, Comparable>() {
-              public Comparable apply(MetaSchema metaSchema) {
-                return (Comparable) FlatLists.of(
-                    Util.first(metaSchema.tableCatalog, ""),
-                    metaSchema.tableSchem);
-              }
-            });
+        .select((Function1<CalciteSchema, MetaSchema>) calciteSchema ->
+            new CalciteMetaSchema(calciteSchema, catalog,
+                calciteSchema.getName()))
+        .orderBy((Function1<MetaSchema, Comparable>) metaSchema ->
+            (Comparable) FlatLists.of(Util.first(metaSchema.tableCatalog, ""),
+                metaSchema.tableSchem));
   }
 
   Enumerable<MetaTable> tables(String catalog) {
     return schemas(catalog)
-        .selectMany(
-            new Function1<MetaSchema, Enumerable<MetaTable>>() {
-              public Enumerable<MetaTable> apply(MetaSchema schema) {
-                return tables(schema, Functions.<String>truePredicate1());
-              }
-            });
+        .selectMany(schema ->
+            tables(schema, Functions.<String>truePredicate1()));
   }
 
   Enumerable<MetaTable> tables(final MetaSchema schema_) {
     final CalciteMetaSchema schema = (CalciteMetaSchema) schema_;
     return Linq4j.asEnumerable(schema.calciteSchema.getTableNames())
-        .select(
-            new Function1<String, MetaTable>() {
-              public MetaTable apply(String name) {
-                final Table table =
-                    schema.calciteSchema.getTable(name, true).getTable();
-                return new CalciteMetaTable(table,
-                    schema.tableCatalog,
-                    schema.tableSchem,
-                    name);
-              }
-            })
+        .select((Function1<String, MetaTable>) name -> {
+          final Table table =
+              schema.calciteSchema.getTable(name, true).getTable();
+          return new CalciteMetaTable(table,
+              schema.tableCatalog,
+              schema.tableSchem,
+              name);
+        })
         .concat(
             Linq4j.asEnumerable(
                 schema.calciteSchema.getTablesBasedOnNullaryFunctions()
                     .entrySet())
-                .select(
-                    new Function1<Map.Entry<String, Table>, MetaTable>() {
-                      public MetaTable apply(Map.Entry<String, Table> pair) {
-                        final Table table = pair.getValue();
-                        return new CalciteMetaTable(table,
-                            schema.tableCatalog,
-                            schema.tableSchem,
-                            pair.getKey());
-                      }
-                    }));
+                .select(pair -> {
+                  final Table table = pair.getValue();
+                  return new CalciteMetaTable(table,
+                      schema.tableCatalog,
+                      schema.tableSchem,
+                      pair.getKey());
+                }));
   }
 
   Enumerable<MetaTable> tables(
       final MetaSchema schema,
       final Predicate1<String> matcher) {
     return tables(schema)
-        .where(
-            new Predicate1<MetaTable>() {
-              public boolean apply(MetaTable v1) {
-                return matcher.apply(v1.getName());
-              }
-            });
+        .where(v1 -> matcher.apply(v1.getName()));
   }
 
   private ImmutableList<MetaTypeInfo> getAllDefaultType() {
@@ -499,35 +443,32 @@ public class CalciteMetaImpl extends MetaImpl {
     final RelDataType rowType =
         table.calciteTable.getRowType(getConnection().typeFactory);
     return Linq4j.asEnumerable(rowType.getFieldList())
-        .select(
-            new Function1<RelDataTypeField, MetaColumn>() {
-              public MetaColumn apply(RelDataTypeField field) {
-                final int precision =
-                    field.getType().getSqlTypeName().allowsPrec()
-                        && !(field.getType()
-                        instanceof RelDataTypeFactoryImpl.JavaType)
-                        ? field.getType().getPrecision()
-                        : -1;
-                return new MetaColumn(
-                    table.tableCat,
-                    table.tableSchem,
-                    table.tableName,
-                    field.getName(),
-                    field.getType().getSqlTypeName().getJdbcOrdinal(),
-                    field.getType().getFullTypeString(),
-                    precision,
-                    field.getType().getSqlTypeName().allowsScale()
-                        ? field.getType().getScale()
-                        : null,
-                    10,
-                    field.getType().isNullable()
-                        ? DatabaseMetaData.columnNullable
-                        : DatabaseMetaData.columnNoNulls,
-                    precision,
-                    field.getIndex() + 1,
-                    field.getType().isNullable() ? "YES" : "NO");
-              }
-            });
+        .select(field -> {
+          final int precision =
+              field.getType().getSqlTypeName().allowsPrec()
+                  && !(field.getType()
+                  instanceof RelDataTypeFactoryImpl.JavaType)
+                  ? field.getType().getPrecision()
+                  : -1;
+          return new MetaColumn(
+              table.tableCat,
+              table.tableSchem,
+              table.tableName,
+              field.getName(),
+              field.getType().getSqlTypeName().getJdbcOrdinal(),
+              field.getType().getFullTypeString(),
+              precision,
+              field.getType().getSqlTypeName().allowsScale()
+                  ? field.getType().getScale()
+                  : null,
+              10,
+              field.getType().isNullable()
+                  ? DatabaseMetaData.columnNullable
+                  : DatabaseMetaData.columnNoNulls,
+              precision,
+              field.getIndex() + 1,
+              field.getType().isNullable() ? "YES" : "NO");
+        });
   }
 
   public MetaResultSet getSchemas(ConnectionHandle ch, String catalog, Pat schemaPattern) {
@@ -745,7 +686,7 @@ public class CalciteMetaImpl extends MetaImpl {
           public void execute() throws SQLException {
             if (signature.statementType.canUpdate()) {
               final Iterable<Object> iterable =
-                  _createIterable(h, signature, ImmutableList.<TypedValue>of(),
+                  _createIterable(h, signature, ImmutableList.of(),
                       null);
               final Iterator<Object> iterator = iterable.iterator();
               updateCount = ((Number) iterator.next()).longValue();
@@ -763,7 +704,7 @@ public class CalciteMetaImpl extends MetaImpl {
   @VisibleForTesting
   public static DataContext createDataContext(CalciteConnection connection) {
     return ((CalciteConnectionImpl) connection)
-        .createDataContext(ImmutableMap.<String, Object>of(),
+        .createDataContext(ImmutableMap.of(),
             CalciteSchema.from(connection.getRootSchema()));
   }
 
@@ -796,7 +737,7 @@ public class CalciteMetaImpl extends MetaImpl {
         String tableSchem, String tableName) {
       super(tableCat, tableSchem, tableName,
           calciteTable.getJdbcTableType().jdbcName);
-      this.calciteTable = Preconditions.checkNotNull(calciteTable);
+      this.calciteTable = Objects.requireNonNull(calciteTable);
     }
   }
 

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/jdbc/CalcitePrepare.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/jdbc/CalcitePrepare.java b/core/src/main/java/org/apache/calcite/jdbc/CalcitePrepare.java
index e0be075..f33d066 100644
--- a/core/src/main/java/org/apache/calcite/jdbc/CalcitePrepare.java
+++ b/core/src/main/java/org/apache/calcite/jdbc/CalcitePrepare.java
@@ -63,18 +63,9 @@ import java.util.Map;
  * API for a service that prepares statements for execution.
  */
 public interface CalcitePrepare {
-  Function0<CalcitePrepare> DEFAULT_FACTORY =
-      new Function0<CalcitePrepare>() {
-        public CalcitePrepare apply() {
-          return new CalcitePrepareImpl();
-        }
-      };
+  Function0<CalcitePrepare> DEFAULT_FACTORY = CalcitePrepareImpl::new;
   ThreadLocal<Deque<Context>> THREAD_CONTEXT_STACK =
-      new ThreadLocal<Deque<Context>>() {
-        @Override protected Deque<Context> initialValue() {
-          return new ArrayDeque<>();
-        }
-      };
+      ThreadLocal.withInitial(ArrayDeque::new);
 
   ParseResult parse(Context context, String sql);
 

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/jdbc/CalciteResultSet.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/jdbc/CalciteResultSet.java b/core/src/main/java/org/apache/calcite/jdbc/CalciteResultSet.java
index a8e2ecf..62e2249 100644
--- a/core/src/main/java/org/apache/calcite/jdbc/CalciteResultSet.java
+++ b/core/src/main/java/org/apache/calcite/jdbc/CalciteResultSet.java
@@ -25,7 +25,6 @@ import org.apache.calcite.avatica.Meta;
 import org.apache.calcite.avatica.util.Cursor;
 import org.apache.calcite.linq4j.Enumerator;
 import org.apache.calcite.linq4j.Linq4j;
-import org.apache.calcite.rel.RelCollation;
 import org.apache.calcite.runtime.ArrayEnumeratorCursor;
 import org.apache.calcite.runtime.ObjectEnumeratorCursor;
 
@@ -57,9 +56,7 @@ public class CalciteResultSet extends AvaticaResultSet {
     final boolean autoTemp = connection.config().autoTemp();
     Handler.ResultSink resultSink = null;
     if (autoTemp) {
-      resultSink = new Handler.ResultSink() {
-        public void toBeCompleted() {
-        }
+      resultSink = () -> {
       };
     }
     connection.getDriver().handler.onStatementExecute(statement, resultSink);
@@ -83,7 +80,7 @@ public class CalciteResultSet extends AvaticaResultSet {
         new CalcitePrepare.CalciteSignature<>(signature.sql,
             signature.parameters, signature.internalParameters,
             signature.rowType, columnMetaDataList, Meta.CursorFactory.ARRAY,
-            signature.rootSchema, ImmutableList.<RelCollation>of(), -1, null,
+            signature.rootSchema, ImmutableList.of(), -1, null,
             statement.getStatementType());
     ResultSetMetaData subResultSetMetaData =
         new AvaticaResultSetMetaData(statement, null, newSignature);

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/jdbc/CalciteSchema.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/jdbc/CalciteSchema.java b/core/src/main/java/org/apache/calcite/jdbc/CalciteSchema.java
index badf781..2cba4be 100644
--- a/core/src/main/java/org/apache/calcite/jdbc/CalciteSchema.java
+++ b/core/src/main/java/org/apache/calcite/jdbc/CalciteSchema.java
@@ -47,6 +47,7 @@ import java.util.Locale;
 import java.util.Map;
 import java.util.NavigableMap;
 import java.util.NavigableSet;
+import java.util.Objects;
 import java.util.Set;
 
 /**
@@ -82,17 +83,17 @@ public abstract class CalciteSchema {
     if (tableMap == null) {
       this.tableMap = new NameMap<>();
     } else {
-      this.tableMap = Preconditions.checkNotNull(tableMap);
+      this.tableMap = Objects.requireNonNull(tableMap);
     }
     if (latticeMap == null) {
       this.latticeMap = new NameMap<>();
     } else {
-      this.latticeMap = Preconditions.checkNotNull(latticeMap);
+      this.latticeMap = Objects.requireNonNull(latticeMap);
     }
     if (subSchemaMap == null) {
       this.subSchemaMap = new NameMap<>();
     } else {
-      this.subSchemaMap = Preconditions.checkNotNull(subSchemaMap);
+      this.subSchemaMap = Objects.requireNonNull(subSchemaMap);
     }
     if (functionMap == null) {
       this.functionMap = new NameMultimap<>();
@@ -101,14 +102,14 @@ public abstract class CalciteSchema {
     } else {
       // If you specify functionMap, you must also specify functionNames and
       // nullaryFunctionMap.
-      this.functionMap = Preconditions.checkNotNull(functionMap);
-      this.functionNames = Preconditions.checkNotNull(functionNames);
-      this.nullaryFunctionMap = Preconditions.checkNotNull(nullaryFunctionMap);
+      this.functionMap = Objects.requireNonNull(functionMap);
+      this.functionNames = Objects.requireNonNull(functionNames);
+      this.nullaryFunctionMap = Objects.requireNonNull(nullaryFunctionMap);
     }
     if (typeMap == null) {
       this.typeMap = new NameMap<>();
     } else {
-      this.typeMap = Preconditions.checkNotNull(typeMap);
+      this.typeMap = Objects.requireNonNull(typeMap);
     }
     this.path = path;
   }
@@ -172,7 +173,7 @@ public abstract class CalciteSchema {
 
   /** Creates a TableEntryImpl with no SQLs. */
   protected TableEntryImpl tableEntry(String name, Table table) {
-    return new TableEntryImpl(this, name, table, ImmutableList.<String>of());
+    return new TableEntryImpl(this, name, table, ImmutableList.of());
   }
 
   /** Creates a TableEntryImpl with no SQLs. */
@@ -182,7 +183,7 @@ public abstract class CalciteSchema {
 
   /** Defines a table within this schema. */
   public TableEntry add(String tableName, Table table) {
-    return add(tableName, table, ImmutableList.<String>of());
+    return add(tableName, table, ImmutableList.of());
   }
 
   /** Defines a table within this schema. */
@@ -552,8 +553,8 @@ public abstract class CalciteSchema {
     public final String name;
 
     public Entry(CalciteSchema schema, String name) {
-      this.schema = Preconditions.checkNotNull(schema);
-      this.name = Preconditions.checkNotNull(name);
+      this.schema = Objects.requireNonNull(schema);
+      this.name = Objects.requireNonNull(name);
     }
 
     /** Returns this object's path. For example ["hr", "emps"]. */
@@ -569,7 +570,7 @@ public abstract class CalciteSchema {
     public TableEntry(CalciteSchema schema, String name,
         ImmutableList<String> sqls) {
       super(schema, name);
-      this.sqls = Preconditions.checkNotNull(sqls);
+      this.sqls = Objects.requireNonNull(sqls);
     }
 
     public abstract Table getTable();
@@ -730,7 +731,7 @@ public abstract class CalciteSchema {
         ImmutableList<String> sqls) {
       super(schema, name, sqls);
       assert table != null;
-      this.table = Preconditions.checkNotNull(table);
+      this.table = Objects.requireNonNull(table);
     }
 
     public Table getTable() {

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/jdbc/JavaRecordType.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/jdbc/JavaRecordType.java b/core/src/main/java/org/apache/calcite/jdbc/JavaRecordType.java
index 831d696..7ef3439 100644
--- a/core/src/main/java/org/apache/calcite/jdbc/JavaRecordType.java
+++ b/core/src/main/java/org/apache/calcite/jdbc/JavaRecordType.java
@@ -19,8 +19,6 @@ package org.apache.calcite.jdbc;
 import org.apache.calcite.rel.type.RelDataTypeField;
 import org.apache.calcite.rel.type.RelRecordType;
 
-import com.google.common.base.Preconditions;
-
 import java.util.List;
 import java.util.Objects;
 
@@ -36,7 +34,7 @@ public class JavaRecordType extends RelRecordType {
 
   public JavaRecordType(List<RelDataTypeField> fields, Class clazz) {
     super(fields);
-    this.clazz = Preconditions.checkNotNull(clazz);
+    this.clazz = Objects.requireNonNull(clazz);
   }
 
   @Override public boolean equals(Object obj) {

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/jdbc/JavaTypeFactoryImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/jdbc/JavaTypeFactoryImpl.java b/core/src/main/java/org/apache/calcite/jdbc/JavaTypeFactoryImpl.java
index 8999f44..59805fe 100644
--- a/core/src/main/java/org/apache/calcite/jdbc/JavaTypeFactoryImpl.java
+++ b/core/src/main/java/org/apache/calcite/jdbc/JavaTypeFactoryImpl.java
@@ -37,8 +37,6 @@ import org.apache.calcite.sql.type.SqlTypeName;
 import org.apache.calcite.util.Pair;
 import org.apache.calcite.util.Util;
 
-import com.google.common.base.Function;
-import com.google.common.base.Preconditions;
 import com.google.common.collect.Lists;
 
 import java.lang.reflect.Field;
@@ -50,6 +48,7 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 
 /**
  * Implementation of {@link JavaTypeFactory}.
@@ -245,11 +244,7 @@ public class JavaTypeFactoryImpl
     if (type instanceof RelRecordType) {
       return typeFactory.createStructType(
           Lists.transform(type.getFieldList(),
-              new Function<RelDataTypeField, RelDataType>() {
-                public RelDataType apply(RelDataTypeField a0) {
-                  return toSql(typeFactory, a0.getType());
-                }
-              }),
+              field -> toSql(typeFactory, field.getType())),
           type.getFieldNames());
     }
     if (type instanceof JavaType) {
@@ -367,9 +362,9 @@ public class JavaTypeFactoryImpl
         Type type,
         boolean nullable,
         int modifiers) {
-      this.syntheticType = Preconditions.checkNotNull(syntheticType);
-      this.name = Preconditions.checkNotNull(name);
-      this.type = Preconditions.checkNotNull(type);
+      this.syntheticType = Objects.requireNonNull(syntheticType);
+      this.name = Objects.requireNonNull(name);
+      this.type = Objects.requireNonNull(type);
       this.nullable = nullable;
       this.modifiers = modifiers;
       assert !(nullable && Primitive.is(type))

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/jdbc/MetadataSchema.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/jdbc/MetadataSchema.java b/core/src/main/java/org/apache/calcite/jdbc/MetadataSchema.java
index 5fb2e89..c11ccea 100644
--- a/core/src/main/java/org/apache/calcite/jdbc/MetadataSchema.java
+++ b/core/src/main/java/org/apache/calcite/jdbc/MetadataSchema.java
@@ -16,9 +16,7 @@
  */
 package org.apache.calcite.jdbc;
 
-import org.apache.calcite.linq4j.Enumerable;
 import org.apache.calcite.linq4j.Enumerator;
-import org.apache.calcite.linq4j.function.Function1;
 import org.apache.calcite.schema.Schema;
 import org.apache.calcite.schema.Table;
 import org.apache.calcite.schema.impl.AbstractSchema;
@@ -34,7 +32,7 @@ import static org.apache.calcite.jdbc.CalciteMetaImpl.MetaTable;
 /** Schema that contains metadata tables such as "TABLES" and "COLUMNS". */
 class MetadataSchema extends AbstractSchema {
   private static final Map<String, Table> TABLE_MAP =
-      ImmutableMap.<String, Table>of(
+      ImmutableMap.of(
           "COLUMNS",
           new CalciteMetaImpl.MetadataTable<MetaColumn>(MetaColumn.class) {
             public Enumerator<MetaColumn> enumerator(
@@ -45,12 +43,8 @@ class MetadataSchema extends AbstractSchema {
               } catch (SQLException e) {
                 throw new RuntimeException(e);
               }
-              return meta.tables(catalog).selectMany(
-                  new Function1<MetaTable, Enumerable<MetaColumn>>() {
-                    public Enumerable<MetaColumn> apply(MetaTable table) {
-                      return meta.columns(table);
-                    }
-                  }).enumerator();
+              return meta.tables(catalog)
+                  .selectMany(meta::columns).enumerator();
             }
           },
           "TABLES",

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/materialize/CachingLatticeStatisticProvider.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/materialize/CachingLatticeStatisticProvider.java b/core/src/main/java/org/apache/calcite/materialize/CachingLatticeStatisticProvider.java
index 21c6fed..fb102d7 100644
--- a/core/src/main/java/org/apache/calcite/materialize/CachingLatticeStatisticProvider.java
+++ b/core/src/main/java/org/apache/calcite/materialize/CachingLatticeStatisticProvider.java
@@ -27,7 +27,6 @@ import com.google.common.util.concurrent.UncheckedExecutionException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.ExecutionException;
-import javax.annotation.Nonnull;
 
 /**
  * Implementation of {@link LatticeStatisticProvider} that caches single-column
@@ -41,13 +40,8 @@ class CachingLatticeStatisticProvider implements LatticeStatisticProvider {
   CachingLatticeStatisticProvider(final Lattice lattice,
       final LatticeStatisticProvider provider) {
     this.lattice = lattice;
-    cache = CacheBuilder.<Lattice.Column>newBuilder()
-        .build(
-            new CacheLoader<Lattice.Column, Double>() {
-              public Double load(@Nonnull Lattice.Column key) throws Exception {
-                return provider.cardinality(ImmutableList.of(key));
-              }
-            });
+    cache = CacheBuilder.<Lattice.Column>newBuilder().build(
+        CacheLoader.from(key -> provider.cardinality(ImmutableList.of(key))));
   }
 
   public double cardinality(List<Lattice.Column> columns) {

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/materialize/Lattice.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/materialize/Lattice.java b/core/src/main/java/org/apache/calcite/materialize/Lattice.java
index 3828416..0e09f63 100644
--- a/core/src/main/java/org/apache/calcite/materialize/Lattice.java
+++ b/core/src/main/java/org/apache/calcite/materialize/Lattice.java
@@ -52,16 +52,15 @@ import org.apache.calcite.util.graph.DirectedGraph;
 import org.apache.calcite.util.graph.TopologicalOrderIterator;
 import org.apache.calcite.util.mapping.IntPair;
 
-import com.google.common.base.Function;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableListMultimap;
 import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
 import com.google.common.collect.Ordering;
-import com.google.common.collect.Sets;
 
 import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.IdentityHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
@@ -72,20 +71,6 @@ import java.util.Set;
  * recognized and recommended.
  */
 public class Lattice {
-  private static final Function<Column, String> GET_ALIAS =
-      new Function<Column, String>() {
-        public String apply(Column input) {
-          return input.alias;
-        }
-      };
-
-  private static final Function<Column, Integer> GET_ORDINAL =
-      new Function<Column, Integer>() {
-        public Integer apply(Column input) {
-          return input.ordinal;
-        }
-      };
-
   public final CalciteSchema rootSchema;
   public final ImmutableList<Node> nodes;
   public final ImmutableList<Column> columns;
@@ -98,33 +83,19 @@ public class Lattice {
   public final ImmutableList<String> uniqueColumnNames;
   public final LatticeStatisticProvider statisticProvider;
 
-  private final Function<Integer, Column> toColumnFunction =
-      new Function<Integer, Column>() {
-        public Column apply(Integer input) {
-          return columns.get(input);
-        }
-      };
-  private final Function<AggregateCall, Measure> toMeasureFunction =
-      new Function<AggregateCall, Measure>() {
-        public Measure apply(AggregateCall input) {
-          return new Measure(input.getAggregation(),
-              Lists.transform(input.getArgList(), toColumnFunction));
-        }
-      };
-
   private Lattice(CalciteSchema rootSchema, ImmutableList<Node> nodes,
       boolean auto, boolean algorithm, long algorithmMaxMillis,
       LatticeStatisticProvider.Factory statisticProviderFactory,
       Double rowCountEstimate, ImmutableList<Column> columns,
       ImmutableList<Measure> defaultMeasures, ImmutableList<Tile> tiles) {
     this.rootSchema = rootSchema;
-    this.nodes = Preconditions.checkNotNull(nodes);
-    this.columns = Preconditions.checkNotNull(columns);
+    this.nodes = Objects.requireNonNull(nodes);
+    this.columns = Objects.requireNonNull(columns);
     this.auto = auto;
     this.algorithm = algorithm;
     this.algorithmMaxMillis = algorithmMaxMillis;
-    this.defaultMeasures = Preconditions.checkNotNull(defaultMeasures);
-    this.tiles = Preconditions.checkNotNull(tiles);
+    this.defaultMeasures = Objects.requireNonNull(defaultMeasures);
+    this.tiles = Objects.requireNonNull(tiles);
 
     // Validate that nodes form a tree; each node except the first references
     // a predecessor.
@@ -137,13 +108,14 @@ public class Lattice {
       }
     }
 
-    List<String> nameList = Lists.newArrayList();
+    List<String> nameList = new ArrayList<>();
     for (Column column : columns) {
       nameList.add(column.alias);
     }
     uniqueColumnNames =
         ImmutableList.copyOf(
-            SqlValidatorUtil.uniquify(Lists.transform(columns, GET_ALIAS), true));
+            SqlValidatorUtil.uniquify(
+                Lists.transform(columns, input -> input.alias), true));
     if (rowCountEstimate == null) {
       // We could improve this when we fix
       // [CALCITE-429] Add statistics SPI for lattice optimization algorithm
@@ -152,7 +124,7 @@ public class Lattice {
     Preconditions.checkArgument(rowCountEstimate > 0d);
     this.rowCountEstimate = rowCountEstimate;
     this.statisticProvider =
-        Preconditions.checkNotNull(statisticProviderFactory.apply(this));
+        Objects.requireNonNull(statisticProviderFactory.apply(this));
   }
 
   /** Creates a Lattice. */
@@ -274,7 +246,7 @@ public class Lattice {
     final StringBuilder buf = new StringBuilder("SELECT ");
     final StringBuilder groupBuf = new StringBuilder("\nGROUP BY ");
     int k = 0;
-    final Set<String> columnNames = Sets.newHashSet();
+    final Set<String> columnNames = new HashSet<>();
     if (groupSet != null) {
       for (int i : groupSet) {
         if (k++ > 0) {
@@ -359,7 +331,7 @@ public class Lattice {
    * attributes given in {@code groupSet}. */
   public String countSql(ImmutableBitSet groupSet) {
     return "select count(*) as c from ("
-        + sql(groupSet, ImmutableList.<Measure>of())
+        + sql(groupSet, ImmutableList.of())
         + ")";
   }
 
@@ -373,7 +345,7 @@ public class Lattice {
   }
 
   public StarTable createStarTable() {
-    final List<Table> tables = Lists.newArrayList();
+    final List<Table> tables = new ArrayList<>();
     for (Node node : nodes) {
       tables.add(node.scan.getTable().unwrap(Table.class));
     }
@@ -385,7 +357,9 @@ public class Lattice {
   }
 
   public List<Measure> toMeasures(List<AggregateCall> aggCallList) {
-    return Lists.transform(aggCallList, toMeasureFunction);
+    return Lists.transform(aggCallList,
+        call -> new Measure(call.getAggregation(),
+        Lists.transform(call.getArgList(), columns::get)));
   }
 
   public Iterable<? extends Tile> computeTiles() {
@@ -454,7 +428,7 @@ public class Lattice {
 
     public Node(TableScan scan, Node parent, List<IntPair> link,
         int startCol, int endCol, String alias) {
-      this.scan = Preconditions.checkNotNull(scan);
+      this.scan = Objects.requireNonNull(scan);
       this.parent = parent;
       this.link = link == null ? null : ImmutableList.copyOf(link);
       assert (parent == null) == (link == null);
@@ -469,13 +443,9 @@ public class Lattice {
   /** Edge in the temporary graph. */
   private static class Edge extends DefaultEdge {
     public static final DirectedGraph.EdgeFactory<RelNode, Edge> FACTORY =
-        new DirectedGraph.EdgeFactory<RelNode, Edge>() {
-          public Edge createEdge(RelNode source, RelNode target) {
-            return new Edge(source, target);
-          }
-        };
+        Edge::new;
 
-    final List<IntPair> pairs = Lists.newArrayList();
+    final List<IntPair> pairs = new ArrayList<>();
 
     Edge(RelNode source, RelNode target) {
       super(source, target);
@@ -496,7 +466,7 @@ public class Lattice {
     public final ImmutableList<Column> args;
 
     public Measure(SqlAggFunction agg, Iterable<Column> args) {
-      this.agg = Preconditions.checkNotNull(agg);
+      this.agg = Objects.requireNonNull(agg);
       this.args = ImmutableList.copyOf(args);
     }
 
@@ -534,7 +504,7 @@ public class Lattice {
 
     /** Returns a list of argument ordinals. */
     public List<Integer> argOrdinals() {
-      return Lists.transform(args, GET_ORDINAL);
+      return Lists.transform(args, input -> input.ordinal);
     }
 
     private static int compare(List<Column> list0, List<Column> list1) {
@@ -562,9 +532,9 @@ public class Lattice {
 
     private Column(int ordinal, String table, String column, String alias) {
       this.ordinal = ordinal;
-      this.table = Preconditions.checkNotNull(table);
-      this.column = Preconditions.checkNotNull(column);
-      this.alias = Preconditions.checkNotNull(alias);
+      this.table = Objects.requireNonNull(table);
+      this.column = Objects.requireNonNull(column);
+      this.alias = Objects.requireNonNull(alias);
     }
 
     /** Converts a list of columns to a bit set of their ordinals. */
@@ -601,7 +571,7 @@ public class Lattice {
 
   /** Lattice builder. */
   public static class Builder {
-    private final List<Node> nodes = Lists.newArrayList();
+    private final List<Node> nodes = new ArrayList<>();
     private final ImmutableList<Column> columns;
     private final ImmutableListMultimap<String, Column> columnsByAlias;
     private final ImmutableList.Builder<Measure> defaultMeasureListBuilder =
@@ -616,19 +586,19 @@ public class Lattice {
     private String statisticProvider;
 
     public Builder(CalciteSchema schema, String sql) {
-      this.rootSchema = Preconditions.checkNotNull(schema.root());
+      this.rootSchema = Objects.requireNonNull(schema.root());
       Preconditions.checkArgument(rootSchema.isRoot(), "must be root schema");
       CalcitePrepare.ConvertResult parsed =
           Schemas.convert(MaterializedViewTable.MATERIALIZATION_CONNECTION,
               schema, schema.path(null), sql);
 
       // Walk the join tree.
-      List<RelNode> relNodes = Lists.newArrayList();
-      List<int[][]> tempLinks = Lists.newArrayList();
+      List<RelNode> relNodes = new ArrayList<>();
+      List<int[][]> tempLinks = new ArrayList<>();
       populate(relNodes, tempLinks, parsed.root.rel);
 
       // Get aliases.
-      List<String> aliases = Lists.newArrayList();
+      List<String> aliases = new ArrayList<>();
       populateAliases(((SqlSelect) parsed.sqlNode).getFrom(), aliases, null);
 
       // Build a graph.
@@ -650,7 +620,7 @@ public class Lattice {
       // Convert the graph into a tree of nodes, each connected to a parent and
       // with a join condition to that parent.
       Node previous = null;
-      final Map<RelNode, Node> map = Maps.newIdentityHashMap();
+      final Map<RelNode, Node> map = new IdentityHashMap<>();
       int previousColumn = 0;
       for (RelNode relNode : TopologicalOrderIterator.of(graph)) {
         final List<Edge> edges = graph.getInwardEdges(relNode);
@@ -857,8 +827,8 @@ public class Lattice {
 
     public Tile(ImmutableList<Measure> measures,
         ImmutableList<Column> dimensions) {
-      this.measures = Preconditions.checkNotNull(measures);
-      this.dimensions = Preconditions.checkNotNull(dimensions);
+      this.measures = Objects.requireNonNull(measures);
+      this.dimensions = Objects.requireNonNull(dimensions);
       assert Ordering.natural().isStrictlyOrdered(dimensions);
       assert Ordering.natural().isStrictlyOrdered(measures);
       bitSet = Column.toBitSet(dimensions);
@@ -875,8 +845,8 @@ public class Lattice {
 
   /** Tile builder. */
   public static class TileBuilder {
-    private final List<Measure> measureBuilder = Lists.newArrayList();
-    private final List<Column> dimensionListBuilder = Lists.newArrayList();
+    private final List<Measure> measureBuilder = new ArrayList<>();
+    private final List<Column> dimensionListBuilder = new ArrayList<>();
 
     public Tile build() {
       return new Tile(

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/materialize/LatticeStatisticProvider.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/materialize/LatticeStatisticProvider.java b/core/src/main/java/org/apache/calcite/materialize/LatticeStatisticProvider.java
index d16e903..d191f8b 100644
--- a/core/src/main/java/org/apache/calcite/materialize/LatticeStatisticProvider.java
+++ b/core/src/main/java/org/apache/calcite/materialize/LatticeStatisticProvider.java
@@ -16,9 +16,8 @@
  */
 package org.apache.calcite.materialize;
 
-import com.google.common.base.Function;
-
 import java.util.List;
+import java.util.function.Function;
 
 /**
  * Estimates row counts for a lattice and its attributes.

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/materialize/MaterializationActor.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/materialize/MaterializationActor.java b/core/src/main/java/org/apache/calcite/materialize/MaterializationActor.java
index 4564478..f01b9af 100644
--- a/core/src/main/java/org/apache/calcite/materialize/MaterializationActor.java
+++ b/core/src/main/java/org/apache/calcite/materialize/MaterializationActor.java
@@ -21,9 +21,9 @@ import org.apache.calcite.rel.type.RelDataType;
 
 import com.google.common.base.Preconditions;
 import com.google.common.collect.HashMultimap;
-import com.google.common.collect.Maps;
 import com.google.common.collect.Multimap;
 
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
@@ -35,11 +35,11 @@ class MaterializationActor {
   // Not an actor yet -- TODO make members private and add request/response
   // queues
 
-  final Map<MaterializationKey, Materialization> keyMap = Maps.newHashMap();
+  final Map<MaterializationKey, Materialization> keyMap = new HashMap<>();
 
-  final Map<QueryKey, MaterializationKey> keyBySql = Maps.newHashMap();
+  final Map<QueryKey, MaterializationKey> keyBySql = new HashMap<>();
 
-  final Map<TileKey, MaterializationKey> keyByTile = Maps.newHashMap();
+  final Map<TileKey, MaterializationKey> keyByTile = new HashMap<>();
 
   /** Tiles grouped by dimensionality. We use a
    *  {@link TileKey} with no measures to represent a
@@ -75,7 +75,7 @@ class MaterializationActor {
         RelDataType rowType,
         List<String> viewSchemaPath) {
       this.key = key;
-      this.rootSchema = Preconditions.checkNotNull(rootSchema);
+      this.rootSchema = Objects.requireNonNull(rootSchema);
       Preconditions.checkArgument(rootSchema.isRoot(), "must be root schema");
       this.materializedTable = materializedTable; // may be null
       this.sql = sql;

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/materialize/MaterializationService.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/materialize/MaterializationService.java b/core/src/main/java/org/apache/calcite/materialize/MaterializationService.java
index 39a077f..e013d08 100644
--- a/core/src/main/java/org/apache/calcite/materialize/MaterializationService.java
+++ b/core/src/main/java/org/apache/calcite/materialize/MaterializationService.java
@@ -18,7 +18,6 @@ package org.apache.calcite.materialize;
 
 import org.apache.calcite.DataContext;
 import org.apache.calcite.adapter.clone.CloneSchema;
-import org.apache.calcite.avatica.ColumnMetaData;
 import org.apache.calcite.config.CalciteConnectionProperty;
 import org.apache.calcite.jdbc.CalciteConnection;
 import org.apache.calcite.jdbc.CalciteMetaImpl;
@@ -38,11 +37,9 @@ import org.apache.calcite.util.ImmutableBitSet;
 import org.apache.calcite.util.Pair;
 import org.apache.calcite.util.Util;
 
-import com.google.common.base.Function;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Lists;
-import com.google.common.collect.Sets;
 
 import java.lang.reflect.Type;
 import java.util.ArrayList;
@@ -52,6 +49,7 @@ import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.PriorityQueue;
+import java.util.Set;
 
 /**
  * Manages the collection of materialized tables known to the system,
@@ -63,27 +61,20 @@ public class MaterializationService {
 
   /** For testing. */
   private static final ThreadLocal<MaterializationService> THREAD_INSTANCE =
-      new ThreadLocal<MaterializationService>() {
-        @Override protected MaterializationService initialValue() {
-          return new MaterializationService();
-        }
-      };
+      ThreadLocal.withInitial(MaterializationService::new);
 
   private static final Comparator<Pair<CalciteSchema.TableEntry, TileKey>> C =
-      new Comparator<Pair<CalciteSchema.TableEntry, TileKey>>() {
-        public int compare(Pair<CalciteSchema.TableEntry, TileKey> o0,
-            Pair<CalciteSchema.TableEntry, TileKey> o1) {
-          // We prefer rolling up from the table with the fewest rows.
-          final Table t0 = o0.left.getTable();
-          final Table t1 = o1.left.getTable();
-          int c = Double.compare(t0.getStatistic().getRowCount(),
-              t1.getStatistic().getRowCount());
-          if (c != 0) {
-            return c;
-          }
-          // Tie-break based on table name.
-          return o0.left.name.compareTo(o1.left.name);
+      (o0, o1) -> {
+        // We prefer rolling up from the table with the fewest rows.
+        final Table t0 = o0.left.getTable();
+        final Table t1 = o1.left.getTable();
+        int c = Double.compare(t0.getStatistic().getRowCount(),
+            t1.getStatistic().getRowCount());
+        if (c != 0) {
+          return c;
         }
+        // Tie-break based on table name.
+        return o0.left.name.compareTo(o1.left.name);
       };
 
   private final MaterializationActor actor = new MaterializationActor();
@@ -207,7 +198,7 @@ public class MaterializationService {
     // Step 2. Look for a match of the tile with the same dimensionality and an
     // acceptable list of measures.
     final TileKey tileKey0 =
-        new TileKey(lattice, groupSet, ImmutableList.<Lattice.Measure>of());
+        new TileKey(lattice, groupSet, ImmutableList.of());
     for (TileKey tileKey1 : actor.tilesByDimensionality.get(tileKey0)) {
       assert tileKey1.dimensions.equals(groupSet);
       if (allSatisfiable(measureList, tileKey1)) {
@@ -267,8 +258,8 @@ public class MaterializationService {
     // whether they were current, create a wider tile that contains their
     // measures plus the currently requested measures. Then we can obsolete all
     // other tiles.
-    final List<TileKey> obsolete = Lists.newArrayList();
-    final LinkedHashSet<Lattice.Measure> measureSet = Sets.newLinkedHashSet();
+    final List<TileKey> obsolete = new ArrayList<>();
+    final Set<Lattice.Measure> measureSet = new LinkedHashSet<>();
     for (TileKey tileKey1 : actor.tilesByDimensionality.get(tileKey0)) {
       measureSet.addAll(tileKey1.measures);
       obsolete.add(tileKey1);
@@ -380,12 +371,7 @@ public class MaterializationService {
       return CloneSchema.createCloneTable(connection.getTypeFactory(),
           RelDataTypeImpl.proto(calciteSignature.rowType),
           calciteSignature.getCollationList(),
-          Lists.transform(calciteSignature.columns,
-              new Function<ColumnMetaData, ColumnMetaData.Rep>() {
-                public ColumnMetaData.Rep apply(ColumnMetaData column) {
-                  return column.type.rep;
-                }
-              }),
+          Lists.transform(calciteSignature.columns, column -> column.type.rep),
           new AbstractQueryable<Object>() {
             public Enumerator<Object> enumerator() {
               final DataContext dataContext =

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/materialize/ProfilerLatticeStatisticProvider.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/materialize/ProfilerLatticeStatisticProvider.java b/core/src/main/java/org/apache/calcite/materialize/ProfilerLatticeStatisticProvider.java
index 39e0b29..3653b46 100644
--- a/core/src/main/java/org/apache/calcite/materialize/ProfilerLatticeStatisticProvider.java
+++ b/core/src/main/java/org/apache/calcite/materialize/ProfilerLatticeStatisticProvider.java
@@ -17,7 +17,6 @@
 package org.apache.calcite.materialize;
 
 import org.apache.calcite.linq4j.Enumerable;
-import org.apache.calcite.linq4j.function.Function1;
 import org.apache.calcite.profile.Profiler;
 import org.apache.calcite.profile.ProfilerImpl;
 import org.apache.calcite.rel.metadata.NullSentinel;
@@ -25,73 +24,58 @@ import org.apache.calcite.schema.ScannableTable;
 import org.apache.calcite.schema.Table;
 import org.apache.calcite.util.ImmutableBitSet;
 
-import com.google.common.base.Preconditions;
-import com.google.common.base.Supplier;
 import com.google.common.base.Suppliers;
 import com.google.common.collect.ImmutableList;
 
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Objects;
+import java.util.function.Supplier;
 
 /**
  * Implementation of {@link LatticeStatisticProvider} that uses a
  * {@link org.apache.calcite.profile.Profiler}.
  */
 class ProfilerLatticeStatisticProvider implements LatticeStatisticProvider {
-  static final Factory FACTORY =
-      new Factory() {
-        public LatticeStatisticProvider apply(Lattice lattice) {
-          return new ProfilerLatticeStatisticProvider(lattice);
-        }
-      };
+  static final Factory FACTORY = ProfilerLatticeStatisticProvider::new;
 
-  /** Converts an array of values to a list of {@link Comparable} values,
-   * converting null values to sentinels. */
-  private static final Function1<Object[], List<Comparable>> TO_LIST =
-      new Function1<Object[], List<Comparable>>() {
-        public List<Comparable> apply(Object[] values) {
-          for (int i = 0; i < values.length; i++) {
-            if (values[i] == null) {
-              values[i] = NullSentinel.INSTANCE;
-            }
-          }
-          //noinspection unchecked
-          return (List) Arrays.asList(values);
-        }
-      };
-
-  private final Lattice lattice;
-  private final Supplier<Profiler.Profile> profile =
-      Suppliers.memoize(new Supplier<Profiler.Profile>() {
-        public Profiler.Profile get() {
-          final ProfilerImpl profiler =
-              ProfilerImpl.builder()
-                  .withPassSize(200)
-                  .withMinimumSurprise(0.3D)
-                  .build();
-          final List<Profiler.Column> columns = new ArrayList<>();
-          for (Lattice.Column column : lattice.columns) {
-            columns.add(new Profiler.Column(column.ordinal, column.alias));
-          }
-          final String sql =
-              lattice.sql(ImmutableBitSet.range(lattice.columns.size()),
-                  false, ImmutableList.<Lattice.Measure>of());
-          final Table table =
-              new MaterializationService.DefaultTableFactory()
-                  .createTable(lattice.rootSchema, sql,
-                      ImmutableList.<String>of());
-          final ImmutableList<ImmutableBitSet> initialGroups =
-              ImmutableList.of();
-          final Enumerable<List<Comparable>> rows =
-              ((ScannableTable) table).scan(null).select(TO_LIST);
-          return profiler.profile(rows, columns, initialGroups);
-        }
-      });
+  private final Supplier<Profiler.Profile> profile;
 
   /** Creates a ProfilerLatticeStatisticProvider. */
   private ProfilerLatticeStatisticProvider(Lattice lattice) {
-    this.lattice = Preconditions.checkNotNull(lattice);
+    Objects.requireNonNull(lattice);
+    this.profile = Suppliers.memoize(() -> {
+      final ProfilerImpl profiler =
+          ProfilerImpl.builder()
+              .withPassSize(200)
+              .withMinimumSurprise(0.3D)
+              .build();
+      final List<Profiler.Column> columns = new ArrayList<>();
+      for (Lattice.Column column : lattice.columns) {
+        columns.add(new Profiler.Column(column.ordinal, column.alias));
+      }
+      final String sql =
+          lattice.sql(ImmutableBitSet.range(lattice.columns.size()),
+              false, ImmutableList.of());
+      final Table table =
+          new MaterializationService.DefaultTableFactory()
+              .createTable(lattice.rootSchema, sql, ImmutableList.of());
+      final ImmutableList<ImmutableBitSet> initialGroups =
+          ImmutableList.of();
+      final Enumerable<List<Comparable>> rows =
+          ((ScannableTable) table).scan(null)
+              .select(values -> {
+                for (int i = 0; i < values.length; i++) {
+                  if (values[i] == null) {
+                    values[i] = NullSentinel.INSTANCE;
+                  }
+                }
+                //noinspection unchecked
+                return (List<Comparable>) (List) Arrays.asList(values);
+              });
+      return profiler.profile(rows, columns, initialGroups);
+    })::get;
   }
 
   public double cardinality(List<Lattice.Column> columns) {

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/materialize/SqlLatticeStatisticProvider.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/materialize/SqlLatticeStatisticProvider.java b/core/src/main/java/org/apache/calcite/materialize/SqlLatticeStatisticProvider.java
index 8e5b19d..28d804c 100644
--- a/core/src/main/java/org/apache/calcite/materialize/SqlLatticeStatisticProvider.java
+++ b/core/src/main/java/org/apache/calcite/materialize/SqlLatticeStatisticProvider.java
@@ -20,38 +20,30 @@ import org.apache.calcite.schema.ScannableTable;
 import org.apache.calcite.schema.Table;
 import org.apache.calcite.util.ImmutableBitSet;
 
-import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterables;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * Implementation of {@link LatticeStatisticProvider} that gets statistics by
  * executing "SELECT COUNT(DISTINCT ...) ..." SQL queries.
  */
 class SqlLatticeStatisticProvider implements LatticeStatisticProvider {
-  static final Factory FACTORY =
-      new LatticeStatisticProvider.Factory() {
-        public LatticeStatisticProvider apply(Lattice lattice) {
-          return new SqlLatticeStatisticProvider(lattice);
-        }
-      };
+  static final Factory FACTORY = SqlLatticeStatisticProvider::new;
 
-  static final Factory CACHED_FACTORY =
-      new LatticeStatisticProvider.Factory() {
-        public LatticeStatisticProvider apply(Lattice lattice) {
-          LatticeStatisticProvider provider = FACTORY.apply(lattice);
-          return new CachingLatticeStatisticProvider(lattice, provider);
-        }
-      };
+  static final Factory CACHED_FACTORY = lattice -> {
+    LatticeStatisticProvider provider = FACTORY.apply(lattice);
+    return new CachingLatticeStatisticProvider(lattice, provider);
+  };
 
   private final Lattice lattice;
 
   /** Creates a SqlLatticeStatisticProvider. */
   private SqlLatticeStatisticProvider(Lattice lattice) {
-    this.lattice = Preconditions.checkNotNull(lattice);
+    this.lattice = Objects.requireNonNull(lattice);
   }
 
   public double cardinality(List<Lattice.Column> columns) {
@@ -66,7 +58,7 @@ class SqlLatticeStatisticProvider implements LatticeStatisticProvider {
     final String sql = lattice.countSql(ImmutableBitSet.of(column.ordinal));
     final Table table =
         new MaterializationService.DefaultTableFactory()
-            .createTable(lattice.rootSchema, sql, ImmutableList.<String>of());
+            .createTable(lattice.rootSchema, sql, ImmutableList.of());
     final Object[] values =
         Iterables.getOnlyElement(((ScannableTable) table).scan(null));
     return ((Number) values[0]).doubleValue();

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/materialize/TileSuggester.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/materialize/TileSuggester.java b/core/src/main/java/org/apache/calcite/materialize/TileSuggester.java
index bc98d94..64cf736 100644
--- a/core/src/main/java/org/apache/calcite/materialize/TileSuggester.java
+++ b/core/src/main/java/org/apache/calcite/materialize/TileSuggester.java
@@ -18,10 +18,8 @@ package org.apache.calcite.materialize;
 
 import org.apache.calcite.util.Util;
 
-import com.google.common.base.Function;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Lists;
 
 import org.pentaho.aggdes.algorithm.Algorithm;
 import org.pentaho.aggdes.algorithm.Progress;
@@ -46,13 +44,6 @@ import java.util.List;
  * for a given lattice.
  */
 public class TileSuggester {
-  private static final Function<Attribute, Lattice.Column> TO_COLUMN =
-      new Function<Attribute, Lattice.Column>() {
-        public Lattice.Column apply(Attribute input) {
-          return ((AttributeImpl) input).column;
-        }
-      };
-
   private final Lattice lattice;
 
   public TileSuggester(Lattice lattice) {
@@ -206,7 +197,8 @@ public class TileSuggester {
     }
 
     public double getRowCount(List<Attribute> attributes) {
-      return lattice.getRowCount(Lists.transform(attributes, TO_COLUMN));
+      return lattice.getRowCount(
+          Util.transform(attributes, input -> ((AttributeImpl) input).column));
     }
 
     public double getSpace(List<Attribute> attributes) {

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/plan/AbstractRelOptPlanner.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/plan/AbstractRelOptPlanner.java b/core/src/main/java/org/apache/calcite/plan/AbstractRelOptPlanner.java
index 81a297b..06306d5 100644
--- a/core/src/main/java/org/apache/calcite/plan/AbstractRelOptPlanner.java
+++ b/core/src/main/java/org/apache/calcite/plan/AbstractRelOptPlanner.java
@@ -21,7 +21,6 @@ import org.apache.calcite.rel.RelNode;
 import org.apache.calcite.rel.metadata.RelMetadataProvider;
 import org.apache.calcite.rel.metadata.RelMetadataQuery;
 import org.apache.calcite.rex.RexExecutor;
-import org.apache.calcite.runtime.PredicateImpl;
 import org.apache.calcite.util.CancelFlag;
 
 import com.google.common.collect.ImmutableList;
@@ -38,7 +37,6 @@ import java.util.regex.Pattern;
 
 import static org.apache.calcite.util.Static.RESOURCE;
 
-
 /**
  * Abstract base for implementations of the {@link RelOptPlanner} interface.
  */
@@ -417,12 +415,7 @@ public abstract class AbstractRelOptPlanner implements RelOptPlanner {
   /** Returns sub-classes of relational expression. */
   public Iterable<Class<? extends RelNode>> subClasses(
       final Class<? extends RelNode> clazz) {
-    return Iterables.filter(classes,
-        new PredicateImpl<Class<? extends RelNode>>() {
-          public boolean test(Class<? extends RelNode> input) {
-            return clazz.isAssignableFrom(input);
-          }
-        });
+    return Iterables.filter(classes, clazz::isAssignableFrom);
   }
 }
 

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/plan/Contexts.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/plan/Contexts.java b/core/src/main/java/org/apache/calcite/plan/Contexts.java
index 2aad6b1..adc13da 100644
--- a/core/src/main/java/org/apache/calcite/plan/Contexts.java
+++ b/core/src/main/java/org/apache/calcite/plan/Contexts.java
@@ -18,12 +18,11 @@ package org.apache.calcite.plan;
 
 import org.apache.calcite.config.CalciteConnectionConfig;
 
-import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * Utilities for {@link Context}.
@@ -82,7 +81,7 @@ public class Contexts {
 
   private static Context chain(Iterable<? extends Context> contexts) {
     // Flatten any chain contexts in the list, and remove duplicates
-    final List<Context> list = Lists.newArrayList();
+    final List<Context> list = new ArrayList<>();
     for (Context context : contexts) {
       build(list, context);
     }
@@ -116,7 +115,7 @@ public class Contexts {
     final Object target;
 
     WrapContext(Object target) {
-      this.target = Preconditions.checkNotNull(target);
+      this.target = Objects.requireNonNull(target);
     }
 
     public <T> T unwrap(Class<T> clazz) {
@@ -139,7 +138,7 @@ public class Contexts {
     final ImmutableList<Context> contexts;
 
     ChainContext(ImmutableList<Context> contexts) {
-      this.contexts = Preconditions.checkNotNull(contexts);
+      this.contexts = Objects.requireNonNull(contexts);
       for (Context context : contexts) {
         assert !(context instanceof ChainContext) : "must be flat";
       }

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/plan/ConventionTraitDef.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/plan/ConventionTraitDef.java b/core/src/main/java/org/apache/calcite/plan/ConventionTraitDef.java
index a0b7e37..ff9de80 100644
--- a/core/src/main/java/org/apache/calcite/plan/ConventionTraitDef.java
+++ b/core/src/main/java/org/apache/calcite/plan/ConventionTraitDef.java
@@ -32,7 +32,6 @@ import com.google.common.collect.HashMultimap;
 import com.google.common.collect.Multimap;
 
 import java.util.List;
-import javax.annotation.Nonnull;
 
 /**
  * Definition of the the convention trait.
@@ -59,12 +58,8 @@ public class ConventionTraitDef extends RelTraitDef<Convention> {
    * the planner goes away, so does the cache entry.
    */
   private final LoadingCache<RelOptPlanner, ConversionData> conversionCache =
-      CacheBuilder.newBuilder().weakKeys().build(
-          new CacheLoader<RelOptPlanner, ConversionData>() {
-            public ConversionData load(@Nonnull RelOptPlanner key) {
-              return new ConversionData();
-            }
-          });
+      CacheBuilder.newBuilder().weakKeys()
+          .build(CacheLoader.from(ConversionData::new));
 
   //~ Constructors -----------------------------------------------------------
 

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/plan/RelCompositeTrait.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/plan/RelCompositeTrait.java b/core/src/main/java/org/apache/calcite/plan/RelCompositeTrait.java
index a7d1b00..b2a4ffc 100644
--- a/core/src/main/java/org/apache/calcite/plan/RelCompositeTrait.java
+++ b/core/src/main/java/org/apache/calcite/plan/RelCompositeTrait.java
@@ -16,12 +16,12 @@
  */
 package org.apache.calcite.plan;
 
-import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Ordering;
 
 import java.util.Arrays;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * A trait that consists of a list of traits, all of the same type.
@@ -40,7 +40,7 @@ class RelCompositeTrait<T extends RelMultipleTrait> implements RelTrait {
   // Must remain private. Does not copy the array.
   private RelCompositeTrait(RelTraitDef traitDef, T[] traits) {
     this.traitDef = traitDef;
-    this.traits = Preconditions.checkNotNull(traits);
+    this.traits = Objects.requireNonNull(traits);
     //noinspection unchecked
     assert Ordering.natural()
         .isStrictlyOrdered(Arrays.asList((Comparable[]) traits))
@@ -59,7 +59,7 @@ class RelCompositeTrait<T extends RelMultipleTrait> implements RelTrait {
       compositeTrait = new EmptyCompositeTrait<T>(def);
     } else {
       final RelMultipleTrait[] traits =
-          traitList.toArray(new RelMultipleTrait[traitList.size()]);
+          traitList.toArray(new RelMultipleTrait[0]);
       for (int i = 0; i < traits.length; i++) {
         traits[i] = (T) def.canonize(traits[i]);
       }

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/plan/RelOptCluster.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/plan/RelOptCluster.java b/core/src/main/java/org/apache/calcite/plan/RelOptCluster.java
index bce405c..c853eb8 100644
--- a/core/src/main/java/org/apache/calcite/plan/RelOptCluster.java
+++ b/core/src/main/java/org/apache/calcite/plan/RelOptCluster.java
@@ -27,10 +27,9 @@ import org.apache.calcite.rel.type.RelDataTypeFactory;
 import org.apache.calcite.rex.RexBuilder;
 import org.apache.calcite.rex.RexNode;
 
-import com.google.common.base.Preconditions;
-
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Objects;
 import java.util.concurrent.atomic.AtomicInteger;
 
 /**
@@ -76,8 +75,8 @@ public class RelOptCluster {
       Map<String, RelNode> mapCorrelToRel) {
     this.nextCorrel = nextCorrel;
     this.mapCorrelToRel = mapCorrelToRel;
-    this.planner = Preconditions.checkNotNull(planner);
-    this.typeFactory = Preconditions.checkNotNull(typeFactory);
+    this.planner = Objects.requireNonNull(planner);
+    this.typeFactory = Objects.requireNonNull(typeFactory);
     this.rexBuilder = rexBuilder;
     this.originalExpression = rexBuilder.makeLiteral("?");