You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by mm...@apache.org on 2018/07/20 17:41:29 UTC

[16/53] [abbrv] 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/rel/rules/ProjectFilterTransposeRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/ProjectFilterTransposeRule.java b/core/src/main/java/org/apache/calcite/rel/rules/ProjectFilterTransposeRule.java
index f468f9c..dd1c0c9 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/ProjectFilterTransposeRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/ProjectFilterTransposeRule.java
@@ -34,9 +34,9 @@ import org.apache.calcite.tools.RelBuilderFactory;
  * past a {@link org.apache.calcite.rel.core.Filter}.
  */
 public class ProjectFilterTransposeRule extends RelOptRule {
-  public static final ProjectFilterTransposeRule INSTANCE = new ProjectFilterTransposeRule(
-      LogicalProject.class, LogicalFilter.class, RelFactories.LOGICAL_BUILDER,
-      PushProjector.ExprCondition.FALSE);
+  public static final ProjectFilterTransposeRule INSTANCE =
+      new ProjectFilterTransposeRule(LogicalProject.class, LogicalFilter.class,
+          RelFactories.LOGICAL_BUILDER, expr -> false);
 
   //~ Instance fields --------------------------------------------------------
 

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/rules/ProjectJoinTransposeRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/ProjectJoinTransposeRule.java b/core/src/main/java/org/apache/calcite/rel/rules/ProjectJoinTransposeRule.java
index 2983703..34dee11 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/ProjectJoinTransposeRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/ProjectJoinTransposeRule.java
@@ -38,8 +38,7 @@ import java.util.List;
  */
 public class ProjectJoinTransposeRule extends RelOptRule {
   public static final ProjectJoinTransposeRule INSTANCE =
-      new ProjectJoinTransposeRule(
-          PushProjector.ExprCondition.TRUE,
+      new ProjectJoinTransposeRule(expr -> true,
           RelFactories.LOGICAL_BUILDER);
 
   //~ Instance fields --------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/rules/ProjectRemoveRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/ProjectRemoveRule.java b/core/src/main/java/org/apache/calcite/rel/rules/ProjectRemoveRule.java
index cc773fb..515b779 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/ProjectRemoveRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/ProjectRemoveRule.java
@@ -24,11 +24,8 @@ import org.apache.calcite.rel.core.RelFactories;
 import org.apache.calcite.rel.type.RelDataType;
 import org.apache.calcite.rex.RexNode;
 import org.apache.calcite.rex.RexUtil;
-import org.apache.calcite.runtime.PredicateImpl;
 import org.apache.calcite.tools.RelBuilderFactory;
 
-import com.google.common.base.Predicate;
-
 import java.util.List;
 
 /**
@@ -43,14 +40,6 @@ import java.util.List;
  * @see ProjectMergeRule
  */
 public class ProjectRemoveRule extends RelOptRule {
-  //~ Static fields/initializers ---------------------------------------------
-  private static final Predicate<Project> PREDICATE =
-      new PredicateImpl<Project>() {
-        public boolean test(Project input) {
-          return isTrivial(input);
-        }
-      };
-
   public static final ProjectRemoveRule INSTANCE =
       new ProjectRemoveRule(RelFactories.LOGICAL_BUILDER);
 
@@ -64,8 +53,8 @@ public class ProjectRemoveRule extends RelOptRule {
   public ProjectRemoveRule(RelBuilderFactory relBuilderFactory) {
     // Create a specialized operand to detect non-matches early. This keeps
     // the rule queue short.
-    super(operand(Project.class, null, PREDICATE, any()), relBuilderFactory,
-        null);
+    super(operandJ(Project.class, null, ProjectRemoveRule::isTrivial, any()),
+        relBuilderFactory, null);
   }
 
   //~ Methods ----------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/rules/ProjectSetOpTransposeRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/ProjectSetOpTransposeRule.java b/core/src/main/java/org/apache/calcite/rel/rules/ProjectSetOpTransposeRule.java
index 48fb027..6190556 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/ProjectSetOpTransposeRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/ProjectSetOpTransposeRule.java
@@ -40,8 +40,8 @@ import java.util.List;
  */
 public class ProjectSetOpTransposeRule extends RelOptRule {
   public static final ProjectSetOpTransposeRule INSTANCE =
-      new ProjectSetOpTransposeRule(
-          PushProjector.ExprCondition.FALSE, RelFactories.LOGICAL_BUILDER);
+      new ProjectSetOpTransposeRule(expr -> false,
+          RelFactories.LOGICAL_BUILDER);
 
   //~ Instance fields --------------------------------------------------------
 

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/rules/ProjectTableScanRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/ProjectTableScanRule.java b/core/src/main/java/org/apache/calcite/rel/rules/ProjectTableScanRule.java
index bd4b5fe..777aa19 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/ProjectTableScanRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/ProjectTableScanRule.java
@@ -26,14 +26,12 @@ import org.apache.calcite.rel.core.Project;
 import org.apache.calcite.rel.core.RelFactories;
 import org.apache.calcite.rel.core.TableScan;
 import org.apache.calcite.rex.RexNode;
-import org.apache.calcite.runtime.PredicateImpl;
 import org.apache.calcite.schema.ProjectableFilterableTable;
 import org.apache.calcite.tools.RelBuilderFactory;
 import org.apache.calcite.util.ImmutableIntList;
 import org.apache.calcite.util.mapping.Mapping;
 import org.apache.calcite.util.mapping.Mappings;
 
-import com.google.common.base.Predicate;
 import com.google.common.collect.ImmutableList;
 
 import java.util.List;
@@ -50,20 +48,17 @@ import java.util.List;
  * @see FilterTableScanRule
  */
 public abstract class ProjectTableScanRule extends RelOptRule {
-  public static final Predicate<TableScan> PREDICATE =
-      new PredicateImpl<TableScan>() {
-        public boolean test(TableScan scan) {
-          // We can only push projects into a ProjectableFilterableTable.
-          final RelOptTable table = scan.getTable();
-          return table.unwrap(ProjectableFilterableTable.class) != null;
-        }
-      };
+  @SuppressWarnings("Guava")
+  @Deprecated // to be removed before 2.0
+  public static final com.google.common.base.Predicate<TableScan> PREDICATE =
+      ProjectTableScanRule::test;
 
   /** Rule that matches Project on TableScan. */
   public static final ProjectTableScanRule INSTANCE =
       new ProjectTableScanRule(
           operand(Project.class,
-              operand(TableScan.class, null, PREDICATE, none())),
+              operandJ(TableScan.class, null, ProjectTableScanRule::test,
+                  none())),
           RelFactories.LOGICAL_BUILDER,
           "ProjectScanRule") {
         @Override public void onMatch(RelOptRuleCall call) {
@@ -78,7 +73,8 @@ public abstract class ProjectTableScanRule extends RelOptRule {
       new ProjectTableScanRule(
           operand(Project.class,
               operand(EnumerableInterpreter.class,
-                  operand(TableScan.class, null, PREDICATE, none()))),
+                  operandJ(TableScan.class, null, ProjectTableScanRule::test,
+                      none()))),
           RelFactories.LOGICAL_BUILDER,
           "ProjectScanRule:interpreter") {
         @Override public void onMatch(RelOptRuleCall call) {
@@ -98,6 +94,12 @@ public abstract class ProjectTableScanRule extends RelOptRule {
 
   //~ Methods ----------------------------------------------------------------
 
+  protected static boolean test(TableScan scan) {
+    // We can only push projects into a ProjectableFilterableTable.
+    final RelOptTable table = scan.getTable();
+    return table.unwrap(ProjectableFilterableTable.class) != null;
+  }
+
   protected void apply(RelOptRuleCall call, Project project, TableScan scan) {
     final RelOptTable table = scan.getTable();
     assert table.unwrap(ProjectableFilterableTable.class) != null;

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/rules/ProjectToWindowRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/ProjectToWindowRule.java b/core/src/main/java/org/apache/calcite/rel/rules/ProjectToWindowRule.java
index 4b7a4dc..b85fd44 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/ProjectToWindowRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/ProjectToWindowRule.java
@@ -38,7 +38,6 @@ import org.apache.calcite.rex.RexOver;
 import org.apache.calcite.rex.RexProgram;
 import org.apache.calcite.rex.RexVisitorImpl;
 import org.apache.calcite.rex.RexWindow;
-import org.apache.calcite.runtime.PredicateImpl;
 import org.apache.calcite.tools.RelBuilder;
 import org.apache.calcite.tools.RelBuilderFactory;
 import org.apache.calcite.util.ImmutableIntList;
@@ -48,11 +47,9 @@ import org.apache.calcite.util.graph.DefaultEdge;
 import org.apache.calcite.util.graph.DirectedGraph;
 import org.apache.calcite.util.graph.TopologicalOrderIterator;
 
-import com.google.common.base.Function;
 import com.google.common.base.Preconditions;
-import com.google.common.base.Predicate;
+import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
-import com.google.common.collect.Sets;
 
 import java.util.ArrayDeque;
 import java.util.ArrayList;
@@ -78,20 +75,6 @@ import java.util.Set;
 public abstract class ProjectToWindowRule extends RelOptRule {
   //~ Static fields/initializers ---------------------------------------------
 
-  private static final Predicate<Calc> PREDICATE =
-      new PredicateImpl<Calc>() {
-        public boolean test(Calc calc) {
-          return RexOver.containsOver(calc.getProgram());
-        }
-      };
-
-  private static final Predicate<Project> PREDICATE2 =
-      new PredicateImpl<Project>() {
-        public boolean test(Project project) {
-          return RexOver.containsOver(project.getProjects(), null);
-        }
-      };
-
   public static final ProjectToWindowRule INSTANCE =
       new CalcToWindowRule(RelFactories.LOGICAL_BUILDER);
 
@@ -129,7 +112,8 @@ public abstract class ProjectToWindowRule extends RelOptRule {
      */
     public CalcToWindowRule(RelBuilderFactory relBuilderFactory) {
       super(
-          operand(Calc.class, null, PREDICATE, any()),
+          operandJ(Calc.class, null,
+              calc -> RexOver.containsOver(calc.getProgram()), any()),
           relBuilderFactory, "ProjectToWindowRule");
     }
 
@@ -158,7 +142,10 @@ public abstract class ProjectToWindowRule extends RelOptRule {
      */
     public ProjectToLogicalProjectAndWindowRule(
         RelBuilderFactory relBuilderFactory) {
-      super(operand(Project.class, null, PREDICATE2, any()),
+      super(
+          operandJ(Project.class, null,
+              project -> RexOver.containsOver(project.getProjects(), null),
+              any()),
           relBuilderFactory, "ProjectToWindowRule:project");
     }
 
@@ -191,11 +178,7 @@ public abstract class ProjectToWindowRule extends RelOptRule {
           if (!program.projectsOnlyIdentity()) {
             relBuilder.project(
                 Lists.transform(program.getProjectList(),
-                    new Function<RexLocalRef, RexNode>() {
-                      public RexNode apply(RexLocalRef a0) {
-                        return program.expandLocalRef(a0);
-                      }
-                    }),
+                    program::expandLocalRef),
                 calc.getRowType().getFieldNames());
           }
           return relBuilder.build();
@@ -314,7 +297,7 @@ public abstract class ProjectToWindowRule extends RelOptRule {
 
           // This RexOver cannot be added into any existing cohort
           if (!isFound) {
-            final Set<Integer> newSet = Sets.newHashSet(i);
+            final Set<Integer> newSet = new HashSet<>(ImmutableList.of(i));
             windowToIndices.add(Pair.of(over.getWindow(), newSet));
           }
         }

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/rules/PruneEmptyRules.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/PruneEmptyRules.java b/core/src/main/java/org/apache/calcite/rel/rules/PruneEmptyRules.java
index f6a89ad..1cc48b5 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/PruneEmptyRules.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/PruneEmptyRules.java
@@ -37,15 +37,14 @@ import org.apache.calcite.rex.RexLiteral;
 import org.apache.calcite.tools.RelBuilder;
 import org.apache.calcite.tools.RelBuilderFactory;
 
-import com.google.common.base.Predicate;
-import com.google.common.base.Predicates;
-
 import java.util.ArrayList;
 import java.util.List;
+import java.util.function.Predicate;
 
 import static org.apache.calcite.plan.RelOptRule.any;
 import static org.apache.calcite.plan.RelOptRule.none;
 import static org.apache.calcite.plan.RelOptRule.operand;
+import static org.apache.calcite.plan.RelOptRule.operandJ;
 import static org.apache.calcite.plan.RelOptRule.some;
 import static org.apache.calcite.plan.RelOptRule.unordered;
 
@@ -76,7 +75,7 @@ public abstract class PruneEmptyRules {
   public static final RelOptRule UNION_INSTANCE =
       new RelOptRule(
           operand(LogicalUnion.class,
-              unordered(operand(Values.class, null, Values.IS_EMPTY, none()))),
+              unordered(operandJ(Values.class, null, Values::isEmpty, none()))),
           "Union") {
         public void onMatch(RelOptRuleCall call) {
           final LogicalUnion union = call.rel(0);
@@ -124,7 +123,8 @@ public abstract class PruneEmptyRules {
   public static final RelOptRule MINUS_INSTANCE =
       new RelOptRule(
           operand(LogicalMinus.class,
-              unordered(operand(Values.class, null, Values.IS_EMPTY, none()))),
+              unordered(
+                  operandJ(Values.class, null, Values::isEmpty, none()))),
           "Minus") {
         public void onMatch(RelOptRuleCall call) {
           final LogicalMinus minus = call.rel(0);
@@ -177,7 +177,8 @@ public abstract class PruneEmptyRules {
   public static final RelOptRule INTERSECT_INSTANCE =
       new RelOptRule(
           operand(LogicalIntersect.class,
-              unordered(operand(Values.class, null, Values.IS_EMPTY, none()))),
+              unordered(
+                  operandJ(Values.class, null, Values::isEmpty, none()))),
           "Intersect") {
         public void onMatch(RelOptRuleCall call) {
           LogicalIntersect intersect = call.rel(0);
@@ -203,8 +204,9 @@ public abstract class PruneEmptyRules {
    * </ul>
    */
   public static final RelOptRule PROJECT_INSTANCE =
-      new RemoveEmptySingleRule(Project.class, Predicates.<Project>alwaysTrue(),
-          RelFactories.LOGICAL_BUILDER, "PruneEmptyProject");
+      new RemoveEmptySingleRule(Project.class,
+          (Predicate<Project>) project -> true, RelFactories.LOGICAL_BUILDER,
+          "PruneEmptyProject");
 
   /**
    * Rule that converts a {@link org.apache.calcite.rel.logical.LogicalFilter}
@@ -271,7 +273,8 @@ public abstract class PruneEmptyRules {
    * @see AggregateValuesRule
    */
   public static final RelOptRule AGGREGATE_INSTANCE =
-      new RemoveEmptySingleRule(Aggregate.class, Aggregate.IS_NOT_GRAND_TOTAL,
+      new RemoveEmptySingleRule(Aggregate.class,
+          (Predicate<Aggregate>) Aggregate::isNotGrandTotal,
           RelFactories.LOGICAL_BUILDER, "PruneEmptyAggregate");
 
   /**
@@ -288,7 +291,7 @@ public abstract class PruneEmptyRules {
       new RelOptRule(
           operand(Join.class,
               some(
-                  operand(Values.class, null, Values.IS_EMPTY, none()),
+                  operandJ(Values.class, null, Values::isEmpty, none()),
                   operand(RelNode.class, any()))),
               "PruneEmptyJoin(left)") {
         @Override public void onMatch(RelOptRuleCall call) {
@@ -317,7 +320,7 @@ public abstract class PruneEmptyRules {
           operand(Join.class,
               some(
                   operand(RelNode.class, any()),
-                  operand(Values.class, null, Values.IS_EMPTY, none()))),
+                  operandJ(Values.class, null, Values::isEmpty, none()))),
               "PruneEmptyJoin(right)") {
         @Override public void onMatch(RelOptRuleCall call) {
           Join join = call.rel(0);
@@ -333,10 +336,10 @@ public abstract class PruneEmptyRules {
   /** Planner rule that converts a single-rel (e.g. project, sort, aggregate or
    * filter) on top of the empty relational expression into empty. */
   public static class RemoveEmptySingleRule extends RelOptRule {
-    /** Creatse a simple RemoveEmptySingleRule. */
+    /** Creates a simple RemoveEmptySingleRule. */
     public <R extends SingleRel> RemoveEmptySingleRule(Class<R> clazz,
         String description) {
-      this(clazz, Predicates.<R>alwaysTrue(), RelFactories.LOGICAL_BUILDER,
+      this(clazz, (Predicate<R>) project -> true, RelFactories.LOGICAL_BUILDER,
           description);
     }
 
@@ -345,11 +348,20 @@ public abstract class PruneEmptyRules {
         Predicate<R> predicate, RelBuilderFactory relBuilderFactory,
         String description) {
       super(
-          operand(clazz, null, predicate,
-              operand(Values.class, null, Values.IS_EMPTY, none())),
+          operandJ(clazz, null, predicate,
+              operandJ(Values.class, null, Values::isEmpty, none())),
           relBuilderFactory, description);
     }
 
+    @SuppressWarnings("Guava")
+    @Deprecated // to be removed before 2.0
+    public <R extends SingleRel> RemoveEmptySingleRule(Class<R> clazz,
+        com.google.common.base.Predicate<R> predicate,
+        RelBuilderFactory relBuilderFactory, String description) {
+      this(clazz, (Predicate<R>) predicate::apply, relBuilderFactory,
+          description);
+    }
+
     public void onMatch(RelOptRuleCall call) {
       SingleRel single = call.rel(0);
       call.transformTo(call.builder().push(single).empty().build());

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/rules/PushProjector.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/PushProjector.java b/core/src/main/java/org/apache/calcite/rel/rules/PushProjector.java
index 60a9663..22b8d63 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/PushProjector.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/PushProjector.java
@@ -32,7 +32,6 @@ import org.apache.calcite.rex.RexInputRef;
 import org.apache.calcite.rex.RexNode;
 import org.apache.calcite.rex.RexUtil;
 import org.apache.calcite.rex.RexVisitorImpl;
-import org.apache.calcite.runtime.PredicateImpl;
 import org.apache.calcite.sql.SemiJoinType;
 import org.apache.calcite.sql.SqlOperator;
 import org.apache.calcite.tools.RelBuilder;
@@ -40,16 +39,15 @@ import org.apache.calcite.util.BitSets;
 import org.apache.calcite.util.ImmutableBitSet;
 import org.apache.calcite.util.Pair;
 
-import com.google.common.base.Preconditions;
-import com.google.common.base.Predicate;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Lists;
 
 import java.util.ArrayList;
 import java.util.BitSet;
 import java.util.List;
+import java.util.Objects;
 import java.util.Set;
+import java.util.function.Predicate;
 
 /**
  * PushProjector is a utility class used to perform operations used in push
@@ -212,7 +210,7 @@ public class PushProjector {
     this.origFilter = origFilter;
     this.childRel = childRel;
     this.preserveExprCondition = preserveExprCondition;
-    this.relBuilder = Preconditions.checkNotNull(relBuilder);
+    this.relBuilder = Objects.requireNonNull(relBuilder);
     if (origProj == null) {
       origProjExprs = ImmutableList.of();
     } else {
@@ -615,7 +613,7 @@ public class PushProjector {
    * @return the created projection
    */
   public RelNode createNewProject(RelNode projChild, int[] adjustments) {
-    final List<Pair<RexNode, String>> projects = Lists.newArrayList();
+    final List<Pair<RexNode, String>> projects = new ArrayList<>();
 
     if (origProj != null) {
       for (Pair<RexNode, String> p : origProj.getNamedProjects()) {
@@ -850,34 +848,19 @@ public class PushProjector {
     /**
      * Constant condition that replies {@code false} for all expressions.
      */
-    ExprCondition FALSE =
-        new ExprConditionImpl() {
-          @Override public boolean test(RexNode expr) {
-            return false;
-          }
-        };
+    ExprCondition FALSE = expr -> false;
 
     /**
      * Constant condition that replies {@code true} for all expressions.
      */
-    ExprCondition TRUE =
-        new ExprConditionImpl() {
-          @Override public boolean test(RexNode expr) {
-            return true;
-          }
-        };
-  }
-
-  /** Implementation of {@link ExprCondition}. */
-  abstract static class ExprConditionImpl extends PredicateImpl<RexNode>
-      implements ExprCondition {
+    ExprCondition TRUE = expr -> true;
   }
 
   /**
    * An expression condition that evaluates to true if the expression is
    * a call to one of a set of operators.
    */
-  class OperatorExprCondition extends ExprConditionImpl {
+  class OperatorExprCondition implements ExprCondition {
     private final Set<SqlOperator> operatorSet;
 
     /**

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/rules/ReduceExpressionsRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/ReduceExpressionsRule.java b/core/src/main/java/org/apache/calcite/rel/rules/ReduceExpressionsRule.java
index 296cf35..a3ae9d9 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/ReduceExpressionsRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/ReduceExpressionsRule.java
@@ -377,7 +377,7 @@ public abstract class ReduceExpressionsRule extends RelOptRule {
       final List<RexNode> exprList = program.getExprList();
 
       // Form a list of expressions with sub-expressions fully expanded.
-      final List<RexNode> expandedExprList = Lists.newArrayList();
+      final List<RexNode> expandedExprList = new ArrayList<>();
       final RexShuttle shuttle =
           new RexShuttle() {
             public RexNode visitLocalRef(RexLocalRef localRef) {
@@ -394,7 +394,7 @@ public abstract class ReduceExpressionsRule extends RelOptRule {
             new RexProgramBuilder(
                 calc.getInput().getRowType(),
                 calc.getCluster().getRexBuilder());
-        final List<RexLocalRef> list = Lists.newArrayList();
+        final List<RexLocalRef> list = new ArrayList<>();
         for (RexNode expr : expandedExprList) {
           list.add(builder.registerInput(expr));
         }
@@ -563,9 +563,9 @@ public abstract class ReduceExpressionsRule extends RelOptRule {
     changed |= new CaseShuttle().mutate(expList);
 
     // Find reducible expressions.
-    final List<RexNode> constExps = Lists.newArrayList();
-    List<Boolean> addCasts = Lists.newArrayList();
-    final List<RexNode> removableCasts = Lists.newArrayList();
+    final List<RexNode> constExps = new ArrayList<>();
+    List<Boolean> addCasts = new ArrayList<>();
+    final List<RexNode> removableCasts = new ArrayList<>();
     findReducibleExps(rel.getCluster().getTypeFactory(), expList,
         predicates.constantMap, constExps, addCasts, removableCasts);
     if (constExps.isEmpty() && removableCasts.isEmpty()) {
@@ -577,7 +577,7 @@ public abstract class ReduceExpressionsRule extends RelOptRule {
     // reducing that argument to a constant first will result in not being
     // able to locate the original cast expression.
     if (!removableCasts.isEmpty()) {
-      final List<RexNode> reducedExprs = Lists.newArrayList();
+      final List<RexNode> reducedExprs = new ArrayList<>();
       for (RexNode exp : removableCasts) {
         RexCall call = (RexCall) exp;
         reducedExprs.add(call.getOperands().get(0));
@@ -616,7 +616,7 @@ public abstract class ReduceExpressionsRule extends RelOptRule {
       return changed;
     }
 
-    final List<RexNode> reducedValues = Lists.newArrayList();
+    final List<RexNode> reducedValues = new ArrayList<>();
     executor.reduce(simplify.rexBuilder, constExps2, reducedValues);
 
     // Use RexNode.digest to judge whether each newly generated RexNode

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/rules/SemiJoinRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/SemiJoinRule.java b/core/src/main/java/org/apache/calcite/rel/rules/SemiJoinRule.java
index 39db46d..c236015 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/SemiJoinRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/SemiJoinRule.java
@@ -28,16 +28,14 @@ import org.apache.calcite.rel.core.Project;
 import org.apache.calcite.rel.core.RelFactories;
 import org.apache.calcite.rex.RexBuilder;
 import org.apache.calcite.rex.RexNode;
-import org.apache.calcite.runtime.PredicateImpl;
 import org.apache.calcite.tools.RelBuilder;
 import org.apache.calcite.tools.RelBuilderFactory;
 import org.apache.calcite.util.ImmutableBitSet;
 import org.apache.calcite.util.ImmutableIntList;
 
-import com.google.common.base.Predicate;
-import com.google.common.collect.Lists;
-
+import java.util.ArrayList;
 import java.util.List;
+import java.util.function.Predicate;
 
 /**
  * Planner rule that creates a {@code SemiJoinRule} from a
@@ -46,25 +44,19 @@ import java.util.List;
  */
 public abstract class SemiJoinRule extends RelOptRule {
   private static final Predicate<Join> IS_LEFT_OR_INNER =
-      new PredicateImpl<Join>() {
-        public boolean test(Join input) {
-          switch (input.getJoinType()) {
-          case LEFT:
-          case INNER:
-            return true;
-          default:
-            return false;
-          }
+      join -> {
+        switch (join.getJoinType()) {
+        case LEFT:
+        case INNER:
+          return true;
+        default:
+          return false;
         }
       };
 
   /* Tests if an Aggregate always produces 1 row and 0 columns. */
   private static final Predicate<Aggregate> IS_EMPTY_AGGREGATE =
-      new PredicateImpl<Aggregate>() {
-        public boolean test(Aggregate input) {
-          return input.getRowType().getFieldCount() == 0;
-        }
-      };
+      aggregate -> aggregate.getRowType().getFieldCount() == 0;
 
   public static final SemiJoinRule PROJECT =
       new ProjectToSemiJoinRule(Project.class, Join.class, Aggregate.class,
@@ -80,7 +72,7 @@ public abstract class SemiJoinRule extends RelOptRule {
     super(
         operand(projectClass,
             some(
-                operand(joinClass, null, IS_LEFT_OR_INNER,
+                operandJ(joinClass, null, IS_LEFT_OR_INNER,
                     some(operand(RelNode.class, any()),
                         operand(aggregateClass, any()))))),
         relBuilderFactory, description);
@@ -89,9 +81,9 @@ public abstract class SemiJoinRule extends RelOptRule {
   protected SemiJoinRule(Class<Join> joinClass, Class<Aggregate> aggregateClass,
       RelBuilderFactory relBuilderFactory, String description) {
     super(
-        operand(joinClass, null, IS_LEFT_OR_INNER,
+        operandJ(joinClass, null, IS_LEFT_OR_INNER,
             some(operand(RelNode.class, any()),
-                operand(aggregateClass, null, IS_EMPTY_AGGREGATE, any()))),
+                operandJ(aggregateClass, null, IS_EMPTY_AGGREGATE, any()))),
         relBuilderFactory, description);
   }
 
@@ -123,7 +115,7 @@ public abstract class SemiJoinRule extends RelOptRule {
     relBuilder.push(left);
     switch (join.getJoinType()) {
     case INNER:
-      final List<Integer> newRightKeyBuilder = Lists.newArrayList();
+      final List<Integer> newRightKeyBuilder = new ArrayList<>();
       final List<Integer> aggregateKeys = aggregate.getGroupSet().asList();
       for (int key : joinInfo.rightKeys) {
         newRightKeyBuilder.add(aggregateKeys.get(key));

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/rules/SortJoinTransposeRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/SortJoinTransposeRule.java b/core/src/main/java/org/apache/calcite/rel/rules/SortJoinTransposeRule.java
index 04fbb6d..6a1c76b 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/SortJoinTransposeRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/SortJoinTransposeRule.java
@@ -34,7 +34,6 @@ import org.apache.calcite.rel.metadata.RelMdUtil;
 import org.apache.calcite.rel.metadata.RelMetadataQuery;
 import org.apache.calcite.tools.RelBuilderFactory;
 
-
 /**
  * Planner rule that pushes a {@link org.apache.calcite.rel.core.Sort} past a
  * {@link org.apache.calcite.rel.core.Join}.

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/rules/SortProjectTransposeRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/SortProjectTransposeRule.java b/core/src/main/java/org/apache/calcite/rel/rules/SortProjectTransposeRule.java
index 19cde5f..8bdcdd2 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/SortProjectTransposeRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/SortProjectTransposeRule.java
@@ -140,7 +140,7 @@ public class SortProjectTransposeRule extends RelOptRule {
     RelNode newProject =
         project.copy(
             sort.getTraitSet(),
-            ImmutableList.<RelNode>of(newSort));
+            ImmutableList.of(newSort));
     // Not only is newProject equivalent to sort;
     // newSort is equivalent to project's input
     // (but only if the sort is not also applying an offset/limit).

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/rules/SubQueryRemoveRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/SubQueryRemoveRule.java b/core/src/main/java/org/apache/calcite/rel/rules/SubQueryRemoveRule.java
index 628219f..974c57d 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/SubQueryRemoveRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/SubQueryRemoveRule.java
@@ -497,8 +497,9 @@ public abstract class SubQueryRemoveRule extends RelOptRule {
   public static class SubQueryProjectRemoveRule extends SubQueryRemoveRule {
     public SubQueryProjectRemoveRule(RelBuilderFactory relBuilderFactory) {
       super(
-          operand(Project.class, null, RexUtil.SubQueryFinder.PROJECT_PREDICATE,
-              any()), relBuilderFactory, "SubQueryRemoveRule:Project");
+          operandJ(Project.class, null,
+              RexUtil.SubQueryFinder::containsSubQuery, any()),
+          relBuilderFactory, "SubQueryRemoveRule:Project");
     }
 
     public void onMatch(RelOptRuleCall call) {
@@ -526,7 +527,7 @@ public abstract class SubQueryRemoveRule extends RelOptRule {
   public static class SubQueryFilterRemoveRule extends SubQueryRemoveRule {
     public SubQueryFilterRemoveRule(RelBuilderFactory relBuilderFactory) {
       super(
-          operand(Filter.class, null, RexUtil.SubQueryFinder.FILTER_PREDICATE,
+          operandJ(Filter.class, null, RexUtil.SubQueryFinder::containsSubQuery,
               any()), relBuilderFactory, "SubQueryRemoveRule:Filter");
     }
 
@@ -563,7 +564,7 @@ public abstract class SubQueryRemoveRule extends RelOptRule {
   public static class SubQueryJoinRemoveRule extends SubQueryRemoveRule {
     public SubQueryJoinRemoveRule(RelBuilderFactory relBuilderFactory) {
       super(
-          operand(Join.class, null, RexUtil.SubQueryFinder.JOIN_PREDICATE,
+          operandJ(Join.class, null, RexUtil.SubQueryFinder::containsSubQuery,
               any()), relBuilderFactory, "SubQueryRemoveRule:Join");
     }
 

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/rules/UnionPullUpConstantsRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/UnionPullUpConstantsRule.java b/core/src/main/java/org/apache/calcite/rel/rules/UnionPullUpConstantsRule.java
index 9fb0426..b7cfab3 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/UnionPullUpConstantsRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/UnionPullUpConstantsRule.java
@@ -118,7 +118,7 @@ public class UnionPullUpConstantsRule extends RelOptRule {
       List<Pair<RexNode, String>> newChildExprs = new ArrayList<>();
       for (int j : refsIndex) {
         newChildExprs.add(
-            Pair.<RexNode, String>of(rexBuilder.makeInputRef(input, j),
+            Pair.of(rexBuilder.makeInputRef(input, j),
                 input.getRowType().getFieldList().get(j).getName()));
       }
       if (newChildExprs.isEmpty()) {

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/rules/ValuesReduceRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/ValuesReduceRule.java b/core/src/main/java/org/apache/calcite/rel/rules/ValuesReduceRule.java
index b8b02c6..3774430 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/ValuesReduceRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/ValuesReduceRule.java
@@ -75,7 +75,7 @@ public abstract class ValuesReduceRule extends RelOptRule {
   public static final ValuesReduceRule FILTER_INSTANCE =
       new ValuesReduceRule(
           operand(LogicalFilter.class,
-              operand(LogicalValues.class, null, Values.IS_NOT_EMPTY, none())),
+              operandJ(LogicalValues.class, null, Values::isNotEmpty, none())),
           RelFactories.LOGICAL_BUILDER,
           "ValuesReduceRule(Filter)") {
         public void onMatch(RelOptRuleCall call) {
@@ -92,7 +92,7 @@ public abstract class ValuesReduceRule extends RelOptRule {
   public static final ValuesReduceRule PROJECT_INSTANCE =
       new ValuesReduceRule(
           operand(LogicalProject.class,
-              operand(LogicalValues.class, null, Values.IS_NOT_EMPTY, none())),
+              operandJ(LogicalValues.class, null, Values::isNotEmpty, none())),
           RelFactories.LOGICAL_BUILDER,
           "ValuesReduceRule(Project)") {
         public void onMatch(RelOptRuleCall call) {
@@ -110,7 +110,7 @@ public abstract class ValuesReduceRule extends RelOptRule {
       new ValuesReduceRule(
           operand(LogicalProject.class,
               operand(LogicalFilter.class,
-                  operand(LogicalValues.class, null, Values.IS_NOT_EMPTY,
+                  operandJ(LogicalValues.class, null, Values::isNotEmpty,
                       none()))),
           RelFactories.LOGICAL_BUILDER,
           "ValuesReduceRule(Project-Filter)") {

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/stream/StreamRules.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/stream/StreamRules.java b/core/src/main/java/org/apache/calcite/rel/stream/StreamRules.java
index a1e0d58..02d8e68 100644
--- a/core/src/main/java/org/apache/calcite/rel/stream/StreamRules.java
+++ b/core/src/main/java/org/apache/calcite/rel/stream/StreamRules.java
@@ -45,8 +45,8 @@ import org.apache.calcite.tools.RelBuilderFactory;
 import org.apache.calcite.util.Util;
 
 import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -130,7 +130,8 @@ public class StreamRules {
     public DeltaAggregateTransposeRule(RelBuilderFactory relBuilderFactory) {
       super(
           operand(Delta.class,
-              operand(Aggregate.class, null, Aggregate.NO_INDICATOR, any())),
+              operandJ(Aggregate.class, null, Aggregate::noIndicator,
+                  any())),
           relBuilderFactory, null);
     }
 
@@ -193,7 +194,7 @@ public class StreamRules {
       final Delta delta = call.rel(0);
       Util.discard(delta);
       final Union union = call.rel(1);
-      final List<RelNode> newInputs = Lists.newArrayList();
+      final List<RelNode> newInputs = new ArrayList<>();
       for (RelNode input : union.getInputs()) {
         final LogicalDelta newDelta =
             LogicalDelta.create(input);
@@ -326,7 +327,7 @@ public class StreamRules {
           join.isSemiJoinDone(),
           ImmutableList.copyOf(join.getSystemFieldList()));
 
-      List<RelNode> inputsToUnion = Lists.newArrayList();
+      List<RelNode> inputsToUnion = new ArrayList<>();
       inputsToUnion.add(joinL);
       inputsToUnion.add(joinR);
 

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/type/DynamicRecordTypeImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/type/DynamicRecordTypeImpl.java b/core/src/main/java/org/apache/calcite/rel/type/DynamicRecordTypeImpl.java
index 82b6714..50f426b 100644
--- a/core/src/main/java/org/apache/calcite/rel/type/DynamicRecordTypeImpl.java
+++ b/core/src/main/java/org/apache/calcite/rel/type/DynamicRecordTypeImpl.java
@@ -20,7 +20,8 @@ import org.apache.calcite.sql.type.SqlTypeExplicitPrecedenceList;
 import org.apache.calcite.sql.type.SqlTypeName;
 import org.apache.calcite.util.Pair;
 
-import java.util.Collections;
+import com.google.common.collect.ImmutableList;
+
 import java.util.List;
 
 /**
@@ -69,7 +70,7 @@ public class DynamicRecordTypeImpl extends DynamicRecordType {
   }
 
   @Override public RelDataTypePrecedenceList getPrecedenceList() {
-    return new SqlTypeExplicitPrecedenceList(Collections.<SqlTypeName>emptyList());
+    return new SqlTypeExplicitPrecedenceList(ImmutableList.of());
   }
 
   protected void generateTypeString(StringBuilder sb, boolean withDetail) {

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeFactory.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeFactory.java b/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeFactory.java
index da65d87..c83e6a2 100644
--- a/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeFactory.java
+++ b/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeFactory.java
@@ -23,12 +23,11 @@ import org.apache.calcite.sql.parser.SqlParserPos;
 import org.apache.calcite.sql.type.SqlTypeName;
 import org.apache.calcite.sql.validate.SqlValidatorUtil;
 
-import com.google.common.base.Preconditions;
-
 import java.nio.charset.Charset;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 
 /**
  * RelDataTypeFactory is a factory for datatype descriptors. It defines methods
@@ -408,7 +407,7 @@ public interface RelDataTypeFactory {
      * Creates a Builder with the given type factory.
      */
     public Builder(RelDataTypeFactory typeFactory) {
-      this.typeFactory = Preconditions.checkNotNull(typeFactory);
+      this.typeFactory = Objects.requireNonNull(typeFactory);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeFactoryImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeFactoryImpl.java b/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeFactoryImpl.java
index 4151c1a..d529ff7 100644
--- a/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeFactoryImpl.java
+++ b/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeFactoryImpl.java
@@ -25,7 +25,6 @@ import org.apache.calcite.sql.type.SqlTypeUtil;
 import org.apache.calcite.util.Glossary;
 import org.apache.calcite.util.Util;
 
-import com.google.common.base.Preconditions;
 import com.google.common.cache.CacheBuilder;
 import com.google.common.cache.CacheLoader;
 import com.google.common.cache.LoadingCache;
@@ -56,24 +55,23 @@ public abstract class RelDataTypeFactoryImpl implements RelDataTypeFactory {
   private static final LoadingCache<Object, RelDataType> CACHE =
       CacheBuilder.newBuilder()
           .softValues()
-          .build(
-              new CacheLoader<Object, RelDataType>() {
-                @Override public RelDataType load(@Nonnull Object k) {
-                  if (k instanceof RelDataType) {
-                    return (RelDataType) k;
-                  }
-                  @SuppressWarnings("unchecked")
-                  final Key key = (Key) k;
-                  final ImmutableList.Builder<RelDataTypeField> list =
-                      ImmutableList.builder();
-                  for (int i = 0; i < key.names.size(); i++) {
-                    list.add(
-                        new RelDataTypeFieldImpl(
-                            key.names.get(i), i, key.types.get(i)));
-                  }
-                  return new RelRecordType(key.kind, list.build());
-                }
-              });
+          .build(CacheLoader.from(RelDataTypeFactoryImpl::keyToType));
+
+  private static RelDataType keyToType(@Nonnull Object k) {
+    if (k instanceof RelDataType) {
+      return (RelDataType) k;
+    }
+    @SuppressWarnings("unchecked")
+    final Key key = (Key) k;
+    final ImmutableList.Builder<RelDataTypeField> list =
+        ImmutableList.builder();
+    for (int i = 0; i < key.names.size(); i++) {
+      list.add(
+          new RelDataTypeFieldImpl(
+              key.names.get(i), i, key.types.get(i)));
+    }
+    return new RelRecordType(key.kind, list.build());
+  }
 
   private static final Map<Class, RelDataTypeFamily> CLASS_FAMILIES =
       ImmutableMap.<Class, RelDataTypeFamily>builder()
@@ -104,7 +102,7 @@ public abstract class RelDataTypeFactoryImpl implements RelDataTypeFactory {
 
   /** Creates a type factory. */
   protected RelDataTypeFactoryImpl(RelDataTypeSystem typeSystem) {
-    this.typeSystem = Preconditions.checkNotNull(typeSystem);
+    this.typeSystem = Objects.requireNonNull(typeSystem);
   }
 
   //~ Methods ----------------------------------------------------------------
@@ -312,7 +310,7 @@ public abstract class RelDataTypeFactoryImpl implements RelDataTypeFactory {
   public RelDataType createTypeWithNullability(
       final RelDataType type,
       final boolean nullable) {
-    Preconditions.checkNotNull(type);
+    Objects.requireNonNull(type);
     RelDataType newType;
     if (type.isNullable() == nullable) {
       newType = type;

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeField.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeField.java b/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeField.java
index 36acc1b..913c3a3 100644
--- a/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeField.java
+++ b/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeField.java
@@ -16,8 +16,6 @@
  */
 package org.apache.calcite.rel.type;
 
-import com.google.common.base.Function;
-
 import java.util.Map;
 
 /**
@@ -34,8 +32,12 @@ public interface RelDataTypeField extends Map.Entry<String, RelDataType> {
   /**
    * Function to transform a set of {@link RelDataTypeField} to
    * a set of {@link Integer} of the field keys.
+   *
+   * @deprecated Use {@code RelDataTypeField::getIndex}
    */
-  class ToFieldIndex implements Function<RelDataTypeField, Integer> {
+  @Deprecated // to be removed before 2.0
+  class ToFieldIndex
+      implements com.google.common.base.Function<RelDataTypeField, Integer> {
     @Override public Integer apply(RelDataTypeField o) {
       return o.getIndex();
     }
@@ -44,8 +46,12 @@ public interface RelDataTypeField extends Map.Entry<String, RelDataType> {
   /**
    * Function to transform a set of {@link RelDataTypeField} to
    * a set of {@link String} of the field names.
+   *
+   * @deprecated Use {@code RelDataTypeField::getName}
    */
-  class ToFieldName implements Function<RelDataTypeField, String> {
+  @Deprecated // to be removed before 2.0
+  class ToFieldName
+      implements com.google.common.base.Function<RelDataTypeField, String> {
     @Override public String apply(RelDataTypeField o) {
       return o.getName();
     }

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeImpl.java b/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeImpl.java
index a559686..5c001f7 100644
--- a/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeImpl.java
+++ b/core/src/main/java/org/apache/calcite/rel/type/RelDataTypeImpl.java
@@ -27,10 +27,10 @@ import org.apache.calcite.util.Util;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
 
 import java.io.Serializable;
 import java.nio.charset.Charset;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -85,7 +85,7 @@ public abstract class RelDataTypeImpl
       }
     }
     if (elideRecord) {
-      final List<Slot> slots = Lists.newArrayList();
+      final List<Slot> slots = new ArrayList<>();
       getFieldRecurse(slots, this, 0, fieldName, caseSensitive);
     loop:
       for (Slot slot : slots) {
@@ -298,11 +298,7 @@ public abstract class RelDataTypeImpl
    */
   public static RelProtoDataType proto(final RelDataType protoType) {
     assert protoType != null;
-    return new RelProtoDataType() {
-      public RelDataType apply(RelDataTypeFactory typeFactory) {
-        return typeFactory.copyType(protoType);
-      }
-    };
+    return typeFactory -> typeFactory.copyType(protoType);
   }
 
   /** Returns a {@link org.apache.calcite.rel.type.RelProtoDataType}
@@ -318,11 +314,9 @@ public abstract class RelDataTypeImpl
   public static RelProtoDataType proto(final SqlTypeName typeName,
       final boolean nullable) {
     assert typeName != null;
-    return new RelProtoDataType() {
-      public RelDataType apply(RelDataTypeFactory typeFactory) {
-        final RelDataType type = typeFactory.createSqlType(typeName);
-        return typeFactory.createTypeWithNullability(type, nullable);
-      }
+    return typeFactory -> {
+      final RelDataType type = typeFactory.createSqlType(typeName);
+      return typeFactory.createTypeWithNullability(type, nullable);
     };
   }
 
@@ -340,11 +334,9 @@ public abstract class RelDataTypeImpl
   public static RelProtoDataType proto(final SqlTypeName typeName,
       final int precision, final boolean nullable) {
     assert typeName != null;
-    return new RelProtoDataType() {
-      public RelDataType apply(RelDataTypeFactory typeFactory) {
-        final RelDataType type = typeFactory.createSqlType(typeName, precision);
-        return typeFactory.createTypeWithNullability(type, nullable);
-      }
+    return typeFactory -> {
+      final RelDataType type = typeFactory.createSqlType(typeName, precision);
+      return typeFactory.createTypeWithNullability(type, nullable);
     };
   }
 
@@ -362,12 +354,10 @@ public abstract class RelDataTypeImpl
    */
   public static RelProtoDataType proto(final SqlTypeName typeName,
       final int precision, final int scale, final boolean nullable) {
-    return new RelProtoDataType() {
-      public RelDataType apply(RelDataTypeFactory typeFactory) {
-        final RelDataType type =
-            typeFactory.createSqlType(typeName, precision, scale);
-        return typeFactory.createTypeWithNullability(type, nullable);
-      }
+    return typeFactory -> {
+      final RelDataType type =
+          typeFactory.createSqlType(typeName, precision, scale);
+      return typeFactory.createTypeWithNullability(type, nullable);
     };
   }
 

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rel/type/RelRecordType.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/type/RelRecordType.java b/core/src/main/java/org/apache/calcite/rel/type/RelRecordType.java
index f8bf907..0bb4ed0 100644
--- a/core/src/main/java/org/apache/calcite/rel/type/RelRecordType.java
+++ b/core/src/main/java/org/apache/calcite/rel/type/RelRecordType.java
@@ -19,10 +19,9 @@ package org.apache.calcite.rel.type;
 import org.apache.calcite.linq4j.Ord;
 import org.apache.calcite.sql.type.SqlTypeName;
 
-import com.google.common.base.Preconditions;
-
 import java.io.Serializable;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * RelRecordType represents a structured type having named fields.
@@ -39,7 +38,7 @@ public class RelRecordType extends RelDataTypeImpl implements Serializable {
    */
   public RelRecordType(StructKind kind, List<RelDataTypeField> fields) {
     super(fields);
-    this.kind = Preconditions.checkNotNull(kind);
+    this.kind = Objects.requireNonNull(kind);
     computeDigest();
   }
 

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rex/RexBuilder.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rex/RexBuilder.java b/core/src/main/java/org/apache/calcite/rex/RexBuilder.java
index 5dcc85b..4a26cd8 100644
--- a/core/src/main/java/org/apache/calcite/rex/RexBuilder.java
+++ b/core/src/main/java/org/apache/calcite/rex/RexBuilder.java
@@ -20,7 +20,6 @@ import org.apache.calcite.avatica.util.ByteString;
 import org.apache.calcite.avatica.util.DateTimeUtils;
 import org.apache.calcite.avatica.util.Spaces;
 import org.apache.calcite.avatica.util.TimeUnit;
-import org.apache.calcite.rel.RelCollation;
 import org.apache.calcite.rel.RelNode;
 import org.apache.calcite.rel.core.AggregateCall;
 import org.apache.calcite.rel.core.CorrelationId;
@@ -49,7 +48,6 @@ import org.apache.calcite.util.TimeString;
 import org.apache.calcite.util.TimestampString;
 import org.apache.calcite.util.Util;
 
-import com.google.common.base.Function;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
@@ -62,6 +60,7 @@ import java.util.Arrays;
 import java.util.Calendar;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 
 /**
  * Factory for row expressions.
@@ -78,13 +77,6 @@ public class RexBuilder {
   public static final SqlSpecialOperator GET_OPERATOR =
       new SqlSpecialOperator("_get", SqlKind.OTHER_FUNCTION);
 
-  private static final Function<RelDataTypeField, RexInputRef> TO_INPUT_REF =
-      new Function<RelDataTypeField, RexInputRef>() {
-        public RexInputRef apply(RelDataTypeField input) {
-          return new RexInputRef(input.getIndex(), input.getType());
-        }
-      };
-
   //~ Instance fields --------------------------------------------------------
 
   protected final RelDataTypeFactory typeFactory;
@@ -128,7 +120,8 @@ public class RexBuilder {
   /** Creates a list of {@link org.apache.calcite.rex.RexInputRef} expressions,
    * projecting the fields of a given record type. */
   public List<? extends RexNode> identityProjects(final RelDataType rowType) {
-    return Lists.transform(rowType.getFieldList(), TO_INPUT_REF);
+    return Lists.transform(rowType.getFieldList(),
+        input -> new RexInputRef(input.getIndex(), input.getType()));
   }
 
   //~ Methods ----------------------------------------------------------------
@@ -273,7 +266,7 @@ public class RexBuilder {
       List<? extends RexNode> exprs) {
     return op.inferReturnType(
         new RexCallBinding(typeFactory, op, exprs,
-            ImmutableList.<RelCollation>of()));
+            ImmutableList.of()));
   }
 
   /**
@@ -391,7 +384,7 @@ public class RexBuilder {
                   new RexOver(
                       bigintType,
                       SqlStdOperatorTable.COUNT,
-                      ImmutableList.<RexNode>of(),
+                      ImmutableList.of(),
                       window,
                       distinct),
                   makeLiteral(
@@ -1110,7 +1103,7 @@ public class RexBuilder {
    * Creates a Date literal.
    */
   public RexLiteral makeDateLiteral(DateString date) {
-    return makeLiteral(Preconditions.checkNotNull(date),
+    return makeLiteral(Objects.requireNonNull(date),
         typeFactory.createSqlType(SqlTypeName.DATE), SqlTypeName.DATE);
   }
 
@@ -1124,7 +1117,7 @@ public class RexBuilder {
    * Creates a Time literal.
    */
   public RexLiteral makeTimeLiteral(TimeString time, int precision) {
-    return makeLiteral(Preconditions.checkNotNull(time),
+    return makeLiteral(Objects.requireNonNull(time),
         typeFactory.createSqlType(SqlTypeName.TIME, precision),
         SqlTypeName.TIME);
   }
@@ -1135,7 +1128,7 @@ public class RexBuilder {
   public RexLiteral makeTimeWithLocalTimeZoneLiteral(
       TimeString time,
       int precision) {
-    return makeLiteral(Preconditions.checkNotNull(time),
+    return makeLiteral(Objects.requireNonNull(time),
         typeFactory.createSqlType(SqlTypeName.TIME_WITH_LOCAL_TIME_ZONE, precision),
         SqlTypeName.TIME_WITH_LOCAL_TIME_ZONE);
   }
@@ -1152,7 +1145,7 @@ public class RexBuilder {
    */
   public RexLiteral makeTimestampLiteral(TimestampString timestamp,
       int precision) {
-    return makeLiteral(Preconditions.checkNotNull(timestamp),
+    return makeLiteral(Objects.requireNonNull(timestamp),
         typeFactory.createSqlType(SqlTypeName.TIMESTAMP, precision),
         SqlTypeName.TIMESTAMP);
   }
@@ -1163,7 +1156,7 @@ public class RexBuilder {
   public RexLiteral makeTimestampWithLocalTimeZoneLiteral(
       TimestampString timestamp,
       int precision) {
-    return makeLiteral(Preconditions.checkNotNull(timestamp),
+    return makeLiteral(Objects.requireNonNull(timestamp),
         typeFactory.createSqlType(SqlTypeName.TIMESTAMP_WITH_LOCAL_TIME_ZONE, precision),
         SqlTypeName.TIMESTAMP_WITH_LOCAL_TIME_ZONE);
   }

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rex/RexCall.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rex/RexCall.java b/core/src/main/java/org/apache/calcite/rex/RexCall.java
index ac9e09e..498d86e 100644
--- a/core/src/main/java/org/apache/calcite/rex/RexCall.java
+++ b/core/src/main/java/org/apache/calcite/rex/RexCall.java
@@ -22,10 +22,10 @@ import org.apache.calcite.sql.SqlOperator;
 import org.apache.calcite.sql.SqlSyntax;
 import org.apache.calcite.util.Litmus;
 
-import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
 
 import java.util.List;
+import java.util.Objects;
 
 /**
  * An expression formed by a call to an operator with zero or more expressions
@@ -56,8 +56,8 @@ public class RexCall extends RexNode {
       RelDataType type,
       SqlOperator op,
       List<? extends RexNode> operands) {
-    this.type = Preconditions.checkNotNull(type);
-    this.op = Preconditions.checkNotNull(op);
+    this.type = Objects.requireNonNull(type);
+    this.op = Objects.requireNonNull(op);
     this.operands = ImmutableList.copyOf(operands);
     assert op.getKind() != null : op;
     assert op.validRexOperands(operands.size(), Litmus.THROW) : this;

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rex/RexCorrelVariable.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rex/RexCorrelVariable.java b/core/src/main/java/org/apache/calcite/rex/RexCorrelVariable.java
index 2f6197a..750a97b 100644
--- a/core/src/main/java/org/apache/calcite/rex/RexCorrelVariable.java
+++ b/core/src/main/java/org/apache/calcite/rex/RexCorrelVariable.java
@@ -20,7 +20,7 @@ import org.apache.calcite.rel.core.CorrelationId;
 import org.apache.calcite.rel.type.RelDataType;
 import org.apache.calcite.sql.SqlKind;
 
-import com.google.common.base.Preconditions;
+import java.util.Objects;
 
 /**
  * Reference to the current row of a correlating relational expression.
@@ -38,7 +38,7 @@ public class RexCorrelVariable extends RexVariable {
       CorrelationId id,
       RelDataType type) {
     super(id.getName(), type);
-    this.id = Preconditions.checkNotNull(id);
+    this.id = Objects.requireNonNull(id);
   }
 
   //~ Methods ----------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rex/RexExecutorImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rex/RexExecutorImpl.java b/core/src/main/java/org/apache/calcite/rex/RexExecutorImpl.java
index 99f8e78..a5e0aab 100644
--- a/core/src/main/java/org/apache/calcite/rex/RexExecutorImpl.java
+++ b/core/src/main/java/org/apache/calcite/rex/RexExecutorImpl.java
@@ -116,11 +116,8 @@ public class RexExecutorImpl implements RexExecutor {
   public void reduce(RexBuilder rexBuilder, List<RexNode> constExps,
       List<RexNode> reducedValues) {
     final String code = compile(rexBuilder, constExps,
-        new RexToLixTranslator.InputGetter() {
-          public Expression field(BlockBuilder list, int index,
-              Type storageType) {
-            throw new UnsupportedOperationException();
-          }
+        (list, index, storageType) -> {
+          throw new UnsupportedOperationException();
         });
 
     final RexExecutable executable = new RexExecutable(code, constExps);

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rex/RexLiteral.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rex/RexLiteral.java b/core/src/main/java/org/apache/calcite/rex/RexLiteral.java
index 94ea886..ade5556 100644
--- a/core/src/main/java/org/apache/calcite/rex/RexLiteral.java
+++ b/core/src/main/java/org/apache/calcite/rex/RexLiteral.java
@@ -211,8 +211,8 @@ public class RexLiteral extends RexNode {
       RelDataType type,
       SqlTypeName typeName) {
     this.value = value;
-    this.type = Preconditions.checkNotNull(type);
-    this.typeName = Preconditions.checkNotNull(typeName);
+    this.type = Objects.requireNonNull(type);
+    this.typeName = Objects.requireNonNull(typeName);
     Preconditions.checkArgument(valueMatchesType(value, typeName, true));
     Preconditions.checkArgument((value == null) == type.isNullable());
     Preconditions.checkArgument(typeName != SqlTypeName.ANY);

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rex/RexOver.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rex/RexOver.java b/core/src/main/java/org/apache/calcite/rex/RexOver.java
index 7be2af3..fe7f7d9 100644
--- a/core/src/main/java/org/apache/calcite/rex/RexOver.java
+++ b/core/src/main/java/org/apache/calcite/rex/RexOver.java
@@ -25,6 +25,7 @@ import org.apache.calcite.util.Util;
 import com.google.common.base.Preconditions;
 
 import java.util.List;
+import java.util.Objects;
 
 /**
  * Call to an aggregate function over a window.
@@ -66,7 +67,7 @@ public class RexOver extends RexCall {
       boolean distinct) {
     super(type, op, operands);
     Preconditions.checkArgument(op.isAggregator());
-    this.window = Preconditions.checkNotNull(window);
+    this.window = Objects.requireNonNull(window);
     this.distinct = distinct;
   }
 

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rex/RexPermuteInputsShuttle.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rex/RexPermuteInputsShuttle.java b/core/src/main/java/org/apache/calcite/rex/RexPermuteInputsShuttle.java
index 1750477..1d8d41e 100644
--- a/core/src/main/java/org/apache/calcite/rex/RexPermuteInputsShuttle.java
+++ b/core/src/main/java/org/apache/calcite/rex/RexPermuteInputsShuttle.java
@@ -66,7 +66,7 @@ public class RexPermuteInputsShuttle extends RexShuttle {
    * otherwise works OK. */
   public static RexPermuteInputsShuttle of(Mappings.TargetMapping mapping) {
     return new RexPermuteInputsShuttle(mapping,
-        ImmutableList.<RelDataTypeField>of());
+        ImmutableList.of());
   }
 
   //~ Methods ----------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rex/RexProgram.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rex/RexProgram.java b/core/src/main/java/org/apache/calcite/rex/RexProgram.java
index e710386..32e438c 100644
--- a/core/src/main/java/org/apache/calcite/rex/RexProgram.java
+++ b/core/src/main/java/org/apache/calcite/rex/RexProgram.java
@@ -34,7 +34,6 @@ import org.apache.calcite.util.Pair;
 import org.apache.calcite.util.Permutation;
 
 import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
 import com.google.common.collect.Ordering;
 
 import java.io.PrintWriter;
@@ -514,7 +513,7 @@ public class RexProgram {
    * <p>Neither list is null.
    * The filters are evaluated first. */
   public Pair<ImmutableList<RexNode>, ImmutableList<RexNode>> split() {
-    final List<RexNode> filters = Lists.newArrayList();
+    final List<RexNode> filters = new ArrayList<>();
     if (condition != null) {
       RelOptUtil.decomposeConjunction(expandLocalRef(condition), filters);
     }
@@ -574,7 +573,7 @@ public class RexProgram {
       // to the output.
       outputCollations.add(RelCollations.of(fieldCollations));
     }
-    Collections.sort(outputCollations, Ordering.natural());
+    outputCollations.sort(Ordering.natural());
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rex/RexProgramBuilder.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rex/RexProgramBuilder.java b/core/src/main/java/org/apache/calcite/rex/RexProgramBuilder.java
index 2964a48..a4a62d9 100644
--- a/core/src/main/java/org/apache/calcite/rex/RexProgramBuilder.java
+++ b/core/src/main/java/org/apache/calcite/rex/RexProgramBuilder.java
@@ -24,12 +24,11 @@ import org.apache.calcite.sql.fun.SqlStdOperatorTable;
 import org.apache.calcite.util.Litmus;
 import org.apache.calcite.util.Pair;
 
-import com.google.common.base.Preconditions;
-
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 
 /**
  * Workspace for constructing a {@link RexProgram}.
@@ -67,8 +66,8 @@ public class RexProgramBuilder {
    */
   private RexProgramBuilder(RelDataType inputRowType, RexBuilder rexBuilder,
       RexSimplify simplify) {
-    this.inputRowType = Preconditions.checkNotNull(inputRowType);
-    this.rexBuilder = Preconditions.checkNotNull(rexBuilder);
+    this.inputRowType = Objects.requireNonNull(inputRowType);
+    this.rexBuilder = Objects.requireNonNull(rexBuilder);
     this.simplify = simplify; // may be null
     this.validating = assertionsAreEnabled();
 

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rex/RexShuttle.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rex/RexShuttle.java b/core/src/main/java/org/apache/calcite/rex/RexShuttle.java
index 6714be1..d79dcbf 100644
--- a/core/src/main/java/org/apache/calcite/rex/RexShuttle.java
+++ b/core/src/main/java/org/apache/calcite/rex/RexShuttle.java
@@ -16,13 +16,11 @@
  */
 package org.apache.calcite.rex;
 
-import com.google.common.base.Function;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterables;
 
 import java.util.ArrayList;
 import java.util.List;
-import javax.annotation.Nullable;
 
 /**
  * Passes over a row-expression, calling a handler method for each node,
@@ -269,11 +267,8 @@ public class RexShuttle implements RexVisitor<RexNode> {
    * Applies this shuttle to each expression in an iterable.
    */
   public final Iterable<RexNode> apply(Iterable<? extends RexNode> iterable) {
-    return Iterables.transform(iterable, new Function<RexNode, RexNode>() {
-      public RexNode apply(@Nullable RexNode t) {
-        return t == null ? null : t.accept(RexShuttle.this);
-      }
-    });
+    return Iterables.transform(iterable,
+        t -> t == null ? null : t.accept(RexShuttle.this));
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rex/RexSimplify.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rex/RexSimplify.java b/core/src/main/java/org/apache/calcite/rex/RexSimplify.java
index d51ffe7..8ebf045 100644
--- a/core/src/main/java/org/apache/calcite/rex/RexSimplify.java
+++ b/core/src/main/java/org/apache/calcite/rex/RexSimplify.java
@@ -31,7 +31,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.Preconditions;
 import com.google.common.collect.ArrayListMultimap;
 import com.google.common.collect.BoundType;
 import com.google.common.collect.ImmutableList;
@@ -47,6 +46,7 @@ import java.util.HashSet;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Set;
 import java.util.function.Function;
 
@@ -76,11 +76,11 @@ public class RexSimplify {
   /** Internal constructor. */
   private RexSimplify(RexBuilder rexBuilder, RelOptPredicateList predicates,
       boolean unknownAsFalse, boolean paranoid, RexExecutor executor) {
-    this.rexBuilder = Preconditions.checkNotNull(rexBuilder);
-    this.predicates = Preconditions.checkNotNull(predicates);
+    this.rexBuilder = Objects.requireNonNull(rexBuilder);
+    this.predicates = Objects.requireNonNull(predicates);
     this.unknownAsFalse = unknownAsFalse;
     this.paranoid = paranoid;
-    this.executor = Preconditions.checkNotNull(executor);
+    this.executor = Objects.requireNonNull(executor);
   }
 
   @Deprecated // to be removed before 2.0
@@ -1152,8 +1152,8 @@ public class RexSimplify {
         break;
       }
       final List<RexNode> reducedValues = new ArrayList<>();
-      executor.reduce(rexBuilder, ImmutableList.<RexNode>of(e), reducedValues);
-      return Preconditions.checkNotNull(
+      executor.reduce(rexBuilder, ImmutableList.of(e), reducedValues);
+      return Objects.requireNonNull(
           Iterables.getOnlyElement(reducedValues));
     default:
       return e;
@@ -1504,9 +1504,9 @@ public class RexSimplify {
     final RexLiteral literal;
 
     private Comparison(RexNode ref, SqlKind kind, RexLiteral literal) {
-      this.ref = Preconditions.checkNotNull(ref);
-      this.kind = Preconditions.checkNotNull(kind);
-      this.literal = Preconditions.checkNotNull(literal);
+      this.ref = Objects.requireNonNull(ref);
+      this.kind = Objects.requireNonNull(kind);
+      this.literal = Objects.requireNonNull(literal);
     }
 
     /** Creates a comparison, or returns null. */
@@ -1545,8 +1545,8 @@ public class RexSimplify {
     final SqlKind kind;
 
     private IsPredicate(RexNode ref, SqlKind kind) {
-      this.ref = Preconditions.checkNotNull(ref);
-      this.kind = Preconditions.checkNotNull(kind);
+      this.ref = Objects.requireNonNull(ref);
+      this.kind = Objects.requireNonNull(kind);
     }
 
     /** Creates an IS predicate, or returns null. */

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rex/RexSqlStandardConvertletTable.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rex/RexSqlStandardConvertletTable.java b/core/src/main/java/org/apache/calcite/rex/RexSqlStandardConvertletTable.java
index e69dfc1..e93df95 100644
--- a/core/src/main/java/org/apache/calcite/rex/RexSqlStandardConvertletTable.java
+++ b/core/src/main/java/org/apache/calcite/rex/RexSqlStandardConvertletTable.java
@@ -189,26 +189,21 @@ public class RexSqlStandardConvertletTable
    */
   private void registerTypeAppendOp(final SqlOperator op) {
     registerOp(
-        op,
-        new RexSqlConvertlet() {
-          public SqlNode convertCall(
-              RexToSqlNodeConverter converter,
-              RexCall call) {
-            SqlNode[] operands =
-                convertExpressionList(converter, call.operands);
-            if (operands == null) {
-              return null;
-            }
-            List<SqlNode> operandList =
-                new ArrayList<SqlNode>(Arrays.asList(operands));
-            SqlDataTypeSpec typeSpec =
-                SqlTypeUtil.convertTypeToSpec(call.getType());
-            operandList.add(typeSpec);
-            return new SqlBasicCall(
-                op,
-                operandList.toArray(new SqlNode[operandList.size()]),
-                SqlParserPos.ZERO);
+        op, (converter, call) -> {
+          SqlNode[] operands =
+              convertExpressionList(converter, call.operands);
+          if (operands == null) {
+            return null;
           }
+          List<SqlNode> operandList =
+              new ArrayList<SqlNode>(Arrays.asList(operands));
+          SqlDataTypeSpec typeSpec =
+              SqlTypeUtil.convertTypeToSpec(call.getType());
+          operandList.add(typeSpec);
+          return new SqlBasicCall(
+              op,
+              operandList.toArray(new SqlNode[0]),
+              SqlParserPos.ZERO);
         });
   }
 
@@ -220,33 +215,28 @@ public class RexSqlStandardConvertletTable
    */
   private void registerCaseOp(final SqlOperator op) {
     registerOp(
-        op,
-        new RexSqlConvertlet() {
-          public SqlNode convertCall(
-              RexToSqlNodeConverter converter,
-              RexCall call) {
-            assert op instanceof SqlCaseOperator;
-            SqlNode[] operands =
-                convertExpressionList(converter, call.operands);
-            if (operands == null) {
-              return null;
-            }
-            SqlNodeList whenList = new SqlNodeList(SqlParserPos.ZERO);
-            SqlNodeList thenList = new SqlNodeList(SqlParserPos.ZERO);
-            int i = 0;
-            while (i < operands.length - 1) {
-              whenList.add(operands[i]);
-              ++i;
-              thenList.add(operands[i]);
-              ++i;
-            }
-            SqlNode elseExpr = operands[i];
-            SqlNode[] newOperands = new SqlNode[3];
-            newOperands[0] = whenList;
-            newOperands[1] = thenList;
-            newOperands[2] = elseExpr;
-            return op.createCall(null, SqlParserPos.ZERO, newOperands);
+        op, (converter, call) -> {
+          assert op instanceof SqlCaseOperator;
+          SqlNode[] operands =
+              convertExpressionList(converter, call.operands);
+          if (operands == null) {
+            return null;
+          }
+          SqlNodeList whenList = new SqlNodeList(SqlParserPos.ZERO);
+          SqlNodeList thenList = new SqlNodeList(SqlParserPos.ZERO);
+          int i = 0;
+          while (i < operands.length - 1) {
+            whenList.add(operands[i]);
+            ++i;
+            thenList.add(operands[i]);
+            ++i;
           }
+          SqlNode elseExpr = operands[i];
+          SqlNode[] newOperands = new SqlNode[3];
+          newOperands[0] = whenList;
+          newOperands[1] = thenList;
+          newOperands[2] = elseExpr;
+          return op.createCall(null, SqlParserPos.ZERO, newOperands);
         });
   }
 

http://git-wip-us.apache.org/repos/asf/calcite/blob/d59b639d/core/src/main/java/org/apache/calcite/rex/RexSubQuery.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rex/RexSubQuery.java b/core/src/main/java/org/apache/calcite/rex/RexSubQuery.java
index dc0d405..05fd176 100644
--- a/core/src/main/java/org/apache/calcite/rex/RexSubQuery.java
+++ b/core/src/main/java/org/apache/calcite/rex/RexSubQuery.java
@@ -86,7 +86,7 @@ public class RexSubQuery extends RexCall {
     final RelDataTypeFactory typeFactory = rel.getCluster().getTypeFactory();
     final RelDataType type = typeFactory.createSqlType(SqlTypeName.BOOLEAN);
     return new RexSubQuery(type, SqlStdOperatorTable.EXISTS,
-        ImmutableList.<RexNode>of(), rel);
+        ImmutableList.of(), rel);
   }
 
   /** Creates a scalar sub-query. */
@@ -97,7 +97,7 @@ public class RexSubQuery extends RexCall {
     final RelDataType type =
         typeFactory.createTypeWithNullability(fieldList.get(0).getType(), true);
     return new RexSubQuery(type, SqlStdOperatorTable.SCALAR_QUERY,
-        ImmutableList.<RexNode>of(), rel);
+        ImmutableList.of(), rel);
   }
 
   public <R> R accept(RexVisitor<R> visitor) {