Index: ql/src/test/results/clientpositive/udtf_json_tuple.q.out =================================================================== --- ql/src/test/results/clientpositive/udtf_json_tuple.q.out (revision 1401123) +++ ql/src/test/results/clientpositive/udtf_json_tuple.q.out (working copy) @@ -619,3 +619,19 @@ POSTHOOK: Lineage: json_t.key EXPRESSION [] b c +PREHOOK: query: -- Verify that json_tuple can handle keys/values quoted using single quotes in JSON objects + +SELECT json FROM dest1 a LATERAL VIEW json_tuple("{'key':'value'}", 'key') b as json +PREHOOK: type: QUERY +PREHOOK: Input: default@dest1 +#### A masked pattern was here #### +POSTHOOK: query: -- Verify that json_tuple can handle keys/values quoted using single quotes in JSON objects + +SELECT json FROM dest1 a LATERAL VIEW json_tuple("{'key':'value'}", 'key') b as json +POSTHOOK: type: QUERY +POSTHOOK: Input: default@dest1 +#### A masked pattern was here #### +POSTHOOK: Lineage: dest1.c1 SIMPLE [] +POSTHOOK: Lineage: json_t.jstring EXPRESSION [] +POSTHOOK: Lineage: json_t.key EXPRESSION [] +value Index: ql/src/test/results/clientpositive/udf_get_json_object.q.out =================================================================== --- ql/src/test/results/clientpositive/udf_get_json_object.q.out (revision 1401123) +++ ql/src/test/results/clientpositive/udf_get_json_object.q.out (working copy) @@ -217,3 +217,18 @@ POSTHOOK: Lineage: dest2.c1 SIMPLE [] b c +PREHOOK: query: -- Verify that get_json_object can handle keys/values quoted using single quotes in JSON objects + +SELECT get_json_object("{'key':'value'}", '$.key') from dest2 +PREHOOK: type: QUERY +PREHOOK: Input: default@dest2 +#### A masked pattern was here #### +POSTHOOK: query: -- Verify that get_json_object can handle keys/values quoted using single quotes in JSON objects + +SELECT get_json_object("{'key':'value'}", '$.key') from dest2 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@dest2 +#### A masked pattern was here #### +POSTHOOK: Lineage: dest1.c1 SIMPLE [] +POSTHOOK: Lineage: dest2.c1 SIMPLE [] +value Index: ql/src/test/queries/clientpositive/udf_get_json_object.q =================================================================== --- ql/src/test/queries/clientpositive/udf_get_json_object.q (revision 1401123) +++ ql/src/test/queries/clientpositive/udf_get_json_object.q (working copy) @@ -37,4 +37,8 @@ SELECT * FROM dest2; -SELECT get_json_object(c1, '$.a') FROM dest2; \ No newline at end of file +SELECT get_json_object(c1, '$.a') FROM dest2; + +-- Verify that get_json_object can handle keys/values quoted using single quotes in JSON objects + +SELECT get_json_object("{'key':'value'}", '$.key') from dest2; Index: ql/src/test/queries/clientpositive/udtf_json_tuple.q =================================================================== --- ql/src/test/queries/clientpositive/udtf_json_tuple.q (revision 1401123) +++ ql/src/test/queries/clientpositive/udtf_json_tuple.q (working copy) @@ -44,4 +44,8 @@ SELECT * FROM dest1; -SELECT json FROM dest1 a LATERAL VIEW json_tuple(c1, 'a') b AS json; \ No newline at end of file +SELECT json FROM dest1 a LATERAL VIEW json_tuple(c1, 'a') b AS json; + +-- Verify that json_tuple can handle keys/values quoted using single quotes in JSON objects + +SELECT json FROM dest1 a LATERAL VIEW json_tuple("{'key':'value'}", 'key') b as json; Index: ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDTFJSONTuple.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDTFJSONTuple.java (revision 1401123) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDTFJSONTuple.java (working copy) @@ -57,6 +57,8 @@ static { // Allows for unescaped ASCII control characters in JSON values JSON_FACTORY.enable(Feature.ALLOW_UNQUOTED_CONTROL_CHARS); + // Allows keys and values to be quoted with either double or single quotes + JSON_FACTORY.enable(Feature.ALLOW_SINGLE_QUOTES); } private static final ObjectMapper MAPPER = new ObjectMapper(JSON_FACTORY); private static final JavaType MAP_TYPE = TypeFactory.fromClass(Map.class); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFJson.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFJson.java (revision 1401123) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFJson.java (working copy) @@ -65,6 +65,8 @@ static { // Allows for unescaped ASCII control characters in JSON values JSON_FACTORY.enable(Feature.ALLOW_UNQUOTED_CONTROL_CHARS); + // Allows keys and values to be quoted with either double or single quotes + JSON_FACTORY.enable(Feature.ALLOW_SINGLE_QUOTES); } private static final ObjectMapper MAPPER = new ObjectMapper(JSON_FACTORY); private static final JavaType MAP_TYPE = TypeFactory.fromClass(Map.class);