DRILL-879: Fix show files to treat '/' as a root of workspace instead of FS


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

Branch: refs/heads/master
Commit: b81f50008982fc8bb355b3fbaa91c7b4dcfada1c
Parents: e29d2fc
Author: Mehant Baid <meha...@gmail.com>
Authored: Mon Jul 7 19:25:29 2014 -0700
Committer: Jacques Nadeau <jacq...@apache.org>
Committed: Tue Jul 8 13:50:04 2014 -0700

----------------------------------------------------------------------
 .../exec/planner/sql/handlers/ShowFileHandler.java   | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/b81f5000/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/ShowFileHandler.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/ShowFileHandler.java
 
b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/ShowFileHandler.java
index 8ce0463..2be4b43 100644
--- 
a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/ShowFileHandler.java
+++ 
b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/ShowFileHandler.java
@@ -57,11 +57,21 @@ public class ShowFileHandler extends DefaultSqlHandler {
 
     DrillFileSystem fs = null;
     String defaultLocation = null;
+    String fromDir = "./";
 
     try {
+      SchemaPlus defaultSchema = context.getNewDefaultSchema();
+      SchemaPlus drillSchema = defaultSchema;
+
+      // We are not sure if the full from clause is just the schema or 
includes table name, first try to see if the full path specified is a schema
+      try {
+        drillSchema = findSchema(context.getRootSchema(), defaultSchema, 
from.names);
+      } catch (Exception e) {
+          // Entire from clause is not a schema, try to obtain the schema 
without the last part of the specified clause.
+          drillSchema = findSchema(context.getRootSchema(), defaultSchema, 
from.names.subList(0, from.names.size() - 1));
+          fromDir = fromDir + from.names.get((from.names.size() - 1));
+      }
 
-      // Traverse and find the schema
-      SchemaPlus drillSchema = findSchema(context.getRootSchema(), 
context.getNewDefaultSchema(), from.names.subList(0, from.names.size() - 1));
       AbstractSchema tempSchema = getDrillSchema(drillSchema);
       WorkspaceSchema schema = null;
       if (tempSchema instanceof WorkspaceSchema) {
@@ -81,7 +91,6 @@ public class ShowFileHandler extends DefaultSqlHandler {
     }
 
     List<ShowFilesCommandResult> rows = new ArrayList<>();
-    String fromDir = from.names.get((from.names.size() - 1));
 
     for (FileStatus fileStatus : fs.list(false, new Path(defaultLocation, 
fromDir))) {
       ShowFilesCommandResult result = new 
ShowFilesCommandResult(fileStatus.getPath().getName(), fileStatus.isDir(),

Reply via email to