You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by da...@apache.org on 2014/11/17 19:35:08 UTC
svn commit: r1640203 - in /pig/trunk:
src/org/apache/pig/builtin/JsonLoader.java
src/org/apache/pig/builtin/JsonStorage.java
test/org/apache/pig/test/TestJsonLoaderStorage.java
Author: daijy
Date: Mon Nov 17 18:35:08 2014
New Revision: 1640203
URL: http://svn.apache.org/r1640203
Log:
PIG-3615: Update the way that JsonLoader/JsonStorage deal with BigDecimal
Modified:
pig/trunk/src/org/apache/pig/builtin/JsonLoader.java
pig/trunk/src/org/apache/pig/builtin/JsonStorage.java
pig/trunk/test/org/apache/pig/test/TestJsonLoaderStorage.java
Modified: pig/trunk/src/org/apache/pig/builtin/JsonLoader.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/builtin/JsonLoader.java?rev=1640203&r1=1640202&r2=1640203&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/builtin/JsonLoader.java (original)
+++ pig/trunk/src/org/apache/pig/builtin/JsonLoader.java Mon Nov 17 18:35:08 2014
@@ -25,6 +25,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
+import java.math.BigDecimal;
import org.joda.time.format.ISODateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
Modified: pig/trunk/src/org/apache/pig/builtin/JsonStorage.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/builtin/JsonStorage.java?rev=1640203&r1=1640202&r2=1640203&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/builtin/JsonStorage.java (original)
+++ pig/trunk/src/org/apache/pig/builtin/JsonStorage.java Mon Nov 17 18:35:08 2014
@@ -219,7 +219,7 @@ public class JsonStorage extends StoreFu
return;
case DataType.BIGDECIMAL:
- json.writeStringField(field.getName(), d.toString());
+ json.writeNumberField(field.getName(), (BigDecimal)d);
return;
case DataType.MAP:
Modified: pig/trunk/test/org/apache/pig/test/TestJsonLoaderStorage.java
URL: http://svn.apache.org/viewvc/pig/trunk/test/org/apache/pig/test/TestJsonLoaderStorage.java?rev=1640203&r1=1640202&r2=1640203&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/test/TestJsonLoaderStorage.java (original)
+++ pig/trunk/test/org/apache/pig/test/TestJsonLoaderStorage.java Mon Nov 17 18:35:08 2014
@@ -89,7 +89,7 @@ public class TestJsonLoaderStorage {
"\"g\":\"abc\"," +
"\"h\":\"def\"," +
"\"i\":123456789," +
- "\"j\":\"1234.6789\"," +
+ "\"j\":1234.6789," +
"\"k\":{\"a\":\"ghi\"}," +
"\"l\":{\"a\":123}," +
"\"m\":[{\"a\":123},{\"a\":456},{\"a\":789}]" +
@@ -112,6 +112,12 @@ public class TestJsonLoaderStorage {
"\"m\":null" +
"}";
+ private static final String bigDecimalJson =
+ "{" +
+ "\"a\":123.456," +
+ "\"b\":\"123.456\"" +
+ "}";
+
private static final String badJson =
"{" +
"\"a\":\"good\"," +
@@ -230,7 +236,7 @@ public class TestJsonLoaderStorage {
@SuppressWarnings("rawtypes")
@Test
- public void testJsonLoaderBadRow() throws Exception{
+ public void testJsonLoaderBadRow() throws IOException{
String badJsonFile = createInput(badJson);
pigServer.registerQuery("data = load '" + badJsonFile + "' using JsonLoader('a:chararray, b:chararray');");
@@ -255,6 +261,22 @@ public class TestJsonLoaderStorage {
assertTrue(t.get(1)!=null);
assertTrue(!tuples.hasNext());
}
+
+ @SuppressWarnings("rawtypes")
+ @Test
+ public void testJsonLoaderBigDecimalFormats() throws IOException{
+
+ String bigDecimalJsonFile = createInput(bigDecimalJson);
+ pigServer.registerQuery("data = load '" + bigDecimalJsonFile + "' using JsonLoader('a:bigdecimal, b:bigdecimal');");
+ Iterator<Tuple> tuples = pigServer.openIterator("data");
+
+ Tuple t = tuples.next();
+ assertTrue(t.size()==2);
+ assertTrue(t.get(0)!=null);
+ assertTrue(t.get(1)!=null);
+ assertEquals(t.get(0), t.get(1));
+ assertTrue(!tuples.hasNext());
+ }
@Test
public void testJsonLoaderNull() throws IOException {