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)