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 <anis...@gmail.com> 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