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

Reply via email to