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

[drill] 03/05: DRILL-6726: Fix case sensitivity issues for views created before DRILL-6492

This is an automated email from the ASF dual-hosted git repository.

boaz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/drill.git

commit 32acc0b43640c125298a83985c601726f7c3f41d
Author: Arina Ielchiieva <ar...@gmail.com>
AuthorDate: Tue Sep 4 14:24:21 2018 +0000

    DRILL-6726: Fix case sensitivity issues for views created before DRILL-6492
    
    closes #1458
---
 .../java/org/apache/drill/exec/dotdrill/View.java  | 28 ++++++++++++----------
 1 file changed, 15 insertions(+), 13 deletions(-)

diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/dotdrill/View.java b/exec/java-exec/src/main/java/org/apache/drill/exec/dotdrill/View.java
index 623ed1d..43f7bdb 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/dotdrill/View.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/dotdrill/View.java
@@ -17,7 +17,9 @@
  */
 package org.apache.drill.exec.dotdrill;
 
+import java.util.Collections;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import org.apache.calcite.avatica.util.TimeUnit;
 import org.apache.calcite.sql.SqlIntervalQualifier;
@@ -29,7 +31,6 @@ import org.apache.drill.exec.planner.types.RelDataTypeDrillImpl;
 import org.apache.drill.exec.planner.types.RelDataTypeHolder;
 import org.apache.calcite.rel.type.RelDataType;
 import org.apache.calcite.rel.type.RelDataTypeFactory;
-import org.apache.calcite.rel.type.RelDataTypeField;
 import org.apache.calcite.sql.type.SqlTypeName;
 
 import com.fasterxml.jackson.annotation.JsonCreator;
@@ -38,7 +39,6 @@ import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.annotation.JsonInclude.Include;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonTypeName;
-import org.apache.drill.shaded.guava.com.google.common.collect.ImmutableList;
 import org.apache.drill.shaded.guava.com.google.common.collect.Lists;
 
 @JsonTypeName("view")
@@ -211,26 +211,28 @@ public class View {
 
 
   public View(String name, String sql, RelDataType rowType, List<String> workspaceSchemaPath) {
-    this.name = name;
-    this.sql = sql;
-    fields = Lists.newArrayList();
-    for (RelDataTypeField f : rowType.getFieldList()) {
-      fields.add(new FieldType(f.getName(), f.getType()));
-    }
-    this.workspaceSchemaPath =
-        workspaceSchemaPath == null ? ImmutableList.<String>of() : ImmutableList.copyOf(workspaceSchemaPath);
+    this(name,
+        sql,
+        rowType.getFieldList().stream()
+            .map(f -> new FieldType(f.getName(), f.getType()))
+            .collect(Collectors.toList()),
+        workspaceSchemaPath);
   }
 
   @JsonCreator
   public View(@JsonProperty("name") String name,
               @JsonProperty("sql") String sql,
               @JsonProperty("fields") List<FieldType> fields,
-              @JsonProperty("workspaceSchemaPath") List<String> workspaceSchemaPath){
+              @JsonProperty("workspaceSchemaPath") List<String> workspaceSchemaPath) {
     this.name = name;
     this.sql = sql;
     this.fields = fields;
-    this.workspaceSchemaPath =
-        workspaceSchemaPath == null ? ImmutableList.<String>of() : ImmutableList.copyOf(workspaceSchemaPath);
+    // for backward compatibility since now all schemas and workspaces are case insensitive and stored in lower case
+    // make sure that given workspace schema path is also in lower case
+    this.workspaceSchemaPath = workspaceSchemaPath == null ? Collections.EMPTY_LIST :
+        workspaceSchemaPath.stream()
+            .map(String::toLowerCase)
+            .collect(Collectors.toList());
   }
 
   public RelDataType getRowType(RelDataTypeFactory factory) {