You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@drill.apache.org by ja...@apache.org on 2015/09/14 07:28:51 UTC

[04/15] drill git commit: DRILL-3180: JDBC Storage Plugin updates.

http://git-wip-us.apache.org/repos/asf/drill/blob/e12cd470/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcClient.java
----------------------------------------------------------------------
diff --git a/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcClient.java b/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcClient.java
deleted file mode 100644
index f3bf81d..0000000
--- a/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcClient.java
+++ /dev/null
@@ -1,300 +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 org.apache.drill.exec.store.mpjdbc;
-
-import java.sql.Connection;
-import java.sql.DatabaseMetaData;
-import java.sql.DriverManager;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.calcite.schema.Table;
-import org.apache.calcite.schema.Function;
-import org.apache.calcite.schema.Schema;
-import org.apache.calcite.schema.SchemaPlus;
-import org.apache.calcite.schema.Statistic;
-import org.apache.calcite.schema.Schema.TableType;
-import org.apache.calcite.schema.Function;
-import org.apache.calcite.linq4j.Extensions;
-import org.apache.drill.common.exceptions.DrillRuntimeException;
-import org.apache.drill.exec.store.AbstractSchema;
-
-import com.google.common.collect.ImmutableList;
-
-import org.apache.drill.exec.planner.logical.DrillTable;
-import org.apache.drill.exec.planner.logical.DynamicDrillTable;
-
-class MPJdbcClient {
-    static final org.slf4j.Logger logger = org.slf4j.LoggerFactory
-       .getLogger(MPJdbcClient.class);
-
-    private MPJdbcClientOptions clientOptions;
-    private Connection conn;
-    private DatabaseMetaData metadata;
-    private String uri;
-    private OdbcSchema defaultSchema;
-    private MPJdbcFormatPlugin plugin;
-    private String plugName;
-
-    public MPJdbcClient(String uri, MPJdbcClientOptions clientOptions,
-            MPJdbcFormatPlugin plugin) {
-        try {
-            Class.forName(clientOptions.getDriver()).newInstance();
-            this.clientOptions = clientOptions;
-
-            String user = this.clientOptions.getUser();
-            String passwd = this.clientOptions.getPassword();
-            this.plugin = plugin;
-            this.uri = uri;
-
-            if (user == null || user.length() == 0 || passwd.length() == 0) {
-                logger.info("username, password assumed to be in the uri");
-                this.conn = DriverManager.getConnection(uri);
-            } else {
-                this.conn = DriverManager.getConnection(uri, user, passwd);
-            }
-            this.metadata = this.conn.getMetaData();
-            this.plugName = plugin.getName();
-        } catch (InstantiationException e) {
-            // TODO Auto-generated catch block
-           new DrillRuntimeException(e);
-        } catch (IllegalAccessException e) {
-            // TODO Auto-generated catch block
-            new DrillRuntimeException(e);
-        } catch (ClassNotFoundException e) {
-            // TODO Auto-generated catch block
-            new DrillRuntimeException(e);
-        } catch (SQLException e) {
-            new DrillRuntimeException(e);
-        }
-    }
-
-    public Connection getConnection() {
-        return this.conn;
-    }
-
-    public Map<String, Integer> getSchemas() {
-        Map<String, Integer> lst = new HashMap<String, Integer>();
-        try {
-            ResultSet rs = this.metadata.getCatalogs();
-            while (rs.next()) {
-                Integer val = lst.get(rs.getString(1));
-                if (val == null) {
-                    lst.put(rs.getString(1), new Integer(1));
-                }
-            }
-
-        } catch (SQLException e) {
-            new DrillRuntimeException(e);
-        }
-        return lst;
-    }
-
-    public Set<String> getTables(String catalog) {
-        Set<String> lst = new HashSet<String>();
-
-        String[] typeList = { "TABLE", "VIEW" };
-        try {
-            ResultSet rs = this.metadata
-                    .getTables(catalog,null, null, null);
-            while (rs.next()) {
-                if (rs.getString(1) != null) {
-                  //lst.add(rs.getString(1) + "." + rs.getString("TABLE_NAME"));
-                  lst.add(rs.getString("TABLE_NAME"));
-                } else {
-                    lst.add(rs.getString("TABLE_NAME"));
-                }
-            }
-
-        } catch (SQLException e) {
-            throw new DrillRuntimeException(e);
-        }
-        return lst;
-    }
-
-    public List<String> getDatabases() {
-        List<String> lst = new ArrayList<String>();
-        try {
-            ResultSet rs = this.metadata.getCatalogs();
-            while (rs.next()) {
-                lst.add(rs.getString(0));
-            }
-        } catch (SQLException e) {
-            e.printStackTrace();
-        }
-        return lst;
-    }
-
-    public void close() {
-        // TODO Auto-generated method stub
-        try {
-            this.conn.close();
-        } catch (SQLException e) {
-            e.printStackTrace();
-        }
-
-    }
-
-    public OdbcSchema getSchema() {
-        List<String> l = new ArrayList<String>();
-        String currentSchema = MPJdbcCnxnManager.getClient(uri, clientOptions,
-                plugin).getCurrentSchema();
-        defaultSchema = new OdbcSchema(currentSchema);
-        return defaultSchema;
-    }
-
-    public OdbcSchema getSchema(String name) {
-        List<String> l = new ArrayList<String>();
-        OdbcSchema schema = new OdbcSchema(name);
-        return schema;
-    }
-
-    public class OdbcSchema extends AbstractSchema {
-
-        private Map<String, Integer> sub_schemas;
-        private String currentSchema;
-        private Set<String> tables;
-
-        public OdbcSchema(String name) {
-            super(ImmutableList.<String> of(), name);
-            /*currentSchema = MPJdbcCnxnManager.getClient(uri, clientOptions,
-                    plugin).getCurrentSchema();
-            if (currentSchema == null) {
-                currentSchema = MPJdbcCnxnManager.getClient(uri, clientOptions,
-                        plugin).getCurrentSchema();
-            }
-            */
-            if(name.equals("")) {
-              sub_schemas = MPJdbcCnxnManager.getClient(uri, clientOptions, plugin)
-                  .getSchemas();
-            }
-            tables = MPJdbcCnxnManager.getClient(uri, clientOptions, plugin)
-                    .getTables(name);
-        }
-
-        public OdbcSchema(List<String> parentSchemaPath, String name) {
-            super(parentSchemaPath, name);
-            currentSchema = MPJdbcCnxnManager.getClient(uri, clientOptions,
-                    plugin).getCurrentSchema();
-            if (currentSchema == null) {
-                currentSchema = "ROOT";
-            }
-            sub_schemas = MPJdbcCnxnManager.getClient(uri, clientOptions, plugin)
-                    .getSchemas();
-            // TODO Auto-generated constructor stub
-        }
-
-        @Override
-        public String getTypeName() {
-            // TODO Auto-generated method stub
-            return "odbc";
-        }
-
-        @Override
-        public AbstractSchema getSubSchema(String name) {
-            if (sub_schemas == null) {
-                sub_schemas = MPJdbcCnxnManager.getClient(uri, clientOptions,
-                        plugin).getSchemas();
-            }
-            Integer a = sub_schemas.get(name);
-            if (a == 1) {
-                return new OdbcSchema(name);
-            }
-            return null;
-        }
-
-        @Override
-        public Table getTable(String name) {
-            // TODO Auto-generated method stub
-          String tableName = null;
-          if(name.contains(".")) {
-            String[] val = name.split("\\.");
-            OdbcSchema sub = (OdbcSchema) this.getSubSchema(val[0]);
-            return sub.getTable(val[1]);
-          }
-          Iterator<String> iter = tables.iterator();
-          while(iter.hasNext()) {
-            tableName = iter.next();
-            if(tableName.equalsIgnoreCase(name)) {
-              break;
-            }
-            else {
-              tableName = null;
-            }
-          }
-          if(tableName == null) {
-            return null;
-          }
-          MPJdbcScanSpec spec = new MPJdbcScanSpec(this.name, tableName,"");
-          return new DynamicDrillTable(plugin, "odbc", spec);
-        }
-
-        @Override
-        public Set<String> getTableNames() {
-            // TODO Auto-generated method stub
-            Set<String> Tables = MPJdbcCnxnManager.getClient(uri, clientOptions,
-                    plugin).getTables(name);
-            return Tables;
-        }
-
-        @Override
-        public Set<String> getSubSchemaNames() {
-            // TODO Auto-generated method stub
-            sub_schemas = MPJdbcCnxnManager.getClient(uri, clientOptions, plugin)
-                    .getSchemas();
-            return sub_schemas.keySet();
-        }
-
-        @Override
-        public Collection<Function> getFunctions(String name) {
-            // TODO Auto-generated method stub
-            return super.getFunctions(name);
-        }
-
-        @Override
-        public AbstractSchema getDefaultSchema() {
-            return MPJdbcCnxnManager.getClient(uri, clientOptions, plugin)
-                    .getDefaultSchema();
-        }
-
-    }
-
-    public String getCurrentSchema() {
-        // TODO Auto-generated method stub
-        try {
-            return this.conn.getCatalog();
-        } catch (SQLException e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
-        }
-        return null;
-    }
-
-    public AbstractSchema getDefaultSchema() {
-        // TODO Auto-generated method stub
-        return defaultSchema;
-    }
-}

