[2/2] drill git commit: DRILL-5878: TableNotFound exception is being reported for a wrong storage plugin.
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.
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;