[2/2] drill git commit: DRILL-5878: TableNotFound exception is being reported for a wrong storage plugin.

2017-11-05 Thread amansinha
DRILL-5878: TableNotFound exception is being reported for a wrong storage 
plugin.

Address review comments.


Project: http://git-wip-us.apache.org/repos/asf/drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/drill/commit/7a2fc87e
Tree: http://git-wip-us.apache.org/repos/asf/drill/tree/7a2fc87e
Diff: http://git-wip-us.apache.org/repos/asf/drill/diff/7a2fc87e

Branch: refs/heads/master
Commit: 7a2fc87ee20f706d85cb5c90cc441e6b44b71592
Parents: 125a927
Author: Hanumath Rao Maduri 
Authored: Sat Sep 16 16:54:00 2017 -0700
Committer: Aman Sinha 
Committed: Sun Nov 5 08:22:33 2017 -0800

--
 .../drill/exec/planner/sql/SchemaUtilites.java  | 35 +++-
 .../drill/exec/planner/sql/SqlConverter.java| 50 ++--
 .../drill/exec/store/dfs/TestFileSelection.java |  3 -
 .../store/dfs/TestSchemaNotFoundException.java  | 86 
 4 files changed, 164 insertions(+), 10 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/drill/blob/7a2fc87e/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/SchemaUtilites.java
--
diff --git 
a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/SchemaUtilites.java
 
b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/SchemaUtilites.java
index 51c3cb1..7d42e57 100644
--- 
a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/SchemaUtilites.java
+++ 
b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/SchemaUtilites.java
@@ -77,6 +77,29 @@ public class SchemaUtilites {
 return findSchema(defaultSchema, schemaPathAsList);
   }
 
