You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by zs...@apache.org on 2009/02/17 20:39:32 UTC
svn commit: r745212 [9/9] - in /hadoop/hive/trunk: ./ metastore/if/
metastore/src/gen-javabean/org/apache/hadoop/hive/metastore/api/
metastore/src/gen-php/ metastore/src/gen-py/hive_metastore/
metastore/src/java/org/apache/hadoop/hive/metastore/ ql/src...
Added: hadoop/hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/lazy/TestLazyPrimitive.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/lazy/TestLazyPrimitive.java?rev=745212&view=auto
==============================================================================
--- hadoop/hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/lazy/TestLazyPrimitive.java (added)
+++ hadoop/hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/lazy/TestLazyPrimitive.java Tue Feb 17 19:39:29 2009
@@ -0,0 +1,316 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hive.serde2.lazy;
+
+
+import junit.framework.TestCase;
+
+public class TestLazyPrimitive extends TestCase {
+
+ /**
+ * Test the LazyByte class.
+ */
+ public void testLazyByte() throws Throwable {
+ try {
+ LazyByte b = new LazyByte();
+ b.setAll(new byte[]{'0'}, 0, 1);
+ assertEquals(Byte.valueOf((byte)0), b.getPrimitiveObject());
+ b.setAll(new byte[]{'+', '0'}, 0, 2);
+ assertEquals(Byte.valueOf((byte)0), b.getPrimitiveObject());
+ b.setAll(new byte[]{'-', '0'}, 0, 2);
+ assertEquals(Byte.valueOf((byte)0), b.getPrimitiveObject());
+ b.setAll(new byte[]{'a', '1', 'b'}, 1, 1);
+ assertEquals(Byte.valueOf((byte)1), b.getPrimitiveObject());
+ b.setAll(new byte[]{'a', '-', '1'}, 1, 2);
+ assertEquals(Byte.valueOf((byte)-1), b.getPrimitiveObject());
+ b.setAll(new byte[]{'a', '+', '1'}, 1, 2);
+ assertEquals(Byte.valueOf((byte)1), b.getPrimitiveObject());
+ b.setAll(new byte[]{'-', '1', '2', '8'}, 0, 4);
+ assertEquals(Byte.valueOf((byte)-128), b.getPrimitiveObject());
+ b.setAll(new byte[]{'+', '1', '2', '7'}, 0, 4);
+ assertEquals(Byte.valueOf((byte)127), b.getPrimitiveObject());
+
+ b.setAll(new byte[]{'a', '1', 'b'}, 1, 2);
+ assertNull(b.getPrimitiveObject());
+ b.setAll(new byte[]{'+', '1', '2', '8'}, 0, 4);
+ assertNull(b.getPrimitiveObject());
+ b.setAll(new byte[]{'-', '1', '2', '9'}, 0, 4);
+ assertNull(b.getPrimitiveObject());
+ b.setAll(new byte[]{'-', '1', '2', '3'}, 0, 1);
+ assertNull(b.getPrimitiveObject());
+ b.setAll(new byte[]{'+', '1', '2', '3'}, 0, 1);
+ assertNull(b.getPrimitiveObject());
+
+ } catch (Throwable e) {
+ e.printStackTrace();
+ throw e;
+ }
+ }
+
+ /**
+ * Test the LazyShort class.
+ */
+ public void testLazyShort() throws Throwable {
+ try {
+ LazyShort b = new LazyShort();
+ b.setAll(new byte[]{'0'}, 0, 1);
+ assertEquals(Short.valueOf((short)0), b.getPrimitiveObject());
+ b.setAll(new byte[]{'+', '0'}, 0, 2);
+ assertEquals(Short.valueOf((short)0), b.getPrimitiveObject());
+ b.setAll(new byte[]{'-', '0'}, 0, 2);
+ assertEquals(Short.valueOf((short)0), b.getPrimitiveObject());
+ b.setAll(new byte[]{'a', '1', 'b'}, 1, 1);
+ assertEquals(Short.valueOf((short)1), b.getPrimitiveObject());
+ b.setAll(new byte[]{'a', '-', '1'}, 1, 2);
+ assertEquals(Short.valueOf((short)-1), b.getPrimitiveObject());
+ b.setAll(new byte[]{'a', '+', '1'}, 1, 2);
+ assertEquals(Short.valueOf((short)1), b.getPrimitiveObject());
+ b.setAll(new byte[]{'-', '1', '2', '8'}, 0, 4);
+ assertEquals(Short.valueOf((short)-128), b.getPrimitiveObject());
+ b.setAll(new byte[]{'+', '1', '2', '7'}, 0, 4);
+ assertEquals(Short.valueOf((short)127), b.getPrimitiveObject());
+ b.setAll(new byte[]{'-', '3', '2', '7', '6', '8'}, 0, 6);
+ assertEquals(Short.valueOf((short)-32768), b.getPrimitiveObject());
+ b.setAll(new byte[]{'+', '3', '2', '7', '6', '7'}, 0, 6);
+ assertEquals(Short.valueOf((short)32767), b.getPrimitiveObject());
+
+ b.setAll(new byte[]{'a', '1', 'b'}, 1, 2);
+ assertNull(b.getPrimitiveObject());
+ b.setAll(new byte[]{'-', '3', '2', '7', '6', '9'}, 0, 6);
+ assertNull(b.getPrimitiveObject());
+ b.setAll(new byte[]{'+', '3', '2', '7', '6', '8'}, 0, 6);
+ assertNull(b.getPrimitiveObject());
+ b.setAll(new byte[]{'-', '1', '2', '3'}, 0, 1);
+ assertNull(b.getPrimitiveObject());
+ b.setAll(new byte[]{'+', '1', '2', '3'}, 0, 1);
+ assertNull(b.getPrimitiveObject());
+
+ } catch (Throwable e) {
+ e.printStackTrace();
+ throw e;
+ }
+ }
+
+
+ /**
+ * Test the LazyInteger class.
+ */
+ public void testLazyInteger() throws Throwable {
+ try {
+ LazyInteger b = new LazyInteger();
+ b.setAll(new byte[]{'0'}, 0, 1);
+ assertEquals(Integer.valueOf((int)0), b.getPrimitiveObject());
+ b.setAll(new byte[]{'+', '0'}, 0, 2);
+ assertEquals(Integer.valueOf((int)0), b.getPrimitiveObject());
+ b.setAll(new byte[]{'-', '0'}, 0, 2);
+ assertEquals(Integer.valueOf((int)0), b.getPrimitiveObject());
+ b.setAll(new byte[]{'a', '1', 'b'}, 1, 1);
+ assertEquals(Integer.valueOf((int)1), b.getPrimitiveObject());
+ b.setAll(new byte[]{'a', '-', '1'}, 1, 2);
+ assertEquals(Integer.valueOf((int)-1), b.getPrimitiveObject());
+ b.setAll(new byte[]{'a', '+', '1'}, 1, 2);
+ assertEquals(Integer.valueOf((int)1), b.getPrimitiveObject());
+ b.setAll(new byte[]{'-', '1', '2', '8'}, 0, 4);
+ assertEquals(Integer.valueOf((int)-128), b.getPrimitiveObject());
+ b.setAll(new byte[]{'+', '1', '2', '7'}, 0, 4);
+ assertEquals(Integer.valueOf((int)127), b.getPrimitiveObject());
+ b.setAll(new byte[]{'-', '3', '2', '7', '6', '8'}, 0, 6);
+ assertEquals(Integer.valueOf((int)-32768), b.getPrimitiveObject());
+ b.setAll(new byte[]{'+', '3', '2', '7', '6', '7'}, 0, 6);
+ assertEquals(Integer.valueOf((int)32767), b.getPrimitiveObject());
+ b.setAll(new byte[]{'-', '2', '1', '4', '7', '4', '8', '3', '6', '4', '8'}, 0, 11);
+ assertEquals(Integer.valueOf((int)-2147483648), b.getPrimitiveObject());
+ b.setAll(new byte[]{'+', '2', '1', '4', '7', '4', '8', '3', '6', '4', '7'}, 0, 11);
+ assertEquals(Integer.valueOf((int)2147483647), b.getPrimitiveObject());
+
+ b.setAll(new byte[]{'a', '1', 'b'}, 1, 2);
+ assertNull(b.getPrimitiveObject());
+ b.setAll(new byte[]{'-', '2', '1', '4', '7', '4', '8', '3', '6', '4', '9'}, 0, 11);
+ assertNull(b.getPrimitiveObject());
+ b.setAll(new byte[]{'+', '2', '1', '4', '7', '4', '8', '3', '6', '4', '8'}, 0, 11);
+ assertNull(b.getPrimitiveObject());
+ b.setAll(new byte[]{'-', '1', '2', '3'}, 0, 1);
+ assertNull(b.getPrimitiveObject());
+ b.setAll(new byte[]{'+', '1', '2', '3'}, 0, 1);
+ assertNull(b.getPrimitiveObject());
+
+ } catch (Throwable e) {
+ e.printStackTrace();
+ throw e;
+ }
+ }
+
+
+ /**
+ * Test the LazyLong class.
+ */
+ public void testLazyLong() throws Throwable {
+ try {
+ LazyLong b = new LazyLong();
+ b.setAll(new byte[]{'0'}, 0, 1);
+ assertEquals(Long.valueOf((long)0), b.getPrimitiveObject());
+ b.setAll(new byte[]{'+', '0'}, 0, 2);
+ assertEquals(Long.valueOf((long)0), b.getPrimitiveObject());
+ b.setAll(new byte[]{'-', '0'}, 0, 2);
+ assertEquals(Long.valueOf((long)0), b.getPrimitiveObject());
+ b.setAll(new byte[]{'a', '1', 'b'}, 1, 1);
+ assertEquals(Long.valueOf((long)1), b.getPrimitiveObject());
+ b.setAll(new byte[]{'a', '-', '1'}, 1, 2);
+ assertEquals(Long.valueOf((long)-1), b.getPrimitiveObject());
+ b.setAll(new byte[]{'a', '+', '1'}, 1, 2);
+ assertEquals(Long.valueOf((long)1), b.getPrimitiveObject());
+ b.setAll(new byte[]{'-', '1', '2', '8'}, 0, 4);
+ assertEquals(Long.valueOf((long)-128), b.getPrimitiveObject());
+ b.setAll(new byte[]{'+', '1', '2', '7'}, 0, 4);
+ assertEquals(Long.valueOf((long)127), b.getPrimitiveObject());
+ b.setAll(new byte[]{'-', '3', '2', '7', '6', '8'}, 0, 6);
+ assertEquals(Long.valueOf((long)-32768), b.getPrimitiveObject());
+ b.setAll(new byte[]{'+', '3', '2', '7', '6', '7'}, 0, 6);
+ assertEquals(Long.valueOf((long)32767), b.getPrimitiveObject());
+ b.setAll(new byte[]{'-', '2', '1', '4', '7', '4', '8', '3', '6', '4', '8'}, 0, 11);
+ assertEquals(Long.valueOf((long)-2147483648), b.getPrimitiveObject());
+ b.setAll(new byte[]{'+', '2', '1', '4', '7', '4', '8', '3', '6', '4', '7'}, 0, 11);
+ assertEquals(Long.valueOf((long)2147483647), b.getPrimitiveObject());
+ b.setAll(new byte[]{'-', '9', '2', '2', '3', '3', '7', '2', '0', '3', '6', '8', '5',
+ '4', '7', '7', '5', '8', '0', '8'}, 0, 20);
+ assertEquals(Long.valueOf((long)-9223372036854775808L), b.getPrimitiveObject());
+ b.setAll(new byte[]{'+', '9', '2', '2', '3', '3', '7', '2', '0', '3', '6', '8', '5',
+ '4', '7', '7', '5', '8', '0', '7'}, 0, 20);
+ assertEquals(Long.valueOf((long)9223372036854775807L), b.getPrimitiveObject());
+
+ b.setAll(new byte[]{'a', '1', 'b'}, 1, 2);
+ assertNull(b.getPrimitiveObject());
+ b.setAll(new byte[]{'-', '9', '2', '2', '3', '3', '7', '2', '0', '3', '6', '8', '5',
+ '4', '7', '7', '5', '8', '0', '9'}, 0, 20);
+ assertNull(b.getPrimitiveObject());
+ b.setAll(new byte[]{'+', '9', '2', '2', '3', '3', '7', '2', '0', '3', '6', '8', '5',
+ '4', '7', '7', '5', '8', '0', '8'}, 0, 20);
+ assertNull(b.getPrimitiveObject());
+ b.setAll(new byte[]{'-', '1', '2', '3'}, 0, 1);
+ assertNull(b.getPrimitiveObject());
+ b.setAll(new byte[]{'+', '1', '2', '3'}, 0, 1);
+ assertNull(b.getPrimitiveObject());
+
+ } catch (Throwable e) {
+ e.printStackTrace();
+ throw e;
+ }
+ }
+
+ /**
+ * Test the LazyDouble class.
+ */
+ public void testLazyDouble() throws Throwable {
+ try {
+ LazyDouble b = new LazyDouble();
+ b.setAll(new byte[]{'0'}, 0, 1);
+ assertEquals(Double.valueOf((double)0), b.getPrimitiveObject());
+ b.setAll(new byte[]{'+', '0'}, 0, 2);
+ assertEquals(Double.valueOf((double)0), b.getPrimitiveObject());
+ b.setAll(new byte[]{'-', '0'}, 0, 2);
+ assertEquals(Double.valueOf((double)-0.0), b.getPrimitiveObject());
+ b.setAll(new byte[]{'a', '1', 'b'}, 1, 1);
+ assertEquals(Double.valueOf((double)1), b.getPrimitiveObject());
+ b.setAll(new byte[]{'a', '-', '1'}, 1, 2);
+ assertEquals(Double.valueOf((double)-1), b.getPrimitiveObject());
+ b.setAll(new byte[]{'a', '+', '1'}, 1, 2);
+ assertEquals(Double.valueOf((double)1), b.getPrimitiveObject());
+ b.setAll(new byte[]{'-', '1', '2', '8'}, 0, 4);
+ assertEquals(Double.valueOf((double)-128), b.getPrimitiveObject());
+ b.setAll(new byte[]{'+', '1', '2', '7'}, 0, 4);
+ assertEquals(Double.valueOf((double)127), b.getPrimitiveObject());
+ b.setAll(new byte[]{'-', '3', '2', '7', '6', '8'}, 0, 6);
+ assertEquals(Double.valueOf((double)-32768), b.getPrimitiveObject());
+ b.setAll(new byte[]{'+', '3', '2', '7', '6', '7'}, 0, 6);
+ assertEquals(Double.valueOf((double)32767), b.getPrimitiveObject());
+ b.setAll(new byte[]{'-', '2', '1', '4', '7', '4', '8', '3', '6', '4', '8'}, 0, 11);
+ assertEquals(Double.valueOf((double)-2147483648), b.getPrimitiveObject());
+ b.setAll(new byte[]{'+', '2', '1', '4', '7', '4', '8', '3', '6', '4', '7'}, 0, 11);
+ assertEquals(Double.valueOf((double)2147483647), b.getPrimitiveObject());
+ b.setAll(new byte[]{'-', '9', '2', '2', '3', '3', '7', '2', '0', '3', '6', '8', '5',
+ '4', '7', '7', '5', '8', '0', '8'}, 0, 20);
+ assertEquals(Double.valueOf((double)-9223372036854775808L), b.getPrimitiveObject());
+ b.setAll(new byte[]{'+', '9', '2', '2', '3', '3', '7', '2', '0', '3', '6', '8', '5',
+ '4', '7', '7', '5', '8', '0', '7'}, 0, 20);
+ assertEquals(Double.valueOf((long)9223372036854775807L), b.getPrimitiveObject());
+
+ b.setAll(new byte[]{'-', '3', '.', '7', '6', '8'}, 0, 6);
+ assertEquals(Double.valueOf((double)-3.768), b.getPrimitiveObject());
+ b.setAll(new byte[]{'+', '3', '.', '7', '6', '7'}, 0, 6);
+ assertEquals(Double.valueOf((double)3.767), b.getPrimitiveObject());
+ b.setAll(new byte[]{'-', '2', '.', '4', '7', '4', '8', '3', '6', 'e', '8'}, 0, 11);
+ assertEquals(Double.valueOf((double)-2.474836e8), b.getPrimitiveObject());
+ b.setAll(new byte[]{'+', '2', '.', '4', '7', '4', '8', '3', 'E', '-', '7'}, 0, 11);
+ assertEquals(Double.valueOf((double)2.47483E-7), b.getPrimitiveObject());
+ b.setAll(new byte[]{'-', '.', '4', '7', '4', '8', '3', '6', 'e', '8'}, 0, 10);
+ assertEquals(Double.valueOf((double)-.474836e8), b.getPrimitiveObject());
+ b.setAll(new byte[]{'+', '.', '4', '7', '4', '8', '3', 'E', '-', '7'}, 0, 10);
+ assertEquals(Double.valueOf((double).47483E-7), b.getPrimitiveObject());
+ b.setAll(new byte[]{'-', '2', '1', '4', '7', '4', '8', '3', '6', '4', '.'}, 0, 11);
+ assertEquals(Double.valueOf((double)-214748364.), b.getPrimitiveObject());
+ b.setAll(new byte[]{'+', '2', '1', '4', '7', '4', '8', '3', '6', '4', '.'}, 0, 11);
+ assertEquals(Double.valueOf((double)+214748364.), b.getPrimitiveObject());
+
+ b.setAll(new byte[]{'.', '0'}, 0, 2);
+ assertEquals(Double.valueOf((double).0), b.getPrimitiveObject());
+ b.setAll(new byte[]{'0', '.'}, 0, 2);
+ assertEquals(Double.valueOf((double)0.), b.getPrimitiveObject());
+
+ b.setAll(new byte[]{'a', '1', 'b'}, 1, 2);
+ assertNull(b.getPrimitiveObject());
+ assertNull(b.getPrimitiveObject());
+ b.setAll(new byte[]{'.', '1', '2', '3'}, 0, 1);
+ assertNull(b.getPrimitiveObject());
+ b.setAll(new byte[]{'-', '1', '2', '3'}, 0, 1);
+ assertNull(b.getPrimitiveObject());
+ b.setAll(new byte[]{'+', '1', '2', '3'}, 0, 1);
+ assertNull(b.getPrimitiveObject());
+
+ b.setAll(new byte[]{'-', '1', 'e', '3', '3', '3', '3', '3', '3'}, 0, 9);
+ assertEquals(Double.NEGATIVE_INFINITY, b.getPrimitiveObject());
+ b.setAll(new byte[]{'+', '1', 'e', '3', '3', '3', '3', '3', '3'}, 0, 9);
+ assertEquals(Double.POSITIVE_INFINITY, b.getPrimitiveObject());
+
+ b.setAll(new byte[]{'+', '1', 'e', '-', '3', '3', '3', '3', '3'}, 0, 8);
+ assertEquals(Double.valueOf((double)0), b.getPrimitiveObject());
+ b.setAll(new byte[]{'-', '1', 'e', '-', '3', '3', '3', '3', '3'}, 0, 8);
+ assertEquals(Double.valueOf((double)-0.0), b.getPrimitiveObject());
+
+ } catch (Throwable e) {
+ e.printStackTrace();
+ throw e;
+ }
+ }
+
+ /**
+ * Test the LazyString class.
+ */
+ public void testLazyString() throws Throwable {
+ try {
+ LazyString b = new LazyString();
+ b.setAll(new byte[]{'0'}, 0, 1);
+ assertEquals("0", b.getPrimitiveObject());
+ b.setAll(new byte[]{'0', '1', '2'}, 1, 1);
+ assertEquals("1", b.getPrimitiveObject());
+
+ } catch (Throwable e) {
+ e.printStackTrace();
+ throw e;
+ }
+ }
+}
Added: hadoop/hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/lazy/TestLazySimpleSerDe.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/lazy/TestLazySimpleSerDe.java?rev=745212&view=auto
==============================================================================
--- hadoop/hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/lazy/TestLazySimpleSerDe.java (added)
+++ hadoop/hive/trunk/serde/src/test/org/apache/hadoop/hive/serde2/lazy/TestLazySimpleSerDe.java Tue Feb 17 19:39:29 2009
@@ -0,0 +1,187 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hive.serde2.lazy;
+
+
+import java.util.List;
+import java.util.Properties;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.hive.serde.Constants;
+import org.apache.hadoop.hive.serde2.SerDeException;
+import org.apache.hadoop.hive.serde2.objectinspector.StructField;
+import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector;
+import org.apache.hadoop.io.Text;
+
+import junit.framework.TestCase;
+
+public class TestLazySimpleSerDe extends TestCase {
+
+ /**
+ * Test the LazySimpleSerDe class.
+ */
+ public void testLazySimpleSerDe() throws Throwable {
+ try {
+ // Create the SerDe
+ LazySimpleSerDe serDe = new LazySimpleSerDe();
+ Configuration conf = new Configuration();
+ Properties tbl = createProperties();
+ serDe.initialize(conf, tbl);
+
+ // Data
+ Text t = new Text("123\t456\t789\t1000\t5.3\thive and hadoop\t1.\tNULL");
+ String s = "123\t456\t789\t1000\t5.3\thive and hadoop\tNULL\tNULL";
+ Object[] expectedFieldsData = { (Object)Byte.valueOf((byte)123),
+ Short.valueOf((short)456), Integer.valueOf(789),
+ Long.valueOf(1000), Double.valueOf(5.3), "hive and hadoop", null,
+ null
+ };
+
+ // Test
+ deserializeAndSerialize(serDe, t, s, expectedFieldsData);
+
+ } catch (Throwable e) {
+ e.printStackTrace();
+ throw e;
+ }
+ }
+
+ private void deserializeAndSerialize(LazySimpleSerDe serDe, Text t, String s,
+ Object[] expectedFieldsData) throws SerDeException {
+ // Get the row structure
+ StructObjectInspector oi = (StructObjectInspector)serDe.getObjectInspector();
+ List<? extends StructField> fieldRefs = oi.getAllStructFieldRefs();
+ assertEquals(8, fieldRefs.size());
+
+ // Deserialize
+ Object row = serDe.deserialize(t);
+ for (int i = 0; i < fieldRefs.size(); i++) {
+ Object fieldData = oi.getStructFieldData(row, fieldRefs.get(i));
+ assertEquals("Field " + i, fieldData, expectedFieldsData[i]);
+ }
+ // Serialize
+ assertEquals(Text.class, serDe.getSerializedClass());
+ Text serializedText = (Text)serDe.serialize(row, oi);
+ assertEquals("Serialized data", s, serializedText.toString());
+ }
+
+ private Properties createProperties() {
+ Properties tbl = new Properties();
+
+ // Set the configuration parameters
+ tbl.setProperty(Constants.SERIALIZATION_FORMAT, "9");
+ tbl.setProperty("columns",
+ "abyte,ashort,aint,along,adouble,astring,anullint,anullstring");
+ tbl.setProperty("columns.types",
+ "tinyint:smallint:int:bigint:double:string:int:string");
+ tbl.setProperty(Constants.SERIALIZATION_NULL_FORMAT, "NULL");
+ return tbl;
+ }
+
+ /**
+ * Test the LazySimpleSerDe class with LastColumnTakesRest option.
+ */
+ public void testLazySimpleSerDeLastColumnTakesRest() throws Throwable {
+ try {
+ // Create the SerDe
+ LazySimpleSerDe serDe = new LazySimpleSerDe();
+ Configuration conf = new Configuration();
+ Properties tbl = createProperties();
+ tbl.setProperty(Constants.SERIALIZATION_LAST_COLUMN_TAKES_REST, "true");
+ serDe.initialize(conf, tbl);
+
+ // Data
+ Text t = new Text("123\t456\t789\t1000\t5.3\thive and hadoop\t1.\ta\tb\t");
+ String s = "123\t456\t789\t1000\t5.3\thive and hadoop\tNULL\ta\tb\t";
+ Object[] expectedFieldsData = { (Object)Byte.valueOf((byte)123),
+ Short.valueOf((short)456), Integer.valueOf(789),
+ Long.valueOf(1000), Double.valueOf(5.3), "hive and hadoop", null,
+ "a\tb\t"
+ };
+
+ // Test
+ deserializeAndSerialize(serDe, t, s, expectedFieldsData);
+
+ } catch (Throwable e) {
+ e.printStackTrace();
+ throw e;
+ }
+ }
+
+
+ /**
+ * Test the LazySimpleSerDe class with extra columns.
+ */
+ public void testLazySimpleSerDeExtraColumns() throws Throwable {
+ try {
+ // Create the SerDe
+ LazySimpleSerDe serDe = new LazySimpleSerDe();
+ Configuration conf = new Configuration();
+ Properties tbl = createProperties();
+ serDe.initialize(conf, tbl);
+
+ // Data
+ Text t = new Text("123\t456\t789\t1000\t5.3\thive and hadoop\t1.\ta\tb\t");
+ String s = "123\t456\t789\t1000\t5.3\thive and hadoop\tNULL\ta";
+ Object[] expectedFieldsData = { (Object)Byte.valueOf((byte)123),
+ Short.valueOf((short)456), Integer.valueOf(789),
+ Long.valueOf(1000), Double.valueOf(5.3), "hive and hadoop", null,
+ "a"
+ };
+
+ // Test
+ deserializeAndSerialize(serDe, t, s, expectedFieldsData);
+
+ } catch (Throwable e) {
+ e.printStackTrace();
+ throw e;
+ }
+ }
+
+
+ /**
+ * Test the LazySimpleSerDe class with missing columns.
+ */
+ public void testLazySimpleSerDeMissingColumns() throws Throwable {
+ try {
+ // Create the SerDe
+ LazySimpleSerDe serDe = new LazySimpleSerDe();
+ Configuration conf = new Configuration();
+ Properties tbl = createProperties();
+ serDe.initialize(conf, tbl);
+
+ // Data
+ Text t = new Text("123\t456\t789\t1000\t5.3\t");
+ String s = "123\t456\t789\t1000\t5.3\t\tNULL\tNULL";
+ Object[] expectedFieldsData = { (Object)Byte.valueOf((byte)123),
+ Short.valueOf((short)456), Integer.valueOf(789),
+ Long.valueOf(1000), Double.valueOf(5.3), "", null,
+ null
+ };
+
+ // Test
+ deserializeAndSerialize(serDe, t, s, expectedFieldsData);
+
+ } catch (Throwable e) {
+ e.printStackTrace();
+ throw e;
+ }
+ }
+
+
+}