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

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


The following commit(s) were added to refs/heads/master by this push:
     new 280a834  [GOBBLIN-1412] Escape single backslash in avro ORC schema 
conversion
280a834 is described below

commit 280a834b695a6750c6cb62380cfa9fed1660b07e
Author: Jack Moseley <[email protected]>
AuthorDate: Tue Mar 16 17:03:26 2021 -0700

    [GOBBLIN-1412] Escape single backslash in avro ORC schema conversion
    
    Closes #3246 from jack-moseley/escape-backslash
---
 .../src/main/java/org/apache/gobblin/util/AvroUtils.java            | 6 +++---
 .../src/test/java/org/apache/gobblin/util/AvroUtilsTest.java        | 5 +++++
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git 
a/gobblin-utility/src/main/java/org/apache/gobblin/util/AvroUtils.java 
b/gobblin-utility/src/main/java/org/apache/gobblin/util/AvroUtils.java
index cab5627..6990192 100644
--- a/gobblin-utility/src/main/java/org/apache/gobblin/util/AvroUtils.java
+++ b/gobblin-utility/src/main/java/org/apache/gobblin/util/AvroUtils.java
@@ -888,13 +888,13 @@ public class AvroUtils {
   }
 
   /**
-   * Escaping ";" and "'" character in the schema string when it is being used 
in DDL.
+   * Escaping "\", """, ";" and "'" character in the schema string when it is 
being used in DDL.
    * These characters are not allowed to show as part of column name but could 
possibly appear in documentation field.
    * Therefore the escaping behavior won't cause correctness issues.
    */
   public static String sanitizeSchemaString(String schemaString) {
-    return schemaString.replace("\\\"", "\\\\\\\"").replace(";",  "\\;")
-        .replace("'", "\\'");
+    return schemaString.replace("\\\\", "\\\\\\\\").replace("\\\"", "\\\\\\\"")
+        .replace(";",  "\\;").replace("'", "\\'");
   }
 
   /**
diff --git 
a/gobblin-utility/src/test/java/org/apache/gobblin/util/AvroUtilsTest.java 
b/gobblin-utility/src/test/java/org/apache/gobblin/util/AvroUtilsTest.java
index 17cfbcc..11274af 100644
--- a/gobblin-utility/src/test/java/org/apache/gobblin/util/AvroUtilsTest.java
+++ b/gobblin-utility/src/test/java/org/apache/gobblin/util/AvroUtilsTest.java
@@ -299,6 +299,11 @@ public class AvroUtilsTest {
     expectedString = "abc\\\\\\\"";
     Assert.assertEquals(actualString, expectedString);
     Assert.assertEquals(actualString.length(), invalidStringWithSlash.length() 
+ 2);
+
+    String stringWithBackslash = "\\\\d+";
+    actualString = AvroUtils.sanitizeSchemaString(stringWithBackslash);
+    Assert.assertEquals(actualString, "\\\\\\\\d+");
+    Assert.assertEquals(actualString.length(), stringWithBackslash.length() + 
2);
   }
 
   public static List<GenericRecord> getRecordFromFile(String path)

Reply via email to