From 04b395505009e88a3e321c6a9a17f52666adf334 Mon Sep 17 00:00:00 2001 From: Lars Francke Date: Fri, 22 Jun 2012 15:44:22 +0200 Subject: [PATCH] Fix for HIVE-3179 --- .../src/java/org/apache/hadoop/hive/hbase/LazyHBaseRow.java | 4 +++- .../test/org/apache/hadoop/hive/hbase/TestLazyHBaseObject.java | 6 ++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/hbase-handler/src/java/org/apache/hadoop/hive/hbase/LazyHBaseRow.java b/hbase-handler/src/java/org/apache/hadoop/hive/hbase/LazyHBaseRow.java index d35bb52..10a9207 100644 --- a/hbase-handler/src/java/org/apache/hadoop/hive/hbase/LazyHBaseRow.java +++ b/hbase-handler/src/java/org/apache/hadoop/hive/hbase/LazyHBaseRow.java @@ -133,7 +133,6 @@ public class LazyHBaseRow extends LazyStruct { boolean [] fieldsInited = getFieldInited(); if (!fieldsInited[fieldID]) { - fieldsInited[fieldID] = true; ByteArrayRef ref = null; ColumnMapping colMap = columnsMapping.get(fieldID); @@ -164,6 +163,9 @@ public class LazyHBaseRow extends LazyStruct { } } + // Has to be set last because of HIVE-3179: NULL fields would not work otherwise + fieldsInited[fieldID] = true; + return fields[fieldID].getObject(); } diff --git a/hbase-handler/src/test/org/apache/hadoop/hive/hbase/TestLazyHBaseObject.java b/hbase-handler/src/test/org/apache/hadoop/hive/hbase/TestLazyHBaseObject.java index f91be4c..3bd0919 100644 --- a/hbase-handler/src/test/org/apache/hadoop/hive/hbase/TestLazyHBaseObject.java +++ b/hbase-handler/src/test/org/apache/hadoop/hive/hbase/TestLazyHBaseObject.java @@ -546,6 +546,12 @@ public class TestLazyHBaseObject extends TestCase { + "'c':null,'d':'no'}").replace("'", "\""), SerDeUtils.getJSONString(o, oi)); + // This is intentionally duplicated because of HIVE-3179 + assertEquals( + ("{'key':'test-row','a':null,'b':['','a','','']," + + "'c':null,'d':'no'}").replace("'", "\""), + SerDeUtils.getJSONString(o, oi)); + kvs.clear(); kvs.add(new KeyValue(Bytes.toBytes("test-row"), Bytes.toBytes("cfa"), Bytes.toBytes("a"), Bytes.toBytes("123"))); -- 1.7.10.4