+  /**
+   * Utility function to get the commonPrefix schema between two supplied 
schemas.
+   *
+   * Eg: if the defaultSchema: dfs and the schemaPath is dfs.tmp.`cicks.json`
+   * then this function returns dfs if (caseSensitive is not true
+   * otherwise it returns empty string.
+   *
+   * @param defaultSchema default schema
+   * @param schemaPath current schema path
+   * @param isCaseSensitive true if caseSensitive comparision is required.
+   * @return common prefix schemaPath
+   */
+  public static String getPrefixSchemaPath(final String defaultSchema,
+   final String schemaPath,
+   final boolean isCaseSensitive) {
+if (!isCaseSensitive) {
+  return Strings.commonPrefix(defaultSchema.toLowerCase(), 
schemaPath.toLowerCase());
+}
+else {
+  return Strings.commonPrefix(defaultSchema, schemaPath);
+}
+  }
+
   /** Utility method to search for schema path starting from the given 
schema reference */
   private static SchemaPlus searchSchemaTree(SchemaPlus schema, final 
List schemaPath) {
 for (String schemaName : schemaPath) {
@@ -93,7 +116,7 @@ public class SchemaUtilites {
* @return true if the given schema is root schema. False otherwise.
*/
   public static boolean isRootSchema(SchemaPlus schema) {
-return schema.getParentSchema() == null;
+return schema == null || schema.getParentSchema() == null;
   }
 
   /**
@@ -149,6 +172,16 @@ public class SchemaUtilites {
 .build(logger);
   }
 
+  /** Utility method to throw {@link UserException} with context information */
+  public static void throwSchemaNotFoundException(final SchemaPlus 
defaultSchema, final List givenSchemaPath) {
+throw UserException.validationError()
+.message("Schema [%s] is not valid with respect to either root 
schema or current default schema.",
+givenSchemaPath)
+.addContext("Current default schema: ",
+isRootSchema(defaultSchema) ? "No default schema selected" 
: getSchemaPath(defaultSchema))
+.build(logger);
+  }
+
   /**
* Given reference to default schema in schema tree, search for schema with 
given schemaPath. Once a schema is
* found resolve it into a mutable AbstractDrillSchema instance. A 
{@link UserException} is throws when:

http://git-wip-us.apache.org/repos/asf/drill/blob/7a2fc87e/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/SqlConverter.java
--
diff --git 
a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/SqlConverter.java
 
b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/SqlConverter.java
index 5778041..798e3a4 100644
--- 
a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/SqlConverter.java
+++ 
b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/SqlConverter.java
@@ -21,6 +21,7 @@ import java.util.Arrays;
 import java.util.List;
 import java.util.Set;
 
+import com.google.common.base.Strings;
 import org.apache.calcite.adapter.java.JavaTypeFactory;
 import org.apache.calcite.jdbc.CalciteSchema;
 imp

[1/2] drill git commit: DRILL-5864: Selecting a non-existing field from a MapR-DB JSON table fails with NPE.

2017-11-05 Thread amansinha
Repository: drill
Updated Branches:
  refs/heads/master 4a718a0bd -> 7a2fc87ee


DRILL-5864: Selecting a non-existing field from a MapR-DB JSON table fails with 
NPE.


Project: http://git-wip-us.apache.org/repos/asf/drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/drill/commit/125a9271
Tree: http://git-wip-us.apache.org/repos/asf/drill/tree/125a9271
Diff: http://git-wip-us.apache.org/repos/asf/drill/diff/125a9271

Branch: refs/heads/master
Commit: 125a9271d7cf0dfb30aac8e62447507ea0a7d6c9
Parents: 4a718a0
Author: Hanumath Rao Maduri 
Authored: Wed Oct 11 17:07:22 2017 -0700
Committer: Aman Sinha 
Committed: Sun Nov 5 08:20:41 2017 -0800

--
 contrib/format-maprdb/README.md |  6 ++
 .../store/mapr/db/MapRDBFormatPluginConfig.java | 11 +++
 .../mapr/db/json/MaprDBJsonRecordReader.java|  7 ++
 .../drill/maprdb/tests/json/TestSimpleJson.java | 10 +++
 .../exec/vector/complex/fn/JsonReader.java  | 66 +-
 .../exec/vector/complex/fn/JsonReaderUtils.java | 94 
 6 files changed, 129 insertions(+), 65 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/drill/blob/125a9271/contrib/format-maprdb/README.md
--
diff --git a/contrib/format-maprdb/README.md b/contrib/format-maprdb/README.md
index ff19285..a94a7cb 100644
--- a/contrib/format-maprdb/README.md
+++ b/contrib/format-maprdb/README.md
@@ -1,2 +1,8 @@
 drill-mapr-plugin
 =
+By default all the tests in contrib/format-maprdb are disabled.
+To enable and run these tests please use -Pmapr profile to
+compile and execute the tests.
+
+Here is an example of the mvn command to use to run these tests.
+mvn install -Dtests=cluster -Pmapr

http://git-wip-us.apache.org/repos/asf/drill/blob/125a9271/contrib/format-maprdb/src/main/java/org/apache/drill/exec/store/mapr/db/MapRDBFormatPluginConfig.java
--
diff --git 
a/contrib/format-maprdb/src/main/java/org/apache/drill/exec/store/mapr/db/MapRDBFormatPluginConfig.java
 
b/contrib/format-maprdb/src/main/java/org/apache/drill/exec/store/mapr/db/MapRDBFormatPluginConfig.java
index 50a67b4..ad153fe 100644
--- 
a/contrib/format-maprdb/src/main/java/org/apache/drill/exec/store/mapr/db/MapRDBFormatPluginConfig.java
+++ 
b/contrib/format-maprdb/src/main/java/org/apache/drill/exec/store/mapr/db/MapRDBFormatPluginConfig.java
@@ -32,6 +32,12 @@ public class MapRDBFormatPluginConfig extends 
TableFormatPluginConfig {
   public boolean ignoreSchemaChange = false;
   public boolean readAllNumbersAsDouble = false;
   public boolean disableCountOptimization = false;
+  /* This flag is a switch to do special handling in case of
+   * no columns in the query exists in the maprdb table. This flag
+   * can get deprecated once it is observed that this special handling
+   * is not regressing performance of reading maprdb table.
+   */
+  public boolean nonExistentFieldSupport = true;
 
   @Override
   public int hashCode() {
@@ -40,6 +46,7 @@ public class MapRDBFormatPluginConfig extends 
TableFormatPluginConfig {
 result = 31 * result + (ignoreSchemaChange ? 1231 : 1237);
 result = 31 * result + (readAllNumbersAsDouble ? 1231 : 1237);
 result = 31 * result + (disableCountOptimization ? 1231 : 1237);
+result = 31 * result + (nonExistentFieldSupport ? 1231 : 1237);
 return result;
   }
 
@@ -56,6 +63,8 @@ public class MapRDBFormatPluginConfig extends 
TableFormatPluginConfig {
   return false;
 } else if (disableCountOptimization != other.disableCountOptimization) {
   return false;
+} else if (nonExistentFieldSupport != other.nonExistentFieldSupport) {
+  return false;
 }
 return true;
   }
@@ -76,6 +85,8 @@ public class MapRDBFormatPluginConfig extends 
TableFormatPluginConfig {
 return enablePushdown;
   }
 
+  public boolean isNonExistentFieldSupport() { return nonExistentFieldSupport; 
}
+
   public boolean isIgnoreSchemaChange() {
 return ignoreSchemaChange;
   }

http://git-wip-us.apache.org/repos/asf/drill/blob/125a9271/contrib/format-maprdb/src/main/java/org/apache/drill/exec/store/mapr/db/json/MaprDBJsonRecordReader.java
--
diff --git 
a/contrib/format-maprdb/src/main/java/org/apache/drill/exec/store/mapr/db/json/MaprDBJsonRecordReader.java
 
b/contrib/format-maprdb/src/main/java/org/apache/drill/exec/store/mapr/db/json/MaprDBJsonRecordReader.java
index ca31767..113b3ad 100644
--- 
a/contrib/format-maprdb/src/main/java/org/apache/drill/exec/store/mapr/db/json/MaprDBJsonRecordReader.java
+++ 
b/contrib/format-maprdb/src/main/java/org/apache/drill/exec/store/mapr/db/json/MaprDBJsonRecordReader.java
@@ -26,6 +26,7 @@ import java.util.Iterator;
 import java.util.List;