You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@impala.apache.org by kw...@apache.org on 2016/09/30 02:14:41 UTC

[24/61] [partial] incubator-impala git commit: IMPALA-3786: Replace "cloudera" with "apache" (part 1)

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/b544f019/fe/src/main/java/com/cloudera/impala/common/InternalException.java
----------------------------------------------------------------------
diff --git a/fe/src/main/java/com/cloudera/impala/common/InternalException.java b/fe/src/main/java/com/cloudera/impala/common/InternalException.java
deleted file mode 100644
index 64a8d5e..0000000
--- a/fe/src/main/java/com/cloudera/impala/common/InternalException.java
+++ /dev/null
@@ -1,32 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-package com.cloudera.impala.common;
-
-/**
- * Thrown for internal server errors.
- *
- */
-public class InternalException extends ImpalaException {
-  public InternalException(String msg, Throwable cause) {
-    super(msg, cause);
-  }
-
-  public InternalException(String msg) {
-    super(msg);
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/b544f019/fe/src/main/java/com/cloudera/impala/common/JniUtil.java
----------------------------------------------------------------------
diff --git a/fe/src/main/java/com/cloudera/impala/common/JniUtil.java b/fe/src/main/java/com/cloudera/impala/common/JniUtil.java
deleted file mode 100644
index 2f11c52..0000000
--- a/fe/src/main/java/com/cloudera/impala/common/JniUtil.java
+++ /dev/null
@@ -1,165 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-package com.cloudera.impala.common;
-
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.io.Writer;
-import java.lang.management.ManagementFactory;
-import java.lang.management.MemoryPoolMXBean;
-import java.lang.management.MemoryUsage;
-import java.util.ArrayList;
-
-import org.apache.thrift.TBase;
-import org.apache.thrift.TSerializer;
-import org.apache.thrift.TDeserializer;
-import org.apache.thrift.TException;
-import org.apache.thrift.protocol.TBinaryProtocol;
-import org.apache.thrift.protocol.TProtocolFactory;
-
-import com.cloudera.impala.thrift.TGetJvmMetricsRequest;
-import com.cloudera.impala.thrift.TGetJvmMetricsResponse;
-import com.cloudera.impala.thrift.TJvmMemoryPool;
-
-/**
- * Utility class with methods intended for JNI clients
- */
-public class JniUtil {
-  private final static TBinaryProtocol.Factory protocolFactory_ =
-      new TBinaryProtocol.Factory();
-
-  /**
-   * Returns a formatted string containing the simple exception name and the
-   * exception message without the full stack trace. Includes the
-   * the chain of causes each in a separate line.
-   */
-  public static String throwableToString(Throwable t) {
-    Writer output = new StringWriter();
-    try {
-      output.write(String.format("%s: %s", t.getClass().getSimpleName(),
-          t.getMessage()));
-      // Follow the chain of exception causes and print them as well.
-      Throwable cause = t;
-      while ((cause = cause.getCause()) != null) {
-        output.write(String.format("\nCAUSED BY: %s: %s",
-            cause.getClass().getSimpleName(), cause.getMessage()));
-      }
-    } catch (IOException e) {
-      throw new Error(e);
-    }
-    return output.toString();
-  }
-
-  /**
-   * Returns the stack trace of the Throwable object.
-   */
-  public static String throwableToStackTrace(Throwable t) {
-    Writer output = new StringWriter();
-    t.printStackTrace(new PrintWriter(output));
-    return output.toString();
-  }
-
-  /**
-   * Deserialize a serialized form of a Thrift data structure to its object form.
-   */
-  public static <T extends TBase<?, ?>, F extends TProtocolFactory>
-  void deserializeThrift(F protocolFactory, T result, byte[] thriftData)
-      throws ImpalaException {
-    // TODO: avoid creating deserializer for each query?
-    TDeserializer deserializer = new TDeserializer(protocolFactory);
-    try {
-      deserializer.deserialize(result, thriftData);
-    } catch (TException e) {
-      throw new InternalException(e.getMessage());
-    }
-  }
-
-  /**
-   * Collect the JVM's memory statistics into a thrift structure for translation into
-   * Impala metrics by the backend. A synthetic 'total' memory pool is included with
-   * aggregate statistics for all real pools.
-   */
-  public static byte[] getJvmMetrics(byte[] argument) throws ImpalaException {
-    TGetJvmMetricsRequest request = new TGetJvmMetricsRequest();
-    JniUtil.deserializeThrift(protocolFactory_, request, argument);
-
-    TGetJvmMetricsResponse jvmMetrics = new TGetJvmMetricsResponse();
-    jvmMetrics.setMemory_pools(new ArrayList<TJvmMemoryPool>());
-    TJvmMemoryPool totalUsage = new TJvmMemoryPool();
-    boolean is_total =
-        request.getMemory_pool() != null && request.getMemory_pool().equals("total");
-
-    if (request.get_all || is_total) {
-      totalUsage.setName("total");
-      jvmMetrics.getMemory_pools().add(totalUsage);
-    }
-    for (MemoryPoolMXBean memBean: ManagementFactory.getMemoryPoolMXBeans()) {
-      if (request.get_all || is_total ||
-          memBean.getName().equals(request.getMemory_pool())) {
-        TJvmMemoryPool usage = new TJvmMemoryPool();
-        MemoryUsage beanUsage = memBean.getUsage();
-        usage.setCommitted(beanUsage.getCommitted());
-        usage.setInit(beanUsage.getInit());
-        usage.setMax(beanUsage.getMax());
-        usage.setUsed(beanUsage.getUsed());
-        usage.setName(memBean.getName());
-
-        totalUsage.committed += beanUsage.getCommitted();
-        totalUsage.init += beanUsage.getInit();
-        totalUsage.max += beanUsage.getMax();
-        totalUsage.used += beanUsage.getUsed();
-
-        MemoryUsage peakUsage = memBean.getPeakUsage();
-        usage.setPeak_committed(peakUsage.getCommitted());
-        usage.setPeak_init(peakUsage.getInit());
-        usage.setPeak_max(peakUsage.getMax());
-        usage.setPeak_used(peakUsage.getUsed());
-
-        totalUsage.peak_committed += peakUsage.getCommitted();
-        totalUsage.peak_init += peakUsage.getInit();
-        totalUsage.peak_max += peakUsage.getMax();
-        totalUsage.peak_used += peakUsage.getUsed();
-
-        if (!is_total) {
-          jvmMetrics.getMemory_pools().add(usage);
-          if (!request.get_all) break;
-        }
-      }
-    }
-    TSerializer serializer = new TSerializer(protocolFactory_);
-    try {
-      return serializer.serialize(jvmMetrics);
-    } catch (TException e) {
-      throw new InternalException(e.getMessage());
-    }
-  }
-
-  /**
-   * Get Java version and vendor information
-   */
-  public static String getJavaVersion() {
-    StringBuilder sb = new StringBuilder();
-    sb.append("Java Version Info: ");
-    sb.append(System.getProperty("java.runtime.name"));
-    sb.append(" (");
-    sb.append(System.getProperty("java.runtime.version"));
-    sb.append(")");
-    return sb.toString();
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/b544f019/fe/src/main/java/com/cloudera/impala/common/NotImplementedException.java
----------------------------------------------------------------------
diff --git a/fe/src/main/java/com/cloudera/impala/common/NotImplementedException.java b/fe/src/main/java/com/cloudera/impala/common/NotImplementedException.java
deleted file mode 100644
index b06a130..0000000
--- a/fe/src/main/java/com/cloudera/impala/common/NotImplementedException.java
+++ /dev/null
@@ -1,28 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-package com.cloudera.impala.common;
-
-/**
- * Thrown for SQL statements that require as yet unimplemented functionality.
- *
- */
-public class NotImplementedException extends ImpalaException {
-  public NotImplementedException(String msg) {
-    super(msg);
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/b544f019/fe/src/main/java/com/cloudera/impala/common/Pair.java
----------------------------------------------------------------------
diff --git a/fe/src/main/java/com/cloudera/impala/common/Pair.java b/fe/src/main/java/com/cloudera/impala/common/Pair.java
deleted file mode 100644
index c17c535..0000000
--- a/fe/src/main/java/com/cloudera/impala/common/Pair.java
+++ /dev/null
@@ -1,55 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-package com.cloudera.impala.common;
-
-/**
- * The equivalent of C++'s std::pair<>.
- */
-public class Pair<F, S> {
-  public F first;
-  public S second;
-
-  public Pair(F first, S second) {
-    this.first = first;
-    this.second = second;
-  }
-
-  @Override
-  /**
-   * A pair is equal if both parts are equal().
-   */
-  public boolean equals(Object o) {
-    if (o instanceof Pair) {
-      Pair<F,S> other = (Pair<F,S>) o;
-      return this.first.equals(other.first) && this.second.equals(other.second);
-    }
-    return false;
-  }
-
-  @Override
-  public int hashCode() {
-    int hashFirst = first != null ? first.hashCode() : 0;
-    int hashSecond = second != null ? second.hashCode() : 0;
-
-    return (hashFirst + hashSecond) * hashSecond + hashFirst;
-  }
-
-  static public <F, S> Pair<F, S> create(F first, S second) {
-    return new Pair<F, S>(first, second);
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/b544f019/fe/src/main/java/com/cloudera/impala/common/PrintUtils.java
----------------------------------------------------------------------
diff --git a/fe/src/main/java/com/cloudera/impala/common/PrintUtils.java b/fe/src/main/java/com/cloudera/impala/common/PrintUtils.java
deleted file mode 100644
index 78e0d6d..0000000
--- a/fe/src/main/java/com/cloudera/impala/common/PrintUtils.java
+++ /dev/null
@@ -1,86 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-package com.cloudera.impala.common;
-
-import static com.cloudera.impala.common.ByteUnits.GIGABYTE;
-import static com.cloudera.impala.common.ByteUnits.KILOBYTE;
-import static com.cloudera.impala.common.ByteUnits.MEGABYTE;
-import static com.cloudera.impala.common.ByteUnits.PETABYTE;
-import static com.cloudera.impala.common.ByteUnits.TERABYTE;
-
-import java.text.DecimalFormat;
-
-import org.apache.commons.lang3.StringUtils;
-
-/**
- * Utility functions for pretty printing.
- */
-public class PrintUtils {
-  /**
-   * Prints the given number of bytes in PB, TB, GB, MB, KB with 2 decimal points.
-   * For example 5000 will be returned as 4.88KB.
-   */
-  public static String printBytes(long bytes) {
-    double result = bytes;
-    // Avoid String.format() due to IMPALA-1572 which happens on JDK7 but not JDK6.
-    if (bytes >= PETABYTE) return new DecimalFormat(".00PB").format(result / PETABYTE);
-    if (bytes >= TERABYTE) return new DecimalFormat(".00TB").format(result / TERABYTE);
-    if (bytes >= GIGABYTE) return new DecimalFormat(".00GB").format(result / GIGABYTE);
-    if (bytes >= MEGABYTE) return new DecimalFormat(".00MB").format(result / MEGABYTE);
-    if (bytes >= KILOBYTE) return new DecimalFormat(".00KB").format(result / KILOBYTE);
-    return bytes + "B";
-  }
-
-  public static String printCardinality(String prefix, long cardinality) {
-    return prefix + "cardinality=" +
-        ((cardinality != -1) ? String.valueOf(cardinality) : "unavailable");
-  }
-
-  public static String printHosts(String prefix, long numHosts) {
-    return prefix + "hosts=" + ((numHosts != -1) ? numHosts : "unavailable");
-  }
-
-  public static String printMemCost(String prefix, long perHostMemCost) {
-    return prefix + "per-host-mem=" +
-        ((perHostMemCost != -1) ? printBytes(perHostMemCost) : "unavailable");
-  }
-
-  /**
-   * Prints the given square matrix into matrixStr. Separates cells by cellSpacing.
-   */
-  public static void printMatrix(boolean[][] matrix, int cellSpacing,
-      StringBuilder matrixStr) {
-    // Print labels.
-    matrixStr.append(StringUtils.repeat(' ', cellSpacing));
-    String formatStr = "%Xd".replace("X", String.valueOf(cellSpacing));
-    for (int i = 0; i < matrix.length; ++i) {
-      matrixStr.append(String.format(formatStr, i));
-    }
-    matrixStr.append("\n");
-
-    // Print matrix.
-    for (int i = 0; i < matrix.length; ++i) {
-      matrixStr.append(String.format(formatStr, i));
-      for (int j = 0; j < matrix.length; ++j) {
-        int cell = (matrix[i][j]) ? 1 : 0;
-        matrixStr.append(String.format(formatStr, cell));
-      }
-      matrixStr.append("\n");
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/b544f019/fe/src/main/java/com/cloudera/impala/common/Reference.java
----------------------------------------------------------------------
diff --git a/fe/src/main/java/com/cloudera/impala/common/Reference.java b/fe/src/main/java/com/cloudera/impala/common/Reference.java
deleted file mode 100644
index aff1dae..0000000
--- a/fe/src/main/java/com/cloudera/impala/common/Reference.java
+++ /dev/null
@@ -1,42 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-package com.cloudera.impala.common;
-
-/**
- * "Indirection layer" that allows returning an object via an output
- * parameter of a function call, similar to a pointer or reference parameter
- * in C/C++.
- * Example:
- *   Reference<T> ref = new Reference<T>();
- *   createT(ref);  // calls ref.setRef()
- *   <do something with ref.getRef()>;
- */
-public class Reference<RefType> {
-  protected RefType ref_;
-
-  public Reference(RefType ref) {
-    this.ref_ = ref;
-  }
-
-  public Reference() {
-    this.ref_ = null;
-  }
-
-  public RefType getRef() { return ref_; }
-  public void setRef(RefType ref) { this.ref_ = ref; }
-}

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/b544f019/fe/src/main/java/com/cloudera/impala/common/RuntimeEnv.java
----------------------------------------------------------------------
diff --git a/fe/src/main/java/com/cloudera/impala/common/RuntimeEnv.java b/fe/src/main/java/com/cloudera/impala/common/RuntimeEnv.java
deleted file mode 100644
index febd657..0000000
--- a/fe/src/main/java/com/cloudera/impala/common/RuntimeEnv.java
+++ /dev/null
@@ -1,71 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-package com.cloudera.impala.common;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.cloudera.impala.service.FeSupport;
-import com.cloudera.impala.thrift.TStartupOptions;
-
-/**
- * Contains runtime-specific parameters such as the number of CPU cores. Currently only
- * used in Plan cost estimation. The static RuntimeEnv members can be set so that tests
- * can rely on a machine-independent RuntimeEnv.
- */
-public class RuntimeEnv {
-  private final static Logger LOG = LoggerFactory.getLogger(RuntimeEnv.class);
-
-  public static RuntimeEnv INSTANCE = new RuntimeEnv();
-
-  private int numCores_;
-
-  // Indicates if column lineage information should be computed for each query.
-  private boolean computeLineage_;
-
-  // Indicates whether this is an environment for testing.
-  private boolean isTestEnv_;
-
-  public RuntimeEnv() {
-    reset();
-    try {
-      TStartupOptions opts = FeSupport.GetStartupOptions();
-      computeLineage_ = opts.compute_lineage;
-    } catch (InternalException e) {
-      LOG.error("Error retrieving BE startup options. Shutting down JVM");
-      System.exit(1);
-    }
-  }
-
-  /**
-   * Resets this RuntimeEnv back to its machine-dependent state.
-   */
-  public void reset() {
-    numCores_ = Runtime.getRuntime().availableProcessors();
-  }
-
-  public int getNumCores() { return numCores_; }
-  public void setNumCores(int numCores) { this.numCores_ = numCores; }
-  public void setTestEnv(boolean v) { isTestEnv_ = v; }
-  public boolean isTestEnv() { return isTestEnv_; }
-  public boolean computeLineage() { return computeLineage_; }
-  public boolean isKuduSupported() {
-    return "true".equals(System.getenv("KUDU_IS_SUPPORTED"));
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/b544f019/fe/src/main/java/com/cloudera/impala/common/TableAliasGenerator.java
----------------------------------------------------------------------
diff --git a/fe/src/main/java/com/cloudera/impala/common/TableAliasGenerator.java b/fe/src/main/java/com/cloudera/impala/common/TableAliasGenerator.java
deleted file mode 100644
index 6ded288..0000000
--- a/fe/src/main/java/com/cloudera/impala/common/TableAliasGenerator.java
+++ /dev/null
@@ -1,37 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-package com.cloudera.impala.common;
-
-import com.cloudera.impala.analysis.Analyzer;
-
-import com.google.common.base.Preconditions;
-
-public class TableAliasGenerator extends AliasGenerator {
-  private static final String DEFAULT_TBL_ALIAS_PREFIX = "$a$";
-
-  public TableAliasGenerator(Analyzer analyzer, String prefix) {
-    Preconditions.checkNotNull(analyzer);
-    aliasPrefix_ = prefix != null ? prefix : DEFAULT_TBL_ALIAS_PREFIX;
-    Analyzer currentAnalyzer = analyzer;
-    do {
-      usedAliases_.addAll(currentAnalyzer.getAliases());
-      usedAliases_.addAll(currentAnalyzer.getLocalViews().keySet());
-      currentAnalyzer = currentAnalyzer.getParentAnalyzer();
-    } while (currentAnalyzer != null);
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/b544f019/fe/src/main/java/com/cloudera/impala/common/TreeNode.java
----------------------------------------------------------------------
diff --git a/fe/src/main/java/com/cloudera/impala/common/TreeNode.java b/fe/src/main/java/com/cloudera/impala/common/TreeNode.java
deleted file mode 100644
index ac8f297..0000000
--- a/fe/src/main/java/com/cloudera/impala/common/TreeNode.java
+++ /dev/null
@@ -1,182 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-package com.cloudera.impala.common;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import com.cloudera.impala.util.Visitor;
-import com.google.common.base.Predicate;
-
-/**
- * Generic tree structure. Only concrete subclasses of this can be instantiated.
- */
-public abstract class TreeNode<NodeType extends TreeNode<NodeType>> {
-  protected ArrayList<NodeType> children_ = new ArrayList<NodeType>();
-
-  public NodeType getChild(int i) {
-    return hasChild(i) ? children_.get(i) : null;
-  }
-
-  public void addChild(NodeType n) {
-    children_.add(n);
-  }
-
-  public void removeChild(NodeType n) { children_.remove(n); }
-
-  public void clearChildren() { children_.clear(); }
-
-  public void addChildren(List<? extends NodeType> l) {
-    children_.addAll(l);
-  }
-
-  public boolean hasChild(int i) { return children_.size() > i; }
-  public void setChild(int index, NodeType n) { children_.set(index, n); }
-  public ArrayList<NodeType> getChildren() { return children_; }
-
-  /**
-   * Count the total number of nodes in this tree. Leaf node will return 1.
-   * Non-leaf node will include all its children.
-   */
-  public int numNodes() {
-    int numNodes = 1;
-    for (NodeType child: children_) numNodes += child.numNodes();
-    return numNodes;
-  }
-
-  /**
-   * Add all nodes in the tree that satisfy 'predicate' to the list 'matches'
-   * This node is checked first, followed by its children in order. If the node
-   * itself matches, the children are skipped.
-   */
-  public <C extends TreeNode<NodeType>, D extends C> void collect(
-      Predicate<? super C> predicate, Collection<D> matches) {
-    // TODO: the semantics of this function are very strange. contains()
-    // checks using .equals() on the nodes. In the case of literals, slotrefs
-    // and maybe others, two different tree node objects can be equal and
-    // this function would only return one of them. This is not intuitive.
-    // We rely on these semantics to not have duplicate nodes. Investigate this.
-    if (predicate.apply((C) this) && !matches.contains(this)) {
-      matches.add((D) this);
-      return;
-    }
-    for (NodeType child: children_) child.collect(predicate, matches);
-  }
-
-  /**
-   * Add all nodes in the tree that are of class 'cl' to the list 'matches'.
-   * This node is checked first, followed by its children in order. If the node
-   * itself is of class 'cl', the children are skipped.
-   */
-  public <C extends TreeNode<NodeType>, D extends C> void collect(
-      Class cl, Collection<D> matches) {
-    if (cl.equals(getClass())) {
-      matches.add((D) this);
-      return;
-    }
-    for (NodeType child: children_) child.collect(cl, matches);
-  }
-
-  /**
-   * Add all nodes in the tree that satisfy 'predicate' to the list 'matches'
-   * This node is checked first, followed by its children in order. All nodes
-   * that match in the subtree are added.
-   */
-  public <C extends TreeNode<NodeType>, D extends C> void collectAll(
-      Predicate<? super C> predicate, List<D> matches) {
-    if (predicate.apply((C) this)) matches.add((D) this);
-    for (NodeType child: children_) child.collectAll(predicate, matches);
-  }
-
-  /**
-   * For each expression in 'nodeList', collect all subexpressions satisfying 'predicate'
-   * into 'matches'
-   */
-  public static <C extends TreeNode<C>, D extends C> void collect(
-      Collection<C> nodeList, Predicate<? super C> predicate, Collection<D> matches) {
-    for (C node: nodeList) node.collect(predicate, matches);
-  }
-
-  /**
-   * For each expression in 'nodeList', collect all subexpressions of class 'cl'
-   * into 'matches'
-   */
-  public static <C extends TreeNode<C>, D extends C> void collect(
-      Collection<C> nodeList, Class cl, Collection<D> matches) {
-    for (C node: nodeList) node.collect(cl, matches);
-  }
-
-  /**
-   * Return true if this node or any of its children satisfy 'predicate'.
-   */
-  public <C extends TreeNode<NodeType>> boolean contains(
-      Predicate<? super C> predicate) {
-    if (predicate.apply((C) this)) return true;
-    for (NodeType child: children_) if (child.contains(predicate)) return true;
-    return false;
-  }
-
-  /**
-   * Return true if this node or any of its children is an instance of class 'cl'.
-   */
-  public boolean contains(Class cl) {
-    if (cl.equals(getClass())) return true;
-    for (NodeType child: children_) if (child.contains(cl)) return true;
-    return false;
-  }
-
-  /**
-   * For each node in nodeList, return true if any subexpression satisfies
-   * contains('predicate').
-   */
-  public static <C extends TreeNode<C>, D extends C> boolean contains(
-      Collection<C> nodeList, Predicate<? super C> predicate) {
-    for (C node: nodeList) if (node.contains(predicate)) return true;
-    return false;
-  }
-
-  /**
-   * Return true if any node in nodeList contains children of class cl.
-   */
-  public static <C extends TreeNode<C>> boolean contains(
-      List<C> nodeList, Class cl) {
-    for (C node: nodeList) if (node.contains(cl)) return true;
-    return false;
-  }
-
-  /**
-   * Returns the first node/child of class cl (depth-first traversal).
-   */
-  public <C extends NodeType> C findFirstOf(Class<C> cl) {
-    if (this.getClass().equals(cl)) return (C) this;
-    for (NodeType child: children_) {
-      NodeType result = child.findFirstOf(cl);
-      if (result != null) return (C) result;
-    }
-    return null;
-  }
-
-  /**
-   * Visitor pattern accept method
-   */
-  public <C extends TreeNode<NodeType>> void accept(Visitor<C> visitor) {
-    visitor.visit((C) this);
-    for (NodeType p: children_) p.accept(visitor);
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/b544f019/fe/src/main/java/com/cloudera/impala/extdatasource/ApiVersion.java
----------------------------------------------------------------------
diff --git a/fe/src/main/java/com/cloudera/impala/extdatasource/ApiVersion.java b/fe/src/main/java/com/cloudera/impala/extdatasource/ApiVersion.java
deleted file mode 100644
index d2285a4..0000000
--- a/fe/src/main/java/com/cloudera/impala/extdatasource/ApiVersion.java
+++ /dev/null
@@ -1,53 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-package com.cloudera.impala.extdatasource;
-
-import com.cloudera.impala.extdatasource.v1.ExternalDataSource;
-import com.google.common.base.Strings;
-
-/**
- * Enumerates the valid versions of the {@link ExternalDataSource} API.
- */
-public enum ApiVersion {
-  V1(com.cloudera.impala.extdatasource.v1.ExternalDataSource.class);
-
-  private final Class<?> apiInterface_;
-
-  ApiVersion(Class<?> interfaceClass) {
-    apiInterface_ = interfaceClass;
-  }
-
-  /**
-   * Gets the {@link Class} for the interface this API version represents.
-   */
-  public Class<?> getApiInterface() { return apiInterface_; }
-
-  /**
-   * Parses the API version from the string. Is case-insensitive.
-   * @return The value of the ApiVersion enum represented by the string or null
-   *         if the string is not a valid ApiVersion.
-   */
-  public static ApiVersion parseApiVersion(String apiVersionString) {
-    if (Strings.isNullOrEmpty(apiVersionString)) return null;
-    try {
-      return valueOf(apiVersionString.toUpperCase());
-    } catch (IllegalArgumentException ex) {
-      return null;
-    }
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/b544f019/fe/src/main/java/com/cloudera/impala/extdatasource/ExternalDataSourceExecutor.java
----------------------------------------------------------------------
diff --git a/fe/src/main/java/com/cloudera/impala/extdatasource/ExternalDataSourceExecutor.java b/fe/src/main/java/com/cloudera/impala/extdatasource/ExternalDataSourceExecutor.java
deleted file mode 100644
index 3af470f..0000000
--- a/fe/src/main/java/com/cloudera/impala/extdatasource/ExternalDataSourceExecutor.java
+++ /dev/null
@@ -1,267 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-package com.cloudera.impala.extdatasource;
-
-import java.io.File;
-import java.lang.reflect.Constructor;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.Map;
-
-import org.apache.commons.lang.ArrayUtils;
-import org.apache.thrift.TException;
-import org.apache.thrift.TSerializer;
-import org.apache.thrift.protocol.TBinaryProtocol;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.cloudera.impala.common.ImpalaException;
-import com.cloudera.impala.common.ImpalaRuntimeException;
-import com.cloudera.impala.common.InternalException;
-import com.cloudera.impala.common.JniUtil;
-import com.cloudera.impala.extdatasource.thrift.TCloseParams;
-import com.cloudera.impala.extdatasource.thrift.TCloseResult;
-import com.cloudera.impala.extdatasource.thrift.TGetNextParams;
-import com.cloudera.impala.extdatasource.thrift.TGetNextResult;
-import com.cloudera.impala.extdatasource.thrift.TOpenParams;
-import com.cloudera.impala.extdatasource.thrift.TOpenResult;
-import com.cloudera.impala.extdatasource.thrift.TPrepareParams;
-import com.cloudera.impala.extdatasource.thrift.TPrepareResult;
-import com.cloudera.impala.extdatasource.v1.ExternalDataSource;
-import com.cloudera.impala.thrift.TErrorCode;
-import com.cloudera.impala.thrift.TStatus;
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-
-/**
- * Wraps and executes an ExternalDataSource specified in an external jar. Used
- * in planning to call prepare() and in the backend to fetch results. The
- * executor takes the API version and abstracts the versioning from the caller,
- * e.g. calling the correct API interface and massaging any parameters that can
- * be handled here. There are thrift structures for all param and return types
- * representing the necessary structures. If future versions of the API are
- * added, the executor should be updated to call the appropriate API and handle
- * any differences. It is assumed that the API is updated in a way that
- * backwards compatibility is possible.
- */
-public class ExternalDataSourceExecutor {
-  private final static Logger LOG = LoggerFactory.getLogger(
-      ExternalDataSourceExecutor.class);
-  private final static TBinaryProtocol.Factory protocolFactory_ =
-      new TBinaryProtocol.Factory();
-
-  // Init string prefix used to indicate if the class should be cached. When this
-  // is specified, the Class is loaded and initialized at most once. Instances of
-  // the cached Class are still created for every query.
-  private final static String CACHE_CLASS_PREFIX = "CACHE_CLASS::";
-
-  // Map of class name to cached ExternalDataSource classes.
-  // Protected by cachedClassesLock_.
-  private final static Map<String, Class<?>> cachedClasses_ =
-      Maps.newHashMap();
-
-  // Number of cache hits/misses in cachedClasses_. Protected by cachedClassesLock_.
-  private static long numClassCacheHits_ = 0;
-  private static long numClassCacheMisses_ = 0;
-
-  // Protects cachedClasses_, numClassCacheHits_, and numClassCacheMisses_.
-  private final static Object cachedClassesLock_ = new Object();
-
-  private final ApiVersion apiVersion_;
-  private final ExternalDataSource dataSource_;
-  private final String jarPath_;
-  private final String className_;
-  private final String initString_;
-
-  public static long getNumClassCacheHits() {
-    synchronized (cachedClassesLock_) {
-      return numClassCacheHits_;
-    }
-  }
-
-  public static long getNumClassCacheMisses() {
-    synchronized (cachedClassesLock_) {
-      return numClassCacheMisses_;
-    }
-  }
-
-  /**
-   * @param jarPath The local path to the jar containing the ExternalDataSource.
-   * @param className The name of the class implementing the ExternalDataSource.
-   * @param apiVersionStr The API version the ExternalDataSource implements.
-   *                         Must be a valid value of {@link ApiVersion}.
-   * @param initString The init string registered with this data source.
-   */
-  public ExternalDataSourceExecutor(String jarPath, String className,
-      String apiVersionStr, String initString) throws ImpalaException {
-    Preconditions.checkNotNull(jarPath);
-
-    apiVersion_ = ApiVersion.valueOf(apiVersionStr);
-    if (apiVersion_ == null) {
-      throw new ImpalaRuntimeException("Invalid API version: " + apiVersionStr);
-    }
-    jarPath_ = jarPath;
-    className_ = className;
-    initString_ = initString;
-
-    try {
-      Class<?> c = getDataSourceClass();
-      Constructor<?> ctor = c.getConstructor();
-      dataSource_ = (ExternalDataSource) ctor.newInstance();
-    } catch (Exception ex) {
-      throw new ImpalaRuntimeException(String.format("Unable to load external data " +
-          "source library from path=%s className=%s apiVersion=%s", jarPath,
-          className, apiVersionStr), ex);
-    }
-  }
-
-  /**
-   * Returns the ExternalDataSource class, loading the jar if necessary. The
-   * class is cached if initString_ starts with CACHE_CLASS_PREFIX.
-   */
-  private Class<?> getDataSourceClass() throws Exception {
-    Class<?> c = null;
-    // Cache map key needs to contain both the class name and init string in case
-    // the same class is used for multiple tables where some are cached and others
-    // are not.
-    String cacheMapKey = String.format("%s.%s", className_, initString_);
-    synchronized (cachedClassesLock_) {
-      c = cachedClasses_.get(cacheMapKey);
-      if (c == null) {
-        URL url = new File(jarPath_).toURI().toURL();
-        URLClassLoader loader = URLClassLoader.newInstance(
-            new URL[] { url }, getClass().getClassLoader());
-        c = Class.forName(className_, true, loader);
-        if (!ArrayUtils.contains(c.getInterfaces(), apiVersion_.getApiInterface())) {
-          throw new ImpalaRuntimeException(String.format(
-              "Class '%s' does not implement interface '%s' required for API version %s",
-              className_, apiVersion_.getApiInterface().getName(), apiVersion_.name()));
-        }
-        // Only cache the class if the init string starts with CACHE_CLASS_PREFIX
-        if (initString_ != null && initString_.startsWith(CACHE_CLASS_PREFIX)) {
-          cachedClasses_.put(cacheMapKey, c);
-        }
-        LOG.info("Loaded jar for class {} at path {}", className_, jarPath_);
-        numClassCacheMisses_++;
-      } else {
-        numClassCacheHits_++;
-      }
-    }
-    return c;
-  }
-
-  public byte[] prepare(byte[] thriftParams) throws ImpalaException {
-    TPrepareParams params = new TPrepareParams();
-    JniUtil.deserializeThrift(protocolFactory_, params, thriftParams);
-    TPrepareResult result = prepare(params);
-    try {
-      return new TSerializer(protocolFactory_).serialize(result);
-    } catch (TException e) {
-      throw new InternalException(e.getMessage(), e);
-    }
-  }
-
-  public byte[] open(byte[] thriftParams) throws ImpalaException {
-    TOpenParams params = new TOpenParams();
-    JniUtil.deserializeThrift(protocolFactory_, params, thriftParams);
-    TOpenResult result = open(params);
-    try {
-      return new TSerializer(protocolFactory_).serialize(result);
-    } catch (TException e) {
-      throw new InternalException(e.getMessage(), e);
-    }
-  }
-
-  public byte[] getNext(byte[] thriftParams) throws ImpalaException {
-    TGetNextParams params = new TGetNextParams();
-    JniUtil.deserializeThrift(protocolFactory_, params, thriftParams);
-    TGetNextResult result = getNext(params);
-    try {
-      return new TSerializer(protocolFactory_).serialize(result);
-    } catch (TException e) {
-      throw new InternalException(e.getMessage(), e);
-    }
-  }
-
-  public byte[] close(byte[] thriftParams) throws ImpalaException {
-    TCloseParams params = new TCloseParams();
-    JniUtil.deserializeThrift(protocolFactory_, params, thriftParams);
-    TCloseResult result = close(params);
-    try {
-      return new TSerializer(protocolFactory_).serialize(result);
-    } catch (TException e) {
-      throw new InternalException(e.getMessage(), e);
-    }
-  }
-
-  // Helper method to log the exception to capture the stack and return an error TStatus
-  private TStatus logAndMakeErrorStatus(String opName, Exception e) {
-    String exceptionMessage = e.getMessage();
-    if (exceptionMessage == null) {
-      exceptionMessage = "No error message returned by data source. Check the " +
-          "impalad log for more information.";
-    }
-    String errorMessage = String.format(
-        "Error in data source (path=%s, class=%s, version=%s) %s: %s",
-        jarPath_, className_, apiVersion_.name(), opName,
-        exceptionMessage);
-    LOG.error(errorMessage, e); // Logs the stack
-    return new TStatus(TErrorCode.RUNTIME_ERROR, Lists.newArrayList(errorMessage));
-  }
-
-  public TPrepareResult prepare(TPrepareParams params) {
-    try {
-      TPrepareResult result = dataSource_.prepare(params);
-      result.validate();
-      return result;
-    } catch (Exception e) {
-      return new TPrepareResult(logAndMakeErrorStatus("prepare()", e));
-    }
-  }
-
-  public TOpenResult open(TOpenParams params) {
-    try {
-      TOpenResult result = dataSource_.open(params);
-      result.validate();
-      return result;
-    } catch (Exception e) {
-      return new TOpenResult(logAndMakeErrorStatus("open()", e));
-    }
-  }
-
-  public TGetNextResult getNext(TGetNextParams params) {
-    try {
-      TGetNextResult result = dataSource_.getNext(params);
-      result.validate();
-      return result;
-    } catch (Exception e) {
-      return new TGetNextResult(logAndMakeErrorStatus("getNext()", e));
-    }
-  }
-
-  public TCloseResult close(TCloseParams params) {
-    try {
-      TCloseResult result = dataSource_.close(params);
-      result.validate();
-      return result;
-    } catch (Exception e) {
-      return new TCloseResult(logAndMakeErrorStatus("close()", e));
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/b544f019/fe/src/main/java/com/cloudera/impala/hive/executor/ImpalaBigIntWritable.java
----------------------------------------------------------------------
diff --git a/fe/src/main/java/com/cloudera/impala/hive/executor/ImpalaBigIntWritable.java b/fe/src/main/java/com/cloudera/impala/hive/executor/ImpalaBigIntWritable.java
deleted file mode 100644
index f410ddf..0000000
--- a/fe/src/main/java/com/cloudera/impala/hive/executor/ImpalaBigIntWritable.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-package com.cloudera.impala.hive.executor;
-
-import org.apache.hadoop.io.LongWritable;
-
-import com.cloudera.impala.util.UnsafeUtil;
-
-@SuppressWarnings("restriction")
-public class ImpalaBigIntWritable extends LongWritable {
-  // Ptr (to native heap) where the value should be read from and written to.
-  private final long ptr_;
-
-  public ImpalaBigIntWritable(long ptr) {
-    ptr_ = ptr;
-  }
-
-  @Override
-  public long get() { return UnsafeUtil.UNSAFE.getLong(ptr_); }
-
-  @Override
-  public void set(long v) { UnsafeUtil.UNSAFE.putLong(ptr_, v); }
-}

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/b544f019/fe/src/main/java/com/cloudera/impala/hive/executor/ImpalaBooleanWritable.java
----------------------------------------------------------------------
diff --git a/fe/src/main/java/com/cloudera/impala/hive/executor/ImpalaBooleanWritable.java b/fe/src/main/java/com/cloudera/impala/hive/executor/ImpalaBooleanWritable.java
deleted file mode 100644
index f20f49e..0000000
--- a/fe/src/main/java/com/cloudera/impala/hive/executor/ImpalaBooleanWritable.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-package com.cloudera.impala.hive.executor;
-
-import org.apache.hadoop.io.BooleanWritable;
-
-import com.cloudera.impala.util.UnsafeUtil;
-
-@SuppressWarnings("restriction")
-public class ImpalaBooleanWritable extends BooleanWritable {
-  // Ptr (to native heap) where the value should be read from and written to.
-  private final long ptr_;
-
-  public ImpalaBooleanWritable(long ptr) {
-    ptr_ = ptr;
-  }
-
-  @Override
-  public boolean get() { return UnsafeUtil.UNSAFE.getByte(ptr_) != 0; }
-
-  @Override
-  public void set(boolean v) { UnsafeUtil.UNSAFE.putByte(ptr_, v ? (byte)1 : 0); }
-}

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/b544f019/fe/src/main/java/com/cloudera/impala/hive/executor/ImpalaBytesWritable.java
----------------------------------------------------------------------
diff --git a/fe/src/main/java/com/cloudera/impala/hive/executor/ImpalaBytesWritable.java b/fe/src/main/java/com/cloudera/impala/hive/executor/ImpalaBytesWritable.java
deleted file mode 100644
index ce6fc0c..0000000
--- a/fe/src/main/java/com/cloudera/impala/hive/executor/ImpalaBytesWritable.java
+++ /dev/null
@@ -1,56 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-package com.cloudera.impala.hive.executor;
-
-import org.apache.hadoop.io.BytesWritable;
-
-/**
- * Impala writable type that implements the BytesWritable interface. The data
- * marshalling is handled by the underlying {@link ImpalaStringWritable} object.
- */
-public class ImpalaBytesWritable extends BytesWritable {
-  private final ImpalaStringWritable string_;
-
-  public ImpalaBytesWritable(long ptr) {
-    string_ = new ImpalaStringWritable(ptr);
-  }
-
-  @Override
-  public byte[] copyBytes() {
-    byte[] src = getBytes();
-    return src.clone();
-  }
-
-  @Override
-  public byte[] get() { return getBytes(); }
-  @Override
-  public byte[] getBytes() { return string_.getBytes(); }
-  @Override
-  public int getCapacity() { return string_.getCapacity(); }
-  @Override
-  public int getLength() { return string_.getLength(); }
-
-  public ImpalaStringWritable getStringWritable() { return string_; }
-
-  @Override
-  public void set(byte[] v, int offset, int len) { string_.set(v, offset, len); }
-  @Override
-  public void setCapacity(int newCap) { string_.setCapacity(newCap); }
-  @Override
-  public void setSize(int size) { string_.setSize(size); }
-}

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/b544f019/fe/src/main/java/com/cloudera/impala/hive/executor/ImpalaDoubleWritable.java
----------------------------------------------------------------------
diff --git a/fe/src/main/java/com/cloudera/impala/hive/executor/ImpalaDoubleWritable.java b/fe/src/main/java/com/cloudera/impala/hive/executor/ImpalaDoubleWritable.java
deleted file mode 100644
index cc96895..0000000
--- a/fe/src/main/java/com/cloudera/impala/hive/executor/ImpalaDoubleWritable.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-package com.cloudera.impala.hive.executor;
-
-import org.apache.hadoop.hive.serde2.io.DoubleWritable;
-
-import com.cloudera.impala.util.UnsafeUtil;
-
-@SuppressWarnings("restriction")
-public class ImpalaDoubleWritable extends DoubleWritable {
-  // Ptr (to native heap) where the value should be read from and written to.
-  private final long ptr_;
-
-  public ImpalaDoubleWritable(long ptr) {
-    ptr_ = ptr;
-  }
-
-  @Override
-  public double get() { return UnsafeUtil.UNSAFE.getDouble(ptr_); }
-
-  @Override
-  public void set(double v) { UnsafeUtil.UNSAFE.putDouble(ptr_, v); }
-}

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/b544f019/fe/src/main/java/com/cloudera/impala/hive/executor/ImpalaFloatWritable.java
----------------------------------------------------------------------
diff --git a/fe/src/main/java/com/cloudera/impala/hive/executor/ImpalaFloatWritable.java b/fe/src/main/java/com/cloudera/impala/hive/executor/ImpalaFloatWritable.java
deleted file mode 100644
index b68ee69..0000000
--- a/fe/src/main/java/com/cloudera/impala/hive/executor/ImpalaFloatWritable.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-package com.cloudera.impala.hive.executor;
-
-import org.apache.hadoop.io.FloatWritable;
-
-import com.cloudera.impala.util.UnsafeUtil;
-
-@SuppressWarnings("restriction")
-public class ImpalaFloatWritable extends FloatWritable {
-  // Ptr (to native heap) where the value should be read from and written to.
-  private final long ptr_;
-
-  public ImpalaFloatWritable(long ptr) {
-    ptr_ = ptr;
-  }
-
-  @Override
-  public float get() { return UnsafeUtil.UNSAFE.getFloat(ptr_); }
-
-  @Override
-  public void set(float v) { UnsafeUtil.UNSAFE.putFloat(ptr_, v); }
-}

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/b544f019/fe/src/main/java/com/cloudera/impala/hive/executor/ImpalaIntWritable.java
----------------------------------------------------------------------
diff --git a/fe/src/main/java/com/cloudera/impala/hive/executor/ImpalaIntWritable.java b/fe/src/main/java/com/cloudera/impala/hive/executor/ImpalaIntWritable.java
deleted file mode 100644
index afe59c4..0000000
--- a/fe/src/main/java/com/cloudera/impala/hive/executor/ImpalaIntWritable.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-package com.cloudera.impala.hive.executor;
-
-import org.apache.hadoop.io.IntWritable;
-
-import com.cloudera.impala.util.UnsafeUtil;
-
-@SuppressWarnings("restriction")
-public class ImpalaIntWritable extends IntWritable {
-  // Ptr (to native heap) where the value should be read from and written to.
-  private final long ptr_;
-
-  public ImpalaIntWritable(long ptr) {
-    ptr_ = ptr;
-  }
-
-  @Override
-  public int get() { return UnsafeUtil.UNSAFE.getInt(ptr_); }
-
-  @Override
-  public void set(int v) { UnsafeUtil.UNSAFE.putInt(ptr_, v); }
-}

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/b544f019/fe/src/main/java/com/cloudera/impala/hive/executor/ImpalaSmallIntWritable.java
----------------------------------------------------------------------
diff --git a/fe/src/main/java/com/cloudera/impala/hive/executor/ImpalaSmallIntWritable.java b/fe/src/main/java/com/cloudera/impala/hive/executor/ImpalaSmallIntWritable.java
deleted file mode 100644
index 5a8e346..0000000
--- a/fe/src/main/java/com/cloudera/impala/hive/executor/ImpalaSmallIntWritable.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-package com.cloudera.impala.hive.executor;
-
-import org.apache.hadoop.hive.serde2.io.ShortWritable;
-
-import com.cloudera.impala.util.UnsafeUtil;
-
-@SuppressWarnings("restriction")
-public class ImpalaSmallIntWritable extends ShortWritable {
-  // Ptr (to native heap) where the value should be read from and written to.
-  private final long ptr_;
-
-  public ImpalaSmallIntWritable(long ptr) {
-    ptr_ = ptr;
-  }
-
-  @Override
-  public short get() { return UnsafeUtil.UNSAFE.getShort(ptr_); }
-
-  @Override
-  public void set(short v) { UnsafeUtil.UNSAFE.putShort(ptr_, v); }
-}

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/b544f019/fe/src/main/java/com/cloudera/impala/hive/executor/ImpalaStringWritable.java
----------------------------------------------------------------------
diff --git a/fe/src/main/java/com/cloudera/impala/hive/executor/ImpalaStringWritable.java b/fe/src/main/java/com/cloudera/impala/hive/executor/ImpalaStringWritable.java
deleted file mode 100644
index a9dca74..0000000
--- a/fe/src/main/java/com/cloudera/impala/hive/executor/ImpalaStringWritable.java
+++ /dev/null
@@ -1,117 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-package com.cloudera.impala.hive.executor;
-
-import java.nio.ByteBuffer;
-
-import com.cloudera.impala.util.UnsafeUtil;
-
-@SuppressWarnings("restriction")
-/**
- * Underlying class for Text and Bytes writable. This class understands marshalling
- * values that map to StringValue in the BE.
- * StringValue is replicated here:
- * struct StringValue {
- *   char* ptr;
- *   int len;
- * };
- */
-public class ImpalaStringWritable {
-  // The length is 8 bytes into the struct.
-  static public final int STRING_VALUE_LEN_OFFSET = 8;
-
-  // Ptr (to native heap) where the value should be read from and written to.
-  // This needs to be ABI compatible with the BE StringValue class
-  private final long stringValPtr_;
-
-  // Array object to convert between native and java heap (i.e. byte[]).
-  private ByteBuffer array_;
-
-  // Set if this object had to allocate from the native heap on the java side. If this
-  // is set, it will always be stringValPtr_->ptr
-  // We only need to allocate from the java side if we are trying to set the
-  // StringValue to a bigger size than what the native side allocated.
-  // If this object is used as a read-only input argument, this value will stay
-  // 0.
-  private long bufferPtr_;
-
-  // Allocation size of stringValPtr_'s ptr.
-  private int bufferCapacity_;
-
-  // Creates a string writable backed by a StringValue object. Ptr must be a valid
-  // StringValue (in the native heap).
-  public ImpalaStringWritable(long ptr) {
-    stringValPtr_ = ptr;
-    bufferPtr_= 0;
-    bufferCapacity_ = getLength();
-    array_ = ByteBuffer.allocate(0);
-  }
-
-  /*
-   * Implement finalize() to clean up any allocations from the native heap.
-   */
-  @Override
-  protected void finalize() throws Throwable {
-    UnsafeUtil.UNSAFE.freeMemory(bufferPtr_);
-    super.finalize();
-  }
-
-  // Returns the underlying bytes as a byte[]
-  public byte[] getBytes() {
-    int len = getLength();
-    // TODO: reuse this array.
-    array_ = ByteBuffer.allocate(len);
-    byte[] buffer = array_.array();
-
-    long srcPtr = UnsafeUtil.UNSAFE.getLong(stringValPtr_);
-    UnsafeUtil.Copy(buffer, 0, srcPtr, len);
-    return buffer;
-  }
-
-  // Returns the capacity of the underlying array
-  public int getCapacity() {
-    return bufferCapacity_;
-  }
-
-  // Updates the new capacity. No-op if the new capacity is smaller.
-  public void setCapacity(int newCap) {
-    if (newCap <= bufferCapacity_) return;
-    bufferPtr_ = UnsafeUtil.UNSAFE.reallocateMemory(bufferPtr_, newCap);
-    UnsafeUtil.UNSAFE.putLong(stringValPtr_, bufferPtr_);
-    bufferCapacity_ = newCap;
-  }
-
-  // Returns the length of the string
-  public int getLength() {
-    return UnsafeUtil.UNSAFE.getInt(stringValPtr_ + STRING_VALUE_LEN_OFFSET);
-  }
-
-  // Updates the length of the string. If the new length is bigger,
-  // the additional bytes are undefined.
-  public void setSize(int s) {
-    setCapacity(s);
-    UnsafeUtil.UNSAFE.putInt(stringValPtr_ + 8, s);
-  }
-
-  // Sets (v[offset], len) to the underlying buffer, growing it as necessary.
-  public void set(byte[] v, int offset, int len) {
-    setSize(len);
-    long strPtr = UnsafeUtil.UNSAFE.getLong(stringValPtr_);
-    UnsafeUtil.Copy(strPtr, v, offset, len);
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/b544f019/fe/src/main/java/com/cloudera/impala/hive/executor/ImpalaTextWritable.java
----------------------------------------------------------------------
diff --git a/fe/src/main/java/com/cloudera/impala/hive/executor/ImpalaTextWritable.java b/fe/src/main/java/com/cloudera/impala/hive/executor/ImpalaTextWritable.java
deleted file mode 100644
index e17a4df..0000000
--- a/fe/src/main/java/com/cloudera/impala/hive/executor/ImpalaTextWritable.java
+++ /dev/null
@@ -1,47 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-package com.cloudera.impala.hive.executor;
-
-import org.apache.hadoop.io.Text;
-
-/**
- * Impala writable type that implements the Text interface. The data marshalling is
- * handled by the underlying {@link ImpalaStringWritable} object.
- */
-public class ImpalaTextWritable extends Text {
-  private final ImpalaStringWritable string_;
-
-  public ImpalaTextWritable(long ptr) {
-    string_ = new ImpalaStringWritable(ptr);
-  }
-
-  @Override
-  public String toString() { return new String(getBytes()); }
-  @Override
-  public byte[] getBytes() { return string_.getBytes(); }
-  @Override
-  public int getLength() { return string_.getLength(); }
-
-  public ImpalaStringWritable getStringWritable() { return string_; }
-
-  @Override
-  public void set(byte[] v, int offset, int len) {
-    string_.set(v, offset, len);
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/b544f019/fe/src/main/java/com/cloudera/impala/hive/executor/ImpalaTinyIntWritable.java
----------------------------------------------------------------------
diff --git a/fe/src/main/java/com/cloudera/impala/hive/executor/ImpalaTinyIntWritable.java b/fe/src/main/java/com/cloudera/impala/hive/executor/ImpalaTinyIntWritable.java
deleted file mode 100644
index 17a7b14..0000000
--- a/fe/src/main/java/com/cloudera/impala/hive/executor/ImpalaTinyIntWritable.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-package com.cloudera.impala.hive.executor;
-
-import org.apache.hadoop.hive.serde2.io.ByteWritable;
-
-import com.cloudera.impala.util.UnsafeUtil;
-
-@SuppressWarnings("restriction")
-public class ImpalaTinyIntWritable extends ByteWritable {
-  // Ptr (to native heap) where the value should be read from and written to.
-  private final long ptr_;
-
-  public ImpalaTinyIntWritable(long ptr) {
-    ptr_ = ptr;
-  }
-
-  @Override
-  public byte get() { return UnsafeUtil.UNSAFE.getByte(ptr_); }
-
-  @Override
-  public void set(byte v) { UnsafeUtil.UNSAFE.putByte(ptr_, v); }
-}