http://git-wip-us.apache.org/repos/asf/drill/blob/e12cd470/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcClientOptions.java
----------------------------------------------------------------------
diff --git a/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcClientOptions.java b/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcClientOptions.java
deleted file mode 100644
index 84b6348..0000000
--- a/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcClientOptions.java
+++ /dev/null
@@ -1,52 +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 org.apache.drill.exec.store.mpjdbc;
-
-public class MPJdbcClientOptions {
-  private String driver;
-  private String user;
-  private String passwd;
-
-  public MPJdbcClientOptions(String driver, String user, String passwd) {
-    this.driver = driver;
-    this.user = user;
-    this.passwd = passwd;
-  }
-
-  public MPJdbcClientOptions(MPJdbcFormatConfig storageConfig) {
-    this.driver = storageConfig.getDriver();
-    this.user = storageConfig.getUser();
-    this.passwd = storageConfig.getPasswd();
-  }
-
-  public String getDriver() {
-    // TODO Auto-generated method stub
-    return this.driver;
-  }
-
-  public String getUser() {
-    // TODO Auto-generated method stub
-    return this.user;
-  }
-
-  public String getPassword() {
-    // TODO Auto-generated method stub
-    return this.passwd;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/drill/blob/e12cd470/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcCnxnManager.java
----------------------------------------------------------------------
diff --git a/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcCnxnManager.java b/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcCnxnManager.java
deleted file mode 100644
index 7e43c32..0000000
--- a/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcCnxnManager.java
+++ /dev/null
@@ -1,69 +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 org.apache.drill.exec.store.mpjdbc;
-
-import java.util.concurrent.TimeUnit;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.cache.Cache;
-import com.google.common.cache.CacheBuilder;
-import com.google.common.cache.RemovalListener;
-import com.google.common.cache.RemovalNotification;
-
-import org.apache.drill.exec.store.mpjdbc.MPJdbcClientOptions;
-
-public class MPJdbcCnxnManager {
-
-  private static final Logger logger = LoggerFactory
-      .getLogger(MPJdbcCnxnManager.class);
-  private static Cache<String, MPJdbcClient> uriClientMap;
-
-  static {
-    uriClientMap = CacheBuilder.newBuilder().maximumSize(5)
-        .expireAfterAccess(10, TimeUnit.MINUTES)
-        .removalListener(new uriCloser()).build();
-  }
-
-  private static class uriCloser implements RemovalListener<String, MPJdbcClient> {
-
-    @Override
-    public synchronized void onRemoval(
-        RemovalNotification<String, MPJdbcClient> removal) {
-      removal.getValue().close();
-      logger.debug("Closed connection to {}.", removal.getKey().toString());
-    }
-
-  }
-
-  public synchronized static MPJdbcClient getClient(String uri,
-      MPJdbcClientOptions clientOptions, MPJdbcFormatPlugin plugin) {
-    MPJdbcClient client = uriClientMap.getIfPresent(uri);
-    if (client == null) {
-      client = new MPJdbcClient(uri, clientOptions,plugin);
-      if (client.getConnection() != null) {
-        uriClientMap.put(uri, client);
-      } else {
-        return null;
-      }
-    }
-
-    return client;
-  }
-}

http://git-wip-us.apache.org/repos/asf/drill/blob/e12cd470/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcFilterBuilder.java
----------------------------------------------------------------------
diff --git a/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcFilterBuilder.java b/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcFilterBuilder.java
deleted file mode 100644
index 488a55d..0000000
--- a/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcFilterBuilder.java
+++ /dev/null
@@ -1,235 +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 org.apache.drill.exec.store.mpjdbc;
-
-import java.util.List;
-
-import org.apache.drill.common.expression.BooleanOperator;
-import org.apache.drill.common.expression.FunctionCall;
-import org.apache.drill.common.expression.LogicalExpression;
-import org.apache.drill.common.expression.SchemaPath;
-import org.apache.drill.common.expression.visitors.AbstractExprVisitor;
-import org.apache.drill.exec.store.mpjdbc.MPJdbcScanSpec;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.collect.ImmutableList;
-
-public class MPJdbcFilterBuilder extends
-    AbstractExprVisitor<MPJdbcScanSpec, Void, RuntimeException> {
-  static final Logger logger = LoggerFactory
-      .getLogger(MPJdbcFilterBuilder.class);
-  final MPJdbcGroupScan groupScan;
-  final LogicalExpression le;
-  private boolean allExpressionsConverted = true;
-
-  public MPJdbcFilterBuilder(MPJdbcGroupScan groupScan,
-      LogicalExpression conditionExp) {
-    this.groupScan = groupScan;
-    this.le = conditionExp;
-  }
-
-  public MPJdbcScanSpec parseTree() {
-    MPJdbcScanSpec parsedSpec = le.accept(this, null);
-    if (parsedSpec != null) {
-      parsedSpec = mergeScanSpecs("booleanAnd", this.groupScan.getScanSpec(),
-          parsedSpec);
-    }
-    return parsedSpec;
-  }
-
-  private MPJdbcScanSpec mergeScanSpecs(String functionName,
-     MPJdbcScanSpec leftScanSpec, MPJdbcScanSpec rightScanSpec) {
-    List<String> newFilter;
-    switch (functionName) {
-    case "booleanAnd":
-      if (leftScanSpec.getFilters() != null
-          && rightScanSpec.getFilters() != null) {
-        /* newFilter = MongoUtils.andFilterAtIndex(leftScanSpec.getFilters(),
-            rightScanSpec.getFilters()); */
-      } else if (leftScanSpec.getFilters() != null) {
-        newFilter = leftScanSpec.getFilters();
-      } else {
-        newFilter = rightScanSpec.getFilters();
-      }
-      break;
-    case "booleanOr":
-     /* newFilter = OdbcUtils.orFilterAtIndex(leftScanSpec.getFilters(),
-          rightScanSpec.getFilters()); */
-    }
-    MPJdbcScanSpec mp =  new MPJdbcScanSpec(groupScan.getScanSpec().getDatabase(), groupScan
-        .getScanSpec().getTable(), groupScan.getScanSpec().getColumns());
-    return mp;
-  }
-
-  public boolean isAllExpressionsConverted() {
-    return allExpressionsConverted;
-  }
-
-  @Override
-  public MPJdbcScanSpec visitUnknown(LogicalExpression e, Void value)
-      throws RuntimeException {
-    allExpressionsConverted = false;
-    return null;
-  }
-
-  @Override
-  public MPJdbcScanSpec visitBooleanOperator(BooleanOperator op, Void value) {
-    List<LogicalExpression> args = op.args;
-    MPJdbcScanSpec nodeScanSpec = null;
-    String functionName = op.getName();
-    for (int i = 0; i < args.size(); ++i) {
-      switch (functionName) {
-      case "booleanAnd":
-      case "booleanOr":
-        if (nodeScanSpec == null) {
-          nodeScanSpec = args.get(i).accept(this, null);
-        } else {
-          MPJdbcScanSpec scanSpec = args.get(i).accept(this, null);
-          if (scanSpec != null) {
-            nodeScanSpec = mergeScanSpecs(functionName, nodeScanSpec, scanSpec);
-          } else {
-            allExpressionsConverted = false;
-          }
-        }
-        break;
-      }
-    }
-    return nodeScanSpec;
-  }
-
-  @Override
-  public MPJdbcScanSpec visitFunctionCall(FunctionCall call, Void value)
-      throws RuntimeException {
-    MPJdbcScanSpec nodeScanSpec = null;
-    String functionName = call.getName();
-    ImmutableList<LogicalExpression> args = call.args;
-    LogicalExpression nameVal = call.args.get(0);
-    LogicalExpression valueVal = null;
-    StringBuilder strBuilder = new StringBuilder();
-    if(call.args.size() >= 2) {
-      valueVal = call.args.get(1);
-    }
-    logger.info("Name Val:" + nameVal.toString());
-    logger.info("Value Val:" + valueVal.toString());
-
-    switch(functionName) {
-    case "equal":
-      break;
-     default:
-       break;
-    }
-    /*
-    if (OdbcCompareFunctionProcessor.isCompareFunction(functionName)) {
-      OdbcCompareFunctionProcessor processor = OdbcCompareFunctionProcessor
-          .process(call);
-      if (processor.isSuccess()) {
-        try {
-          nodeScanSpec = createOdbcScanSpec(processor.getFunctionName(),
-              processor.getPath(), processor.getValue());
-        } catch (Exception e) {
-          logger.error(" Failed to creare Filter ", e);
-          // throw new RuntimeException(e.getMessage(), e);
-        }
-      }
-    } else {
-      switch (functionName) {
-      case "booleanAnd":
-      case "booleanOr":
-        MPJdbcScanSpec leftScanSpec = args.get(0).accept(this, null);
-        MPJdbcScanSpec rightScanSpec = args.get(1).accept(this, null);
-        if (leftScanSpec != null && rightScanSpec != null) {
-          nodeScanSpec = mergeScanSpecs(functionName, leftScanSpec,
-              rightScanSpec);
-        } else {
-          allExpressionsConverted = false;
-          if ("booleanAnd".equals(functionName)) {
-            nodeScanSpec = leftScanSpec == null ? rightScanSpec : leftScanSpec;
-          }
-        }
-        break;
-      }
-    }
- */
-    if (nodeScanSpec == null) {
-      allExpressionsConverted = false;
-    }
-
-    return nodeScanSpec;
-  }
-
-  private MPJdbcScanSpec createOdbcScanSpec(String functionName,
-      SchemaPath field, Object fieldValue) throws ClassNotFoundException,
-      Exception {
-    // extract the field name
-    String fieldName = field.getAsUnescapedPath();
-    /*
-    OdbcCompareOp compareOp = null;
-    switch (functionName) {
-    case "equal":
-      compareOp = OdbcCompareOp.EQUAL;
-      break;
-    case "not_equal":
-      compareOp = OdbcCompareOp.NOT_EQUAL;
-      break;
-    case "greater_than_or_equal_to":
-      compareOp = OdbcCompareOp.GREATER_OR_EQUAL;
-      break;
-    case "greater_than":
-      compareOp = OdbcCompareOp.GREATER;
-      break;
-    case "less_than_or_equal_to":
-      compareOp = OdbcCompareOp.LESS_OR_EQUAL;
-      break;
-    case "less_than":
-      compareOp = OdbcCompareOp.LESS;
-      break;
-    case "isnull":
-    case "isNull":
-    case "is null":
-      compareOp = OdbcCompareOp.IFNULL;
-      break;
-    case "isnotnull":
-    case "isNotNull":
-    case "is not null":
-      compareOp = OdbcCompareOp.IFNOTNULL;
-      break;
-    }
-
-    if (compareOp != null) {
-      BasicDBObject queryFilter = new BasicDBObject();
-      if (compareOp == OdbcCompareOp.IFNULL) {
-        queryFilter.put(fieldName,
-            new BasicDBObject(OdbcCompareOp.EQUAL.getCompareOp(), null));
-      } else if (compareOp == OdbcCompareOp.IFNOTNULL) {
-        queryFilter.put(fieldName,
-            new BasicDBObject(OdbcCompareOp.NOT_EQUAL.getCompareOp(), null));
-      } else {
-        queryFilter.put(fieldName, new BasicDBObject(compareOp.getCompareOp(),
-            fieldValue));
-      }
-      return new MPJdbcScanSpec(groupScan.getScanSpec().getDbName(), groupScan
-          .getScanSpec().getCollectionName(), queryFilter);
-    }
-    */
-    return null;
-  }
-
-}
-

http://git-wip-us.apache.org/repos/asf/drill/blob/e12cd470/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcFilterRule.java
----------------------------------------------------------------------
diff --git a/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcFilterRule.java b/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcFilterRule.java
deleted file mode 100644
index c0564d0..0000000
--- a/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcFilterRule.java
+++ /dev/null
@@ -1,60 +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 org.apache.drill.exec.store.mpjdbc;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.calcite.plan.RelOptRuleCall;
-import org.apache.calcite.plan.RelOptRuleOperand;
-import org.apache.calcite.rel.type.RelDataType;
-import org.apache.calcite.rel.type.RelDataTypeField;
-import org.apache.calcite.rex.RexNode;
-import org.apache.drill.common.expression.LogicalExpression;
-import org.apache.drill.exec.planner.logical.DrillOptiq;
-import org.apache.drill.exec.planner.logical.DrillParseContext;
-import org.apache.drill.exec.planner.logical.RelOptHelper;
-import org.apache.drill.exec.planner.physical.FilterPrel;
-import org.apache.drill.exec.planner.physical.ScanPrel;
-import org.apache.drill.exec.store.StoragePluginOptimizerRule;
-
-public class MPJdbcFilterRule extends StoragePluginOptimizerRule {
-  public static final StoragePluginOptimizerRule INSTANCE = new MPJdbcFilterRule();
-  public MPJdbcFilterRule(RelOptRuleOperand operand, String description) {
-    super(operand, description);
-    // TODO Auto-generated constructor stub
-  }
-
-  public MPJdbcFilterRule() {
-    // TODO Auto-generated constructor stub
-    super(RelOptHelper.some(FilterPrel.class, RelOptHelper.any(ScanPrel.class)), "MPJdbcFilterRule");
-  }
-
-  @Override
-  public void onMatch(RelOptRuleCall call) {
-    // TODO Auto-generated method stub
-    final ScanPrel scan = (ScanPrel) call.rel(1);
-    final FilterPrel filter = (FilterPrel) call.rel(0);
-    final RexNode condition = filter.getCondition();
-    final LogicalExpression conditionExp = DrillOptiq.toDrill(new DrillParseContext(), scan, condition);
-    MPJdbcGroupScan grpScan= (MPJdbcGroupScan) scan.getGroupScan();
-    MPJdbcFilterBuilder builder = new MPJdbcFilterBuilder(grpScan,conditionExp);
-    MPJdbcScanSpec result = builder.parseTree();
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/drill/blob/e12cd470/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcFormatConfig.java
----------------------------------------------------------------------
diff --git a/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcFormatConfig.java b/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcFormatConfig.java
deleted file mode 100644
index 8edce3e..0000000
--- a/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcFormatConfig.java
+++ /dev/null
@@ -1,109 +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 org.apache.drill.exec.store.mpjdbc;
-
-import org.apache.drill.common.logical.StoragePluginConfig;
-
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonTypeName;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-@JsonTypeName(MPJdbcFormatConfig.NAME)
-public class MPJdbcFormatConfig extends StoragePluginConfig {
-  static final org.slf4j.Logger logger = org.slf4j.LoggerFactory
-      .getLogger(MPJdbcFormatConfig.class);
-  public static final String NAME = "jdbc";
-
-  @JsonIgnore
-  private String driver;
-  @JsonIgnore
-  private String uri;
-  @JsonIgnore
-  private String username;
-  @JsonIgnore
-  private String password;
-
-  @JsonCreator
-  public MPJdbcFormatConfig(@JsonProperty("driver") String driver,
-      @JsonProperty("uri") String uri,
-      @JsonProperty("username") String username,
-      @JsonProperty("password") String password) {
-    this.driver = driver == null ? "" : driver;
-    this.uri = uri == null ? "jdbc://" : uri;
-    this.username = username == null ? "" : username;
-    this.password = password == null ? "" : password;
-
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-    if (o == null || getClass() != o.getClass()) {
-      return false;
-    }
-
-    MPJdbcFormatConfig that = (MPJdbcFormatConfig) o;
-
-    if (uri != null ? !uri.equals(that.uri) : that.uri != null) {
-      return false;
-    }
-
-    return true;
-  }
-
-  @JsonProperty("driver")
-  public String getDriver() {
-    return this.driver;
-  }
-
-  @JsonProperty("uri")
-  public String getUri() {
-    return this.uri;
-  }
-
-  @JsonProperty("username")
-  public String getUser() {
-    return this.username;
-  }
-
-  @JsonProperty("password")
-  public String getPasswd() {
-    return this.password;
-  }
-
-  @Override
-  public int hashCode() {
-    ObjectMapper mapper = new ObjectMapper();
-    try {
-      String outval = mapper.writeValueAsString(this);
-      logger.info("FormatConfigHashCode:" + outval);
-
-      return outval.hashCode();
-    } catch (JsonProcessingException e) {
-      // TODO Auto-generated catch block
-      e.printStackTrace();
-      return uri.hashCode();
-    }
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/drill/blob/e12cd470/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcFormatPlugin.java
----------------------------------------------------------------------
diff --git a/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcFormatPlugin.java b/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcFormatPlugin.java
deleted file mode 100644
index 5a0dd4b..0000000
--- a/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcFormatPlugin.java
+++ /dev/null
@@ -1,170 +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 org.apache.drill.exec.store.mpjdbc;
-
-import java.io.IOException;
-import java.sql.Connection;
-import java.sql.DatabaseMetaData;
-import java.sql.DriverManager;
-import java.sql.ResultSet;
-import java.sql.ResultSetMetaData;
-import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-
-import org.apache.calcite.schema.Table;
-import org.apache.calcite.schema.Function;
-import org.apache.calcite.schema.Schema;
-import org.apache.calcite.schema.SchemaPlus;
-import org.apache.calcite.schema.Statistic;
-import org.apache.calcite.schema.Schema.TableType;
-import org.apache.calcite.schema.Function;
-import org.apache.calcite.linq4j.Extensions;
-import org.apache.drill.common.JSONOptions;
-import org.apache.drill.common.expression.SchemaPath;
-import org.apache.drill.common.logical.FormatPluginConfig;
-import org.apache.drill.common.logical.StoragePluginConfig;
-import org.apache.drill.exec.physical.base.AbstractGroupScan;
-import org.apache.drill.exec.physical.base.AbstractWriter;
-import org.apache.drill.exec.physical.base.PhysicalOperator;
-import org.apache.drill.exec.rpc.user.UserSession;
-import org.apache.drill.exec.server.DrillbitContext;
-import org.apache.drill.exec.store.AbstractStoragePlugin;
-import org.apache.drill.exec.store.SchemaConfig;
-import org.apache.drill.exec.store.StoragePluginOptimizerRule;
-import org.apache.drill.exec.store.dfs.DrillFileSystem;
-import org.apache.drill.exec.store.mock.MockGroupScanPOP;
-import org.apache.drill.exec.store.mock.MockStorageEngine;
-import org.apache.drill.exec.store.mock.MockStorageEngineConfig;
-import org.apache.drill.exec.store.mock.MockGroupScanPOP.MockScanEntry;
-import org.apache.drill.exec.store.mpjdbc.MPJdbcClient.OdbcSchema;
-import org.apache.calcite.plan.RelOptRuleCall;
-import org.apache.calcite.rel.type.RelDataType;
-import org.apache.calcite.rel.type.RelDataTypeFactory;
-
-import com.fasterxml.jackson.annotation.JsonTypeName;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
-
-public class MPJdbcFormatPlugin extends AbstractStoragePlugin {
-  static final org.slf4j.Logger logger = org.slf4j.LoggerFactory
-      .getLogger(MPJdbcFormatPlugin.class);
-
-  private final MPJdbcFormatConfig storageConfig;
-  protected String name = "odbc";
-  private final DrillbitContext context;
-
-  public MPJdbcFormatPlugin(MPJdbcFormatConfig storageConfig,
-      DrillbitContext context, String name) {
-    this.context = context;
-    this.storageConfig = storageConfig;
-    ObjectMapper mapper = new ObjectMapper();
-    try {
-      String result = mapper.writeValueAsString(storageConfig);
-      logger.info(result);
-    } catch (JsonProcessingException e) {
-      // TODO Auto-generated catch block
-      e.printStackTrace();
-    }
-    this.name = name;
-  }
-
-  @Override
-  public void registerSchemas(SchemaConfig config, SchemaPlus parent) {
-    if(storageConfig == null) {
-       logger.info("StorageConfig is null");
-    }
-    MPJdbcClientOptions options = new MPJdbcClientOptions(storageConfig);
-    MPJdbcClient client = MPJdbcCnxnManager.getClient(storageConfig.getUri(),
-        options,this);
-    Connection conn = (client == null) ? null : client.getConnection();
-    Map<String, Integer> schemas;
-    if(client == null) {
-      logger.info("Could not create client...");
-    }
-    OdbcSchema o = client.getSchema();
-    SchemaPlus tl = parent.add(this.name, o);
-    try {
-      schemas = client.getSchemas();
-      Set<Entry<String, Integer>> a = schemas.entrySet();
-      Iterator<Entry<String, Integer>> aiter = a.iterator();
-      while (aiter.hasNext()) {
-        Entry<String, Integer> val = aiter.next();
-        String catalog = val.getKey();
-        OdbcSchema sc = client.getSchema(catalog);
-        tl.add(catalog, sc);
-      }
-    } catch (Exception e) {
-      // TODO Auto-generated catch block
-      e.printStackTrace();
-    }
-  }
-
-  @Override
-  public MPJdbcFormatConfig getConfig() {
-    logger.info("MPJdbcFormatPlugin:getConfig called");
-    logger.info(storageConfig.toString());
-    return storageConfig;
-  }
-
-  public DrillbitContext getContext() {
-    return this.context;
-  }
-
-  public String getName() {
-      return this.name;
-  }
-
-  @Override
-  public boolean supportsRead() {
-    return true;
-  }
-/*
-  @Override
-  public AbstractGroupScan getPhysicalScan(String userName,JSONOptions selection)
-      throws IOException {
-    MPJdbcScanSpec odbcScanSpec = selection.getListWith(new ObjectMapper(),
-        new TypeReference<MPJdbcScanSpec>() {
-        });
-    return new MPJdbcGroupScan(userName,this, odbcScanSpec, null);
-  }
-  */
-  @Override
-  public AbstractGroupScan getPhysicalScan(String userName,JSONOptions selection,List<SchemaPath> columns)
-      throws IOException {
-    MPJdbcScanSpec mPJdbcScanSpec = selection.getListWith(new ObjectMapper(),
-        new TypeReference<MPJdbcScanSpec>() {
-        });
-    return new MPJdbcGroupScan(userName,this, mPJdbcScanSpec, columns);
-  }
-
-  @Override
-  public Set<StoragePluginOptimizerRule> getOptimizerRules() {
-    // TODO Auto-generated method stub
-    return ImmutableSet.of(MPJdbcFilterRule.INSTANCE);
-  }
-}

http://git-wip-us.apache.org/repos/asf/drill/blob/e12cd470/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcGroupScan.java
----------------------------------------------------------------------
diff --git a/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcGroupScan.java b/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcGroupScan.java
deleted file mode 100644
index a16f8c8..0000000
--- a/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcGroupScan.java
+++ /dev/null
@@ -1,181 +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 org.apache.drill.exec.store.mpjdbc;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Queue;
-import java.util.Set;
-
-import org.apache.drill.common.exceptions.ExecutionSetupException;
-import org.apache.drill.exec.physical.EndpointAffinity;
-import org.apache.drill.exec.physical.PhysicalOperatorSetupException;
-import org.apache.drill.exec.physical.base.AbstractGroupScan;
-import org.apache.drill.exec.physical.base.GroupScan;
-import org.apache.drill.exec.physical.base.PhysicalOperator;
-import org.apache.drill.exec.physical.base.ScanStats;
-import org.apache.drill.exec.physical.base.SubScan;
-import org.apache.drill.exec.proto.CoordinationProtos.DrillbitEndpoint;
-import org.apache.drill.exec.store.schedule.CompleteFileWork;
-import org.apache.drill.common.expression.SchemaPath;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.google.common.base.Preconditions;
-import com.google.common.collect.ListMultimap;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import com.google.common.base.Preconditions;
-import com.google.common.base.Stopwatch;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
-
-public class MPJdbcGroupScan extends AbstractGroupScan {
-
-  private MPJdbcFormatPlugin plugin;
-  private MPJdbcFormatConfig pluginConfig;
-  private MPJdbcScanSpec mPJdbcScanSpec;
-  private List<SchemaPath> columns;
-  private String userName;
-  private Map<Integer, List<MPJdbcScanSpec>> endpointFragmentMapping;
-
-  public MPJdbcGroupScan(String userName,MPJdbcFormatPlugin storagePlugin, MPJdbcScanSpec scanSpec,
-      List<SchemaPath> columns) {
-    super(userName);
-    this.plugin = storagePlugin;
-    this.pluginConfig = storagePlugin.getConfig();
-    this.mPJdbcScanSpec = scanSpec;
-    this.userName = userName;
-    this.columns = columns == null || columns.size() == 0 ? ALL_COLUMNS
-        : columns;
-  }
-
-  public MPJdbcGroupScan(MPJdbcGroupScan that) {
-    super(that);
-    this.columns = that.columns;
-    this.plugin = that.plugin;
-    this.endpointFragmentMapping = that.endpointFragmentMapping;
-    this.pluginConfig = that.pluginConfig;
-    this.mPJdbcScanSpec = that.mPJdbcScanSpec;
-  }
-
-  @Override
-  public SubScan getSpecificScan(int minorFragmentId)
-      throws ExecutionSetupException {
-    // TODO Auto-generated method stub
-    return new MPJdbcSubScan(plugin,userName, pluginConfig,
-        endpointFragmentMapping.get(minorFragmentId), columns);
-  }
-
-  @Override
-  public int getMaxParallelizationWidth() {
-    // TODO Auto-generated method stub
-    return -1;
-  }
-
-  @Override
-  public String getDigest() {
-    // TODO Auto-generated method stub
-    return toString();
-  }
-
-  @Override
-  public GroupScan clone(List<SchemaPath> columns) {
-    MPJdbcGroupScan newScan = new MPJdbcGroupScan(userName,plugin, mPJdbcScanSpec, columns);
-    return newScan;
-
-  }
-
-  @Override
-  public ScanStats getScanStats() {
-    // TODO Auto-generated method stub
-    return ScanStats.TRIVIAL_TABLE;
-  }
-
-  @Override
-  public PhysicalOperator getNewWithChildren(List<PhysicalOperator> children)
-      throws ExecutionSetupException {
-    Preconditions.checkArgument(children.isEmpty());
-    return new MPJdbcGroupScan(this);
-    // TODO Auto-generated method stub
-  }
-  @Override
-  @JsonIgnore
-  public boolean canPushdownProjects(List<SchemaPath> columns) {
-    this.columns = columns;
-    return true;
-  }
-
-  @Override
-  public List<EndpointAffinity> getOperatorAffinity() {
-    Map<String, DrillbitEndpoint> endpointMap = new HashMap<String, DrillbitEndpoint>();
-    for (DrillbitEndpoint ep : plugin.getContext().getBits()) {
-      endpointMap.put(ep.getAddress(), ep);
-    }
-
-    Map<DrillbitEndpoint, EndpointAffinity> affinityMap = new HashMap<DrillbitEndpoint, EndpointAffinity>();
-    DrillbitEndpoint ep = endpointMap.get(plugin.getConfig().getUri());
-    if (ep != null) {
-      EndpointAffinity affinity = affinityMap.get(ep);
-      if (affinity == null) {
-        affinityMap.put(ep, new EndpointAffinity(ep, 1));
-      } else {
-        affinity.addAffinity(1);
-      }
-    }
-    return Lists.newArrayList(affinityMap.values());
-  }
-
-  @Override
-  public void applyAssignments(List<DrillbitEndpoint> incomingEndpoints) {
-    final int numSlots = incomingEndpoints.size();
-    int totalAssignmentsTobeDone = 1;
-    Preconditions.checkArgument(numSlots <= totalAssignmentsTobeDone, String
-        .format("Incoming endpoints %d is greater than number of chunks %d",
-            numSlots, totalAssignmentsTobeDone));
-    final int minPerEndpointSlot = (int) Math
-        .floor((double) totalAssignmentsTobeDone / numSlots);
-    final int maxPerEndpointSlot = (int) Math
-        .ceil((double) totalAssignmentsTobeDone / numSlots);
-    /* Map for (index,endpoint)'s */
-    endpointFragmentMapping = Maps.newHashMapWithExpectedSize(numSlots);
-    /* Reverse mapping for above indexes */
-    Map<String, Queue<Integer>> endpointHostIndexListMap = Maps.newHashMap();
-    /*
-     * Initialize these two maps
-     */
-    for (int i = 0; i < numSlots; ++i) {
-      List<MPJdbcScanSpec> val = new ArrayList<MPJdbcScanSpec>(maxPerEndpointSlot);
-      val.add(this.mPJdbcScanSpec);
-      endpointFragmentMapping.put(i, val);
-      String hostname = incomingEndpoints.get(i).getAddress();
-      Queue<Integer> hostIndexQueue = endpointHostIndexListMap.get(hostname);
-      if (hostIndexQueue == null) {
-        hostIndexQueue = Lists.newLinkedList();
-        endpointHostIndexListMap.put(hostname, hostIndexQueue);
-      }
-      hostIndexQueue.add(i);
-    }
-  }
-
-  public MPJdbcScanSpec getScanSpec() {
-    return this.mPJdbcScanSpec;
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/drill/blob/e12cd470/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcRecordReader.java
----------------------------------------------------------------------
diff --git a/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcRecordReader.java b/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcRecordReader.java
deleted file mode 100644
index 498b7fd..0000000
--- a/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcRecordReader.java
+++ /dev/null
@@ -1,471 +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 org.apache.drill.exec.store.mpjdbc;
-
-import org.apache.drill.common.exceptions.DrillRuntimeException;
-import org.apache.drill.common.exceptions.ExecutionSetupException;
-import org.apache.drill.common.expression.SchemaPath;
-import org.apache.drill.common.types.TypeProtos;
-import org.apache.drill.common.types.TypeProtos.DataMode;
-import org.apache.drill.common.types.TypeProtos.MajorType;
-import org.apache.drill.exec.exception.SchemaChangeException;
-import org.apache.drill.exec.expr.TypeHelper;
-import org.apache.drill.exec.expr.holders.DateHolder;
-import org.apache.drill.exec.expr.holders.Decimal38DenseHolder;
-import org.apache.drill.exec.expr.holders.VarCharHolder;
-import org.apache.drill.exec.memory.OutOfMemoryException;
-import org.apache.drill.exec.ops.FragmentContext;
-import org.apache.drill.exec.ops.OperatorContext;
-import org.apache.drill.exec.physical.impl.OutputMutator;
-import org.apache.drill.exec.record.MaterializedField;
-import org.apache.drill.exec.record.MaterializedField.Key;
-import org.apache.drill.exec.store.AbstractRecordReader;
-import org.apache.drill.exec.vector.AllocationHelper;
-import org.apache.drill.exec.vector.BigIntVector;
-import org.apache.drill.exec.vector.DateVector;
-import org.apache.drill.exec.vector.Decimal38DenseVector;
-import org.apache.drill.exec.vector.FixedWidthVector;
-import org.apache.drill.exec.vector.Float8Vector;
-import org.apache.drill.exec.vector.IntVector;
-import org.apache.drill.exec.vector.NullableBigIntVector;
-import org.apache.drill.exec.vector.NullableDateVector;
-import org.apache.drill.exec.vector.NullableDecimal38DenseVector;
-import org.apache.drill.exec.vector.NullableFloat8Vector;
-import org.apache.drill.exec.vector.NullableIntVector;
-import org.apache.drill.exec.vector.NullableTimeStampVector;
-import org.apache.drill.exec.vector.NullableTimeVector;
-import org.apache.drill.exec.vector.NullableVar16CharVector.Mutator;
-import org.apache.drill.exec.vector.NullableVarCharVector;
-import org.apache.drill.exec.vector.TimeStampVector;
-import org.apache.drill.exec.vector.TimeVector;
-import org.apache.drill.exec.vector.ValueHolderHelper;
-import org.apache.drill.exec.vector.ValueVector;
-import org.apache.drill.exec.vector.VarBinaryVector;
-import org.apache.drill.exec.vector.VarCharVector;
-import org.apache.drill.exec.vector.complex.impl.VectorContainerWriter;
-import org.joda.time.DateTime;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.Charsets;
-import com.google.common.collect.Lists;
-
-import io.netty.buffer.ByteBuf;
-import io.netty.buffer.DrillBuf;
-
-import java.sql.Connection;
-import java.sql.DatabaseMetaData;
-import java.sql.DriverManager;
-import java.sql.ResultSetMetaData;
-import java.sql.Statement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Types;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-public class MPJdbcRecordReader extends AbstractRecordReader {
-  static final org.slf4j.Logger logger = org.slf4j.LoggerFactory
-      .getLogger(MPJdbcRecordReader.class);
-
-  private ResultSet rec;
-  private VectorContainerWriter writer;
-  private FragmentContext fc;
-  private MPJdbcSubScan scanSpec;
-  private MPJdbcFormatPlugin plugin;
-  private List<MPJdbcScanSpec> scanList;
-  private MPJdbcFormatConfig config;
-  private Connection conn;
-  private Statement statement;
-  private String table;
-  private String database;
-  protected List<ValueVector> vectors = Lists.newArrayList();
-  private int col_cnt = 0;
-  private MajorType.Builder t;
-  private OutputMutator outputMutator;
-  private ResultSetMetaData meta;
-  private OperatorContext operatorContext;
-  private String columns;
-  private List<String> filters;
-
-  public MPJdbcRecordReader(FragmentContext fragmentContext, MPJdbcSubScan scan) {
-    fc = fragmentContext;
-    scanSpec = scan;
-    // TODO Auto-generated constructor stub
-    this.plugin = scanSpec.getPlugin();
-    this.scanList = scanSpec.getScanList();
-    this.config = scanSpec.getConfig();
-    MPJdbcClientOptions options = new MPJdbcClientOptions(config);
-    MPJdbcClient client = MPJdbcCnxnManager.getClient(config.getUri(), options,
-        this.plugin);
-    conn = client.getConnection();
-    Iterator<MPJdbcScanSpec> iter = scanList.iterator();
-    while (iter.hasNext()) {
-      MPJdbcScanSpec o = iter.next();
-      table = o.getTable();
-      database = o.getDatabase();
-      List<SchemaPath> ColList = scan.getColumns();
-      Iterator<SchemaPath> collist_iter = ColList.iterator();
-      StringBuilder b = new StringBuilder();
-      while(collist_iter.hasNext()) {
-          SchemaPath val = collist_iter.next();
-          b.append(val.getAsUnescapedPath().trim());
-          if(collist_iter.hasNext()) {
-              b.append(",");
-          }
-      }
-      columns = b.toString();
-      filters = o.getFilters();
-    }
-    try {
-      statement = conn.createStatement();
-      rec = statement.executeQuery("SELECT " + this.columns + " FROM " + database.trim() + "." + table.trim());
-    } catch (SQLException e) {
-      // TODO Auto-generated catch block
-      e.printStackTrace();
-    }
-  }
-
-  @Override
-  public void setup(OutputMutator output) throws ExecutionSetupException {
-    try {
-      meta = rec.getMetaData();
-      col_cnt = meta.getColumnCount();
-      Class cls = null;
-      for (int i = 1; i <= col_cnt; i++) {
-        String column_label = meta.getColumnLabel(i);
-        int types = meta.getColumnType(i);
-        int isnullable = meta.isNullable(i);
-        int width = meta.getPrecision(i);
-        int scale = meta.getScale(i);
-        MaterializedField field = null;
-        switch (types) {
-        case java.sql.Types.BIGINT:
-          t = MajorType.newBuilder().setMinorType(TypeProtos.MinorType.BIGINT);
-          if (isnullable == 1) {
-            t.setMode(DataMode.OPTIONAL);
-            field = MaterializedField.create(column_label, t.build());
-            vectors.add(output.addField(field, NullableBigIntVector.class));
-          } else {
-            t.setMode(DataMode.REQUIRED);
-            field = MaterializedField.create(column_label, t.build());
-            vectors.add(output.addField(field, BigIntVector.class));
-          }
-          break;
-        case Types.DATE:
-          t = MajorType.newBuilder().setMinorType(TypeProtos.MinorType.DATE);
-          cls = org.apache.drill.exec.vector.DateVector.class;
-          if (isnullable == 1) {
-            t.setMode(DataMode.OPTIONAL);
-            field = MaterializedField.create(column_label, t.build());
-            vectors.add(output.addField(field, NullableDateVector.class));
-          } else {
-            t.setMode(DataMode.REQUIRED);
-            field = MaterializedField.create(column_label, t.build());
-            vectors.add(output.addField(field, DateVector.class));
-          }
-          break;
-        case Types.DECIMAL:
-          t = MajorType.newBuilder().setMinorType(
-              TypeProtos.MinorType.DECIMAL38DENSE);
-          t.setMode(DataMode.OPTIONAL);
-          field = MaterializedField.create(column_label, t.build());
-          vectors.add(output.addField(field, Decimal38DenseVector.class));
-          break;
-        case Types.DOUBLE:
-          t = MajorType.newBuilder().setMinorType(TypeProtos.MinorType.BIGINT);
-          if (isnullable == 1) {
-            t.setMode(DataMode.OPTIONAL);
-            field = MaterializedField.create(column_label, t.build());
-            vectors.add(output.addField(field, NullableBigIntVector.class));
-          } else {
-            t.setMode(DataMode.REQUIRED);
-            field = MaterializedField.create(column_label, t.build());
-            vectors.add(output.addField(field, BigIntVector.class));
-          }
-          break;
-        case Types.FLOAT:
-          t = MajorType.newBuilder().setMinorType(TypeProtos.MinorType.FLOAT8);
-          if (isnullable == 1) {
-            t.setMode(DataMode.OPTIONAL);
-            field = MaterializedField.create(column_label, t.build());
-            vectors.add(output.addField(field, NullableFloat8Vector.class));
-          } else {
-            t.setMode(DataMode.REQUIRED);
-            field = MaterializedField.create(column_label, t.build());
-            vectors.add(output.addField(field, Float8Vector.class));
-          }
-          break;
-        case Types.INTEGER:
-        case Types.SMALLINT:
-          t = MajorType.newBuilder().setMinorType(TypeProtos.MinorType.INT);
-          if (isnullable == 1) {
-            t.setMode(DataMode.OPTIONAL);
-            field = MaterializedField.create(column_label, t.build());
-            vectors.add(output.addField(field, NullableIntVector.class));
-          } else {
-            t.setMode(DataMode.REQUIRED);
-            field = MaterializedField.create(column_label, t.build());
-            vectors.add(output.addField(field, IntVector.class));
-          }
-          break;
-        case Types.LONGNVARCHAR:
-        case Types.LONGVARCHAR:
-          t = MajorType.newBuilder().setMinorType(TypeProtos.MinorType.VARCHAR);
-          t.setWidth(width);
-          if (isnullable == 1) {
-            t.setMode(DataMode.OPTIONAL);
-            field = MaterializedField.create(column_label, t.build());
-            vectors.add(output.addField(field, NullableVarCharVector.class));
-          } else {
-            t.setMode(DataMode.REQUIRED);
-            field = MaterializedField.create(column_label, t.build());
-            vectors.add(output.addField(field, VarCharVector.class));
-          }
-          break;
-        case Types.LONGVARBINARY:
-          break;
-        case Types.CHAR:
-        case Types.NCHAR:
-          t = MajorType.newBuilder().setMinorType(TypeProtos.MinorType.VARCHAR);
-          t.setWidth(width);
-          if (isnullable == 1) {
-            t.setMode(DataMode.OPTIONAL);
-            field = MaterializedField.create(column_label, t.build());
-            vectors.add(output.addField(field, NullableVarCharVector.class));
-          } else {
-            t.setMode(DataMode.REQUIRED);
-            field = MaterializedField.create(column_label, t.build());
-            vectors.add(output.addField(field, VarCharVector.class));
-          }
-          break;
-        case Types.NUMERIC:
-          t = MajorType.newBuilder().setMinorType(
-              TypeProtos.MinorType.DECIMAL38DENSE);
-          if (isnullable == 1) {
-            t.setMode(DataMode.OPTIONAL);
-            field = MaterializedField.create(column_label, t.build());
-            vectors.add(output.addField(field,
-                NullableDecimal38DenseVector.class));
-          } else {
-            t.setMode(DataMode.REQUIRED);
-            field = MaterializedField.create(column_label, t.build());
-            vectors.add(output.addField(field, Decimal38DenseVector.class));
-          }
-          break;
-        case Types.NVARCHAR:
-        case Types.VARCHAR:
-          t = MajorType.newBuilder().setMinorType(TypeProtos.MinorType.VARCHAR);
-          t.setWidth(width);
-          if (isnullable == 1) {
-            t.setMode(DataMode.OPTIONAL);
-            field = MaterializedField.create(column_label, t.build());
-            vectors.add(output.addField(field, NullableVarCharVector.class));
-          } else {
-            t.setMode(DataMode.REQUIRED);
-            field = MaterializedField.create(column_label, t.build());
-            vectors.add(output.addField(field, VarCharVector.class));
-          }
-          break;
-        case Types.TIME:
-          t = MajorType.newBuilder().setMinorType(TypeProtos.MinorType.TIME);
-          if (isnullable == 1) {
-            t.setMode(DataMode.OPTIONAL);
-            field = MaterializedField.create(column_label, t.build());
-            vectors.add(output.addField(field, NullableTimeVector.class));
-          } else {
-            t.setMode(DataMode.REQUIRED);
-            field = MaterializedField.create(column_label, t.build());
-            vectors.add(output.addField(field, TimeVector.class));
-          }
-          break;
-        case Types.TIMESTAMP:
-          t = MajorType.newBuilder().setMinorType(
-              TypeProtos.MinorType.TIMESTAMP);
-          if (isnullable == 1) {
-            t.setMode(DataMode.OPTIONAL);
-            field = MaterializedField.create(column_label, t.build());
-            vectors.add(output.addField(field, NullableTimeStampVector.class));
-          } else {
-            t.setMode(DataMode.REQUIRED);
-            field = MaterializedField.create(column_label, t.build());
-            vectors.add(output.addField(field, TimeStampVector.class));
-          }
-          break;
-        default:
-          t = MajorType.newBuilder().setMinorType(TypeProtos.MinorType.VARCHAR);
-          t.setWidth(width);
-          if (isnullable == 1) {
-            t.setMode(DataMode.OPTIONAL);
-            field = MaterializedField.create(column_label, t.build());
-            vectors.add(output.addField(field, NullableVarCharVector.class));
-          } else {
-            t.setMode(DataMode.REQUIRED);
-            field = MaterializedField.create(column_label, t.build());
-            vectors.add(output.addField(field, VarCharVector.class));
-          }
-          break;
-        }
-      }
-      this.outputMutator = output;
-
-    } catch (SQLException | SchemaChangeException e) {
-      // TODO Auto-generated catch block
-      throw new ExecutionSetupException(e);
-    }
-  }
-
-  @Override
-  public void setOperatorContext(OperatorContext operatorContext) {
-    this.operatorContext = operatorContext;
-  }
-
-  @Override
-  public int next() {
-    // TODO Auto-generated method stub
-    int counter = 0;
-    int pos = 1;
-    int prec = 0;
-    Boolean b = true;
-    try {
-      while (counter < 65536 && b == true) {
-        b = rec.next();
-        if(b == false) {
-            break;
-        }
-        for (ValueVector vv : vectors) {
-          String val = rec.getString(pos);
-          byte[] record = val.getBytes(Charsets.UTF_8);
-          if (vv.getClass().equals(NullableVarCharVector.class)) {
-            NullableVarCharVector v = (NullableVarCharVector) vv;
-            v.getMutator().setSafe(counter, record, 0, record.length);
-            v.getMutator().setValueLengthSafe(counter, record.length);
-          } else if (vv.getClass().equals(VarCharVector.class)) {
-            VarCharVector v = (VarCharVector) vv;
-            v.getMutator().setSafe(counter, record, 0, record.length);
-            v.getMutator().setValueLengthSafe(counter, record.length);
-          } else if (vv.getClass().equals(BigIntVector.class)) {
-            BigIntVector v = (BigIntVector) vv;
-            v.getMutator().setSafe(counter, rec.getLong(pos));
-          } else if (vv.getClass().equals(NullableBigIntVector.class)) {
-            NullableBigIntVector v = (NullableBigIntVector) vv;
-            v.getMutator().setSafe(counter, rec.getLong(pos));
-          } else if (vv.getClass().equals(IntVector.class)) {
-            IntVector v = (IntVector) vv;
-            v.getMutator().setSafe(counter, rec.getInt(pos));
-          } else if (vv.getClass().equals(NullableIntVector.class)) {
-            NullableIntVector v = (NullableIntVector) vv;
-            v.getMutator().setSafe(counter, rec.getInt(pos));
-          } else if (vv.getClass().equals(DateVector.class)) {
-            DateVector v = (DateVector) vv;
-            long dtime = DateTime.parse(val).toDate().getTime(); // DateTime.parse(val).toDateTime().getMillis();
-            v.getMutator().setSafe(counter, dtime);
-          } else if (vv.getClass().equals(NullableDateVector.class)) {
-            NullableDateVector v = (NullableDateVector) vv;
-            if (rec.wasNull()) {
-              v.getMutator().setNull(counter);
-            } else {
-              long dtime = DateTime.parse(val).toDate().getTime();
-              v.getMutator().setSafe(counter, dtime);
-            }
-          } else if (vv.getClass().equals(Decimal38DenseVector.class)) {
-            Decimal38DenseVector v = (Decimal38DenseVector) vv;
-            java.math.BigDecimal d = rec.getBigDecimal(pos);
-          } else if (vv.getClass().equals(NullableDecimal38DenseVector.class)) {
-            NullableDecimal38DenseVector v = (NullableDecimal38DenseVector) vv;
-            java.math.BigDecimal d = rec.getBigDecimal(pos);
-          } else {
-            NullableVarCharVector v = (NullableVarCharVector) vv;
-            v.getMutator().setSafe(counter, record, 0, record.length);
-            v.getMutator().setValueLengthSafe(counter, record.length);
-          }
-          pos++;
-        }
-        pos = 1;
-        counter++;
-      }
-    } catch (SQLException e) {
-      // TODO Auto-generated catch block
-      throw new DrillRuntimeException(e);
-    }
-    //logger.info("Number of rows returned from JDBC: " + counter);
-    for (ValueVector vv : vectors) {
-      vv.getMutator().setValueCount(counter > 0 ? counter : 0);
-    }
-    return counter>0 ? counter : 0;
-  }
-
-  @Override
-  public void allocate(Map<Key, ValueVector> vectorMap)
-      throws OutOfMemoryException {
-    int prec = 0;
-    try {
-      for (ValueVector vv : vectorMap.values()) {
-        if (vv.getClass().equals(NullableVarCharVector.class)) {
-                NullableVarCharVector v = (NullableVarCharVector) vv;
-                prec = v.getField().getWidth();
-                if(prec > 0) {
-                   AllocationHelper.allocate(v, 65536, prec);
-                } else {
-                   AllocationHelper.allocate(v, 65536, 2000);
-                }
-              } else if (vv.getClass().equals(VarCharVector.class)) {
-                VarCharVector v = (VarCharVector) vv;
-                prec = v.getField().getWidth();
-                if(prec > 0) {
-                    AllocationHelper.allocate(v, 65536, prec);
-                 } else {
-                    AllocationHelper.allocate(v, 65536, 2000);
-                 }
-              } else if (vv.getClass().equals(BigIntVector.class)) {
-                BigIntVector v = (BigIntVector) vv;
-                v.allocateNew(65536);
-              } else if (vv.getClass().equals(NullableBigIntVector.class)) {
-                NullableBigIntVector v = (NullableBigIntVector) vv;
-                v.allocateNew(65536);
-              } else if (vv.getClass().equals(DateVector.class)) {
-                DateVector v = (DateVector) vv;
-                v.allocateNew(65536);
-              } else if (vv.getClass().equals(NullableDateVector.class)) {
-                NullableDateVector v = (NullableDateVector) vv;
-                v.allocateNew(65536);
-              } else if (vv.getClass().equals(Decimal38DenseVector.class)) {
-                Decimal38DenseVector v = (Decimal38DenseVector) vv;
-                v.allocateNew(65536);
-              } else if (vv.getClass().equals(NullableDecimal38DenseVector.class)) {
-                NullableDecimal38DenseVector v = (NullableDecimal38DenseVector) vv;
-                v.allocateNew(65536);
-              } else if (vv.getClass().equals(IntVector.class)) {
-                IntVector v = (IntVector) vv;
-                v.allocateNew(65536);
-              } else if (vv.getClass().equals(NullableIntVector.class)) {
-                NullableIntVector v = (NullableIntVector) vv;
-                v.allocateNew(65536);
-              }
-      }
-    } catch (NullPointerException e) {
-      throw new OutOfMemoryException();
-    }
-  }
-
-  @Override
-  public void cleanup() {
-    // TODO Auto-generated method stub
-  }
-}

http://git-wip-us.apache.org/repos/asf/drill/blob/e12cd470/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcScanSpec.java
----------------------------------------------------------------------
diff --git a/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcScanSpec.java b/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcScanSpec.java
deleted file mode 100644
index fae0e81..0000000
--- a/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcScanSpec.java
+++ /dev/null
@@ -1,76 +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 org.apache.drill.exec.store.mpjdbc;
-
-import java.util.List;
-
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-public class MPJdbcScanSpec {
-
-  private String database;
-  private String table;
-  private String columns;
-
-  @JsonIgnore
-  private List<String> filters;
-
-  @JsonCreator
-  public MPJdbcScanSpec(@JsonProperty("database") String database,
-      @JsonProperty("table") String table, @JsonProperty("columns") String columns) {
-    this.database = database;
-    this.table = table;
-    this.columns = columns;
-  }
-
-  public MPJdbcScanSpec(String database, String table, List<String> filters, String columns) {
-    this.database = database;
-    this.table = table;
-    this.filters = filters;
-    this.columns = columns;
-  }
-
-  public String getDatabase() {
-    return this.database;
-  }
-
-  public String getTable() {
-    return this.table;
-  }
-
-  public List<String> getFilters() {
-    return this.filters;
-  }
-
-  public String getColumns() {
-    return this.columns;
-  }
-  @Override
-  public String toString() {
-    return "MPJdbcScanSpec [Database=" + database + ", table=" + table
-        + ", columns=" + columns + ", filters=" + filters + "]";
-  }
-
-  @Override
-  public boolean equals(Object obj) {
-    // TODO Auto-generated method stub
-    return super.equals(obj);
-  }
-}

http://git-wip-us.apache.org/repos/asf/drill/blob/e12cd470/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcSchemaConfig.java
----------------------------------------------------------------------
diff --git a/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcSchemaConfig.java b/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcSchemaConfig.java
deleted file mode 100644
index f3169fc..0000000
--- a/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcSchemaConfig.java
+++ /dev/null
@@ -1,80 +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 org.apache.drill.exec.store.mpjdbc;
-
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-/**
- * Stores the workspace related config. A workspace has: - location which is a
- * path. - writable flag to indicate whether the location supports creating new
- * tables. - default storage format for new tables created in this workspace.
- */
-
-public class MPJdbcSchemaConfig {
-
-  /** Default workspace is a root directory which supports read, but not write. */
-  public static final MPJdbcSchemaConfig DEFAULT = new MPJdbcSchemaConfig("jdbc://", "",
-      "");
-
-  private final String uri;
-  private final String username;
-  private final String passwd;
-
-  public MPJdbcSchemaConfig(@JsonProperty("uri") String uri,
-      @JsonProperty("username") String username,
-      @JsonProperty("passwd") String passwd) {
-    this.uri = uri;
-    this.username = username;
-    this.passwd = passwd;
-  }
-
-  public String getUri() {
-    return uri;
-  }
-
-  public boolean isWritable() {
-    return false;
-  }
-
-  public String getUsername() {
-    return username;
-  }
-
-  public String getPassword() {
-    return passwd;
-  }
-
-  @Override
-  public boolean equals(Object obj) {
-    if (obj == this) {
-      return true;
-    }
-
-    if (obj == null || !(obj instanceof MPJdbcSchemaConfig)) {
-      return false;
-    }
-
-    MPJdbcSchemaConfig that = (MPJdbcSchemaConfig) obj;
-    return ((this.uri == null && that.uri == null) || this.uri.equals(that.uri))
-        && this.passwd == that.passwd
-        && ((this.username == null && that.username == null) || this.username
-            .equals(that.username));
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/drill/blob/e12cd470/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcSchemaFilter.java
----------------------------------------------------------------------
diff --git a/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcSchemaFilter.java b/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcSchemaFilter.java
deleted file mode 100644
index 0e28c8d..0000000
--- a/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcSchemaFilter.java
+++ /dev/null
@@ -1,23 +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 org.apache.drill.exec.store.mpjdbc;
-public class MPJdbcSchemaFilter {
-public MPJdbcSchemaFilter() {
-// TODO Auto-generated constructor stub
-}
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/drill/blob/e12cd470/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcSchemaSubScan.java
----------------------------------------------------------------------
diff --git a/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcSchemaSubScan.java b/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcSchemaSubScan.java
deleted file mode 100644
index 8c92533..0000000
--- a/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcSchemaSubScan.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 org.apache.drill.exec.store.mpjdbc;
-import org.apache.drill.exec.physical.base.AbstractSubScan;
-import org.apache.drill.exec.store.mpjdbc.MPJdbcSchemaFilter;
-
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-public class MPJdbcSchemaSubScan extends AbstractSubScan {
-private final String table;
-private final MPJdbcSchemaFilter filter;
-private final String userName;
-
-  @JsonCreator
-  public MPJdbcSchemaSubScan(@JsonProperty("userName") String userName,
-       @JsonProperty("table") String table,
-       @JsonProperty("filter") MPJdbcSchemaFilter filter) {
-    super(userName);
-    this.table = table;
-    this.filter = filter;
-    this.userName = userName;
-  }
-  @JsonProperty("table")
-  public String getTable() {
-    return table;
-  }
-  @JsonProperty("filter")
-  public MPJdbcSchemaFilter getFilter() {
-    return filter;
-  }
-  @JsonProperty("userName")
-  public String getUserName() {
-    return this.userName;
-  }
-@Override
-public int getOperatorType() {
-// TODO Auto-generated method stub
-return 0;
-}
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/drill/blob/e12cd470/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcSubScan.java
----------------------------------------------------------------------
diff --git a/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcSubScan.java b/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcSubScan.java
deleted file mode 100644
index 4685046..0000000
--- a/contrib/storage-mpjdbc/src/main/java/org/apache/drill/exec/store/mpjdbc/MPJdbcSubScan.java
+++ /dev/null
@@ -1,119 +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 org.apache.drill.exec.store.mpjdbc;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.drill.common.exceptions.ExecutionSetupException;
-import org.apache.drill.common.expression.SchemaPath;
-import org.apache.drill.exec.physical.base.AbstractBase;
-import org.apache.drill.exec.physical.base.SubScan;
-import org.apache.drill.exec.physical.base.PhysicalOperator;
-import org.apache.drill.exec.physical.base.PhysicalVisitor;
-import org.apache.drill.exec.store.StoragePluginRegistry;
-import org.apache.drill.exec.store.ischema.SelectedTable;
-
-import com.fasterxml.jackson.annotation.JacksonInject;
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Iterators;
-
-public class MPJdbcSubScan extends AbstractBase implements SubScan {
-  private MPJdbcFormatPlugin plugin;
-  private MPJdbcFormatConfig pluginConfig;
-  private List<SchemaPath> columns;
-  private List<MPJdbcScanSpec> scanList;
-  private String userName;
-
-  @JsonCreator
-  public MPJdbcSubScan(@JacksonInject StoragePluginRegistry registry,
-      @JsonProperty("userName") String userName,
-      @JsonProperty("pluginConfig") MPJdbcFormatConfig pluginConfig,
-      @JsonProperty("ScanList") List<MPJdbcScanSpec> scanlist,
-      @JsonProperty("columns") List<SchemaPath> columns) throws ExecutionSetupException {
-    super(userName);
-    this.plugin = (MPJdbcFormatPlugin) registry.getPlugin(pluginConfig);
-    this.pluginConfig = pluginConfig;
-    this.columns = columns;
-    this.scanList = scanlist;
-    this.userName = userName;
-  }
-  public MPJdbcSubScan(MPJdbcFormatPlugin plugin,
-          @JsonProperty("userName") String userName,
-          @JsonProperty("pluginConfig") MPJdbcFormatConfig pluginConfig,
-          @JsonProperty("ScanList") List<MPJdbcScanSpec> scanlist,
-          @JsonProperty("columns") List<SchemaPath> columns) {
-    super(userName);
-    this.plugin = plugin;
-    this.pluginConfig = pluginConfig;
-    this.columns = columns;
-    this.scanList = scanlist;
-    this.userName = userName;
-    }
-
-  @Override
-  public int getOperatorType() {
-    return 55;
-  }
-
-  @JsonProperty("columns")
-  public List<SchemaPath> getColumns() {
-    // TODO Auto-generated method stub
-    return columns;
-  }
-
-  @JsonIgnore
-  public List<MPJdbcScanSpec> getScanList() {
-    return this.scanList;
-  }
-
-  @JsonIgnore
-  public MPJdbcFormatConfig getConfig() {
-    return this.pluginConfig;
-  }
-
-  @JsonIgnore
-  public MPJdbcFormatPlugin getPlugin() {
-    return this.plugin;
-  }
-
-  @Override
-  public boolean isExecutable() {
-    return false;
-  }
-
-  @Override
-  public <T, X, E extends Throwable> T accept(
-      PhysicalVisitor<T, X, E> physicalVisitor, X value) throws E {
-    return physicalVisitor.visitSubScan(this, value);
-  }
-
-  @Override
-  public PhysicalOperator getNewWithChildren(List<PhysicalOperator> children) {
-    Preconditions.checkArgument(children.isEmpty());
-    return new MPJdbcSubScan(plugin,userName, pluginConfig, scanList, columns);
-  }
-
-  @Override
-  public Iterator<PhysicalOperator> iterator() {
-    return Iterators.emptyIterator();
-  }
-}

http://git-wip-us.apache.org/repos/asf/drill/blob/e12cd470/contrib/storage-mpjdbc/src/main/resources/bootstrap-storage-plugins.json
----------------------------------------------------------------------
diff --git a/contrib/storage-mpjdbc/src/main/resources/bootstrap-storage-plugins.json b/contrib/storage-mpjdbc/src/main/resources/bootstrap-storage-plugins.json
deleted file mode 100755
index d408322..0000000
--- a/contrib/storage-mpjdbc/src/main/resources/bootstrap-storage-plugins.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "storage":{
-    jdbc : {
-      type:"jdbc",
-      enabled: false,
-      driver:"",
-      uri:"jdbc://",
-      username:"",
-      password:""
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/drill/blob/e12cd470/contrib/storage-mpjdbc/src/main/resources/checkstyle-config.xml
----------------------------------------------------------------------
diff --git a/contrib/storage-mpjdbc/src/main/resources/checkstyle-config.xml b/contrib/storage-mpjdbc/src/main/resources/checkstyle-config.xml
deleted file mode 100644
index 0758908..0000000
--- a/contrib/storage-mpjdbc/src/main/resources/checkstyle-config.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 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. -->
-<!DOCTYPE module PUBLIC
-    "-//Puppy Crawl//DTD Check Configuration 1.2//EN"
-    "http://www.puppycrawl.com/dtds/configuration_1_2.dtd">
-
-<!--  Checkstyle configuration for Apache Drill -->
-
-<module name="Checker">
-
-  <module name="TreeWalker">
-
-    <module name="IllegalImport">
-      <!-- For "org.apache.commons.lang.*" classes use the corresponding class from "org.apache.commons.lang3.*" -->
-      <property name="illegalPkgs" value="com.google.hive12,com.beust.jcommander.internal,jersey.repackaged,org.apache.commons.lang"/>
-    </module>
-
-    <module name="AvoidStarImport">
-      <property name="allowStaticMemberImports" value="true"/>
-    </module>
-
-    <module name="NeedBraces"/>
-
-  </module>
-
-  <module name="FileTabCharacter"/>
-
-  <module name="RegexpSingleline">
-    <property name="format" value="\s+$"/>
-  </module>
-
-</module>

http://git-wip-us.apache.org/repos/asf/drill/blob/e12cd470/contrib/storage-mpjdbc/src/main/resources/checkstyle-suppressions.xml
----------------------------------------------------------------------
diff --git a/contrib/storage-mpjdbc/src/main/resources/checkstyle-suppressions.xml b/contrib/storage-mpjdbc/src/main/resources/checkstyle-suppressions.xml
deleted file mode 100644
index 9d4682b..0000000
--- a/contrib/storage-mpjdbc/src/main/resources/checkstyle-suppressions.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 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. -->
-<!DOCTYPE suppressions PUBLIC
-    "-//Puppy Crawl//DTD Suppressions 1.1//EN"
-    "suppressions_1_1.dtd">
-
-<!--  Checkstyle Suppressions for Apache Drill -->
-<suppressions>
-  <suppress files="[\\/]generated-sources[\\/]" checks="AvoidStarImport,NeedBraces"/>
-</suppressions>

http://git-wip-us.apache.org/repos/asf/drill/blob/e12cd470/contrib/storage-mpjdbc/src/main/resources/drill-module.conf
----------------------------------------------------------------------
diff --git a/contrib/storage-mpjdbc/src/main/resources/drill-module.conf b/contrib/storage-mpjdbc/src/main/resources/drill-module.conf
deleted file mode 100644
index e753703..0000000
--- a/contrib/storage-mpjdbc/src/main/resources/drill-module.conf
+++ /dev/null
@@ -1,30 +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.
-//
-//  This file tells Drill to consider this module when class path scanning.
-//  This file can also include any supplementary configuration information.
-//  This file is in HOCON format, see https://github.com/typesafehub/config/blob/master/HOCON.md for more information.
-
-drill.exec: {
-
-  sys.store.provider: {
-    jdbc : {
-      driver: "undefined",
-      uri : "jdbc://localhost",
-      username : "user",
-      password: "password"
-    }
-  }
-}