Repository: incubator-gobblin
Updated Branches:
  refs/heads/master 11646563a -> 9b68773e0


[GOBBLIN-175] Escape string in hive query for avro2orc conversion

Closes #2029 from aditya1105/avro2orc


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

Branch: refs/heads/master
Commit: 9b68773e0384f75f523203ff46178f183c51a485
Parents: 1164656
Author: aditya1105 <[email protected]>
Authored: Sat Jul 29 13:52:55 2017 -0700
Committer: Abhishek Tiwari <[email protected]>
Committed: Sat Jul 29 13:52:55 2017 -0700

----------------------------------------------------------------------
 .../hive/query/HiveAvroORCQueryGenerator.java       | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-gobblin/blob/9b68773e/gobblin-data-management/src/main/java/gobblin/data/management/conversion/hive/query/HiveAvroORCQueryGenerator.java
----------------------------------------------------------------------
diff --git 
a/gobblin-data-management/src/main/java/gobblin/data/management/conversion/hive/query/HiveAvroORCQueryGenerator.java
 
b/gobblin-data-management/src/main/java/gobblin/data/management/conversion/hive/query/HiveAvroORCQueryGenerator.java
index 850ee4d..023e060 100644
--- 
a/gobblin-data-management/src/main/java/gobblin/data/management/conversion/hive/query/HiveAvroORCQueryGenerator.java
+++ 
b/gobblin-data-management/src/main/java/gobblin/data/management/conversion/hive/query/HiveAvroORCQueryGenerator.java
@@ -511,7 +511,7 @@ public class HiveAvroORCQueryGenerator {
       if (hiveColumns.isPresent()) {
         hiveColumns.get().put(name, type);
       }
-      columns.append(String.format("  `%s` %s COMMENT '%s'", name, type, 
comment));
+      columns.append(String.format("  `%s` %s COMMENT '%s'", name, type, 
escapeStringForHive(comment)));
     }
 
     return columns.toString();
@@ -848,7 +848,7 @@ public class HiveAvroORCQueryGenerator {
             ddl.add(String.format("USE %s%n", finalDbName));
             ddl.add(String.format("ALTER TABLE `%s` CHANGE COLUMN %s %s %s 
COMMENT '%s'",
                 finalTableName, evolvedColumn.getKey(), 
evolvedColumn.getKey(), evolvedColumn.getValue(),
-                destinationField.getComment()));
+                escapeStringForHive(destinationField.getComment())));
           }
           found = true;
           break;
@@ -1101,4 +1101,16 @@ public class HiveAvroORCQueryGenerator {
       return String.format("'%s'", value);
     }
   };
+
+  private static String escapeStringForHive(String st) {
+    char backslash = '\\';
+    char singleQuote = '\'';
+    char semicolon = ';';
+    String escapedSingleQuote = String.valueOf(backslash) + 
String.valueOf(singleQuote);
+    String escapedSemicolon = String.valueOf(backslash) + 
String.valueOf(semicolon);
+
+    st = st.replace(String.valueOf(singleQuote), escapedSingleQuote)
+        .replace(String.valueOf(semicolon), escapedSemicolon);
+    return st;
+  }
 }

Reply via email to