This is an automated email from the ASF dual-hosted git repository.
anishek pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git
The following commit(s) were added to refs/heads/master by this push:
new 200c0bf HIVE-25857: Replication fails in case of Control Character in
the table description (Ayush Saxena, reviewed by Anishek Agarwal)
200c0bf is described below
commit 200c0bf1feb259f4d95bf065a2ab38fe684383da
Author: Anishek Agarwal <[email protected]>
AuthorDate: Tue Jan 18 12:31:37 2022 +0530
HIVE-25857: Replication fails in case of Control Character in the table
description (Ayush Saxena, reviewed by Anishek Agarwal)
---
.../metastore/messaging/json/JSONMessageDeserializer.java | 3 +++
.../metastore/messaging/json/TestJSONMessageDeserializer.java | 11 +++++++++++
2 files changed, 14 insertions(+)
diff --git
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/messaging/json/JSONMessageDeserializer.java
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/messaging/json/JSONMessageDeserializer.java
index a02d82f..2a851b6 100644
---
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/messaging/json/JSONMessageDeserializer.java
+++
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/messaging/json/JSONMessageDeserializer.java
@@ -19,6 +19,8 @@
package org.apache.hadoop.hive.metastore.messaging.json;
+import com.fasterxml.jackson.core.json.JsonReadFeature;
+
import org.apache.hadoop.hive.metastore.messaging.AbortTxnMessage;
import org.apache.hadoop.hive.metastore.messaging.AddCheckConstraintMessage;
import org.apache.hadoop.hive.metastore.messaging.AddDefaultConstraintMessage;
@@ -64,6 +66,7 @@ public class JSONMessageDeserializer extends
MessageDeserializer {
mapper.configure(MapperFeature.AUTO_DETECT_GETTERS, false);
mapper.configure(MapperFeature.AUTO_DETECT_IS_GETTERS, false);
mapper.configure(MapperFeature.AUTO_DETECT_FIELDS, false);
+
mapper.configure(JsonReadFeature.ALLOW_UNESCAPED_CONTROL_CHARS.mappedFeature(),
true);
}
@Override
diff --git
a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/messaging/json/TestJSONMessageDeserializer.java
b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/messaging/json/TestJSONMessageDeserializer.java
index 4ae19be..c4fb5dc 100644
---
a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/messaging/json/TestJSONMessageDeserializer.java
+++
b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/messaging/json/TestJSONMessageDeserializer.java
@@ -112,4 +112,15 @@ public class TestJSONMessageDeserializer {
}}, 98L);
assertEquals(expected, actual);
}
+
+ @Test
+ public void testDeserializeControlCharacter() throws IOException {
+ String json = "{\"a\":47,\"map\":{\"a\":\"a\",\"b\":\"a value \n for
b\"},\"l\":98}";
+ MyClass actual = JSONMessageDeserializer.mapper.readValue(json,
MyClass.class);
+ MyClass expected = new MyClass(47, new HashMap<String, String>() {{
+ put("a", "a");
+ put("b", "a value \n for b");
+ }}, 98L);
+ assertEquals(expected, actual);
+ }
}
\ No newline at end of file