diff --git ql/src/java/org/apache/hadoop/hive/ql/udf/generic/AbstractGenericUDFEWAHBitmapBop.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/AbstractGenericUDFEWAHBitmapBop.java index 3151c8a..62065f0 100644 --- ql/src/java/org/apache/hadoop/hive/ql/udf/generic/AbstractGenericUDFEWAHBitmapBop.java +++ ql/src/java/org/apache/hadoop/hive/ql/udf/generic/AbstractGenericUDFEWAHBitmapBop.java @@ -104,6 +104,7 @@ abstract public class AbstractGenericUDFEWAHBitmapBop extends GenericUDF { } catch (IOException e) { throw new RuntimeException(e); } + ret.clear(); List retList = bitmapToWordArray(bitmapAnd); for (LongWritable l : retList) { ret.add(l); diff --git ql/src/test/queries/clientpositive/udf_bitmap_and.q ql/src/test/queries/clientpositive/udf_bitmap_and.q index 75f9608..7ea50da 100644 --- ql/src/test/queries/clientpositive/udf_bitmap_and.q +++ ql/src/test/queries/clientpositive/udf_bitmap_and.q @@ -1,3 +1,12 @@ select ewah_bitmap_and(array(13,2,4,8589934592,4096,0), array(13,2,4,8589934592,4096,0)) from src limit 1; - select ewah_bitmap_and(array(13,2,4,8589934592,4096,0), array(8,2,4,8589934592,128,0)) from src limit 1; + +drop table bitmap_test; +create table bitmap_test (a array, b array); + +insert overwrite table bitmap_test +select array(13,2,4,8589934592,4096,0), array(8,2,4,8589934592,128,0) from src limit 10; + +select ewah_bitmap_and(a,b) from bitmap_test; + +drop table bitmap_test; diff --git ql/src/test/queries/clientpositive/udf_bitmap_or.q ql/src/test/queries/clientpositive/udf_bitmap_or.q index 505a64d..0b71e68 100644 --- ql/src/test/queries/clientpositive/udf_bitmap_or.q +++ ql/src/test/queries/clientpositive/udf_bitmap_or.q @@ -1,3 +1,12 @@ select ewah_bitmap_or(array(13,2,4,8589934592,4096,0), array(13,2,4,8589934592,4096,0)) from src limit 1; - select ewah_bitmap_or(array(13,2,4,8589934592,4096,0), array(8,2,4,8589934592,128,0)) from src limit 1; + +drop table bitmap_test; +create table bitmap_test (a array, b array); + +insert overwrite table bitmap_test +select array(13,2,4,8589934592,4096,0), array(8,2,4,8589934592,128,0) from src limit 10; + +select ewah_bitmap_or(a,b) from bitmap_test; + +drop table bitmap_test; diff --git ql/src/test/results/clientpositive/udf_bitmap_and.q.out ql/src/test/results/clientpositive/udf_bitmap_and.q.out index 8a2362e..9eafeb4 100644 --- ql/src/test/results/clientpositive/udf_bitmap_and.q.out +++ ql/src/test/results/clientpositive/udf_bitmap_and.q.out @@ -1,18 +1,69 @@ PREHOOK: query: select ewah_bitmap_and(array(13,2,4,8589934592,4096,0), array(13,2,4,8589934592,4096,0)) from src limit 1 PREHOOK: type: QUERY PREHOOK: Input: default@src -PREHOOK: Output: file:/tmp/mwang/hive_2011-03-31_14-41-33_816_4178335076582662801/-mr-10000 +PREHOOK: Output: file:/tmp/mwang/hive_2011-04-25_13-55-37_521_2361768713695885204/-mr-10000 POSTHOOK: query: select ewah_bitmap_and(array(13,2,4,8589934592,4096,0), array(13,2,4,8589934592,4096,0)) from src limit 1 POSTHOOK: type: QUERY POSTHOOK: Input: default@src -POSTHOOK: Output: file:/tmp/mwang/hive_2011-03-31_14-41-33_816_4178335076582662801/-mr-10000 +POSTHOOK: Output: file:/tmp/mwang/hive_2011-04-25_13-55-37_521_2361768713695885204/-mr-10000 [13,2,4,8589934592,4096,0] PREHOOK: query: select ewah_bitmap_and(array(13,2,4,8589934592,4096,0), array(8,2,4,8589934592,128,0)) from src limit 1 PREHOOK: type: QUERY PREHOOK: Input: default@src -PREHOOK: Output: file:/tmp/mwang/hive_2011-03-31_14-41-37_642_5072652249123670071/-mr-10000 +PREHOOK: Output: file:/tmp/mwang/hive_2011-04-25_13-55-41_155_4144834788434053923/-mr-10000 POSTHOOK: query: select ewah_bitmap_and(array(13,2,4,8589934592,4096,0), array(8,2,4,8589934592,128,0)) from src limit 1 POSTHOOK: type: QUERY POSTHOOK: Input: default@src -POSTHOOK: Output: file:/tmp/mwang/hive_2011-03-31_14-41-37_642_5072652249123670071/-mr-10000 +POSTHOOK: Output: file:/tmp/mwang/hive_2011-04-25_13-55-41_155_4144834788434053923/-mr-10000 [13,1,4,2,0] +PREHOOK: query: drop table bitmap_test +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table bitmap_test +POSTHOOK: type: DROPTABLE +PREHOOK: query: create table bitmap_test (a array, b array) +PREHOOK: type: CREATETABLE +POSTHOOK: query: create table bitmap_test (a array, b array) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: default@bitmap_test +PREHOOK: query: insert overwrite table bitmap_test +select array(13,2,4,8589934592,4096,0), array(8,2,4,8589934592,128,0) from src limit 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@bitmap_test +POSTHOOK: query: insert overwrite table bitmap_test +select array(13,2,4,8589934592,4096,0), array(8,2,4,8589934592,128,0) from src limit 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@bitmap_test +POSTHOOK: Lineage: bitmap_test.a EXPRESSION [] +POSTHOOK: Lineage: bitmap_test.b EXPRESSION [] +PREHOOK: query: select ewah_bitmap_and(a,b) from bitmap_test +PREHOOK: type: QUERY +PREHOOK: Input: default@bitmap_test +PREHOOK: Output: file:/tmp/mwang/hive_2011-04-25_13-55-56_130_3048969228702680151/-mr-10000 +POSTHOOK: query: select ewah_bitmap_and(a,b) from bitmap_test +POSTHOOK: type: QUERY +POSTHOOK: Input: default@bitmap_test +POSTHOOK: Output: file:/tmp/mwang/hive_2011-04-25_13-55-56_130_3048969228702680151/-mr-10000 +POSTHOOK: Lineage: bitmap_test.a EXPRESSION [] +POSTHOOK: Lineage: bitmap_test.b EXPRESSION [] +[13,1,4,2,0] +[13,1,4,2,0] +[13,1,4,2,0] +[13,1,4,2,0] +[13,1,4,2,0] +[13,1,4,2,0] +[13,1,4,2,0] +[13,1,4,2,0] +[13,1,4,2,0] +[13,1,4,2,0] +PREHOOK: query: drop table bitmap_test +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@bitmap_test +PREHOOK: Output: default@bitmap_test +POSTHOOK: query: drop table bitmap_test +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@bitmap_test +POSTHOOK: Output: default@bitmap_test +POSTHOOK: Lineage: bitmap_test.a EXPRESSION [] +POSTHOOK: Lineage: bitmap_test.b EXPRESSION [] diff --git ql/src/test/results/clientpositive/udf_bitmap_or.q.out ql/src/test/results/clientpositive/udf_bitmap_or.q.out index d1ed0ed..6eaacb1 100644 --- ql/src/test/results/clientpositive/udf_bitmap_or.q.out +++ ql/src/test/results/clientpositive/udf_bitmap_or.q.out @@ -1,18 +1,69 @@ PREHOOK: query: select ewah_bitmap_or(array(13,2,4,8589934592,4096,0), array(13,2,4,8589934592,4096,0)) from src limit 1 PREHOOK: type: QUERY PREHOOK: Input: default@src -PREHOOK: Output: file:/tmp/mwang/hive_2011-03-31_14-41-44_597_3278606557866613164/-mr-10000 +PREHOOK: Output: file:/tmp/mwang/hive_2011-04-25_13-56-01_728_4880587758754766124/-mr-10000 POSTHOOK: query: select ewah_bitmap_or(array(13,2,4,8589934592,4096,0), array(13,2,4,8589934592,4096,0)) from src limit 1 POSTHOOK: type: QUERY POSTHOOK: Input: default@src -POSTHOOK: Output: file:/tmp/mwang/hive_2011-03-31_14-41-44_597_3278606557866613164/-mr-10000 +POSTHOOK: Output: file:/tmp/mwang/hive_2011-04-25_13-56-01_728_4880587758754766124/-mr-10000 [13,2,4,8589934592,4096,0] PREHOOK: query: select ewah_bitmap_or(array(13,2,4,8589934592,4096,0), array(8,2,4,8589934592,128,0)) from src limit 1 PREHOOK: type: QUERY PREHOOK: Input: default@src -PREHOOK: Output: file:/tmp/mwang/hive_2011-03-31_14-41-47_891_1868628369790989248/-mr-10000 +PREHOOK: Output: file:/tmp/mwang/hive_2011-04-25_13-56-04_966_4403664262746873723/-mr-10000 POSTHOOK: query: select ewah_bitmap_or(array(13,2,4,8589934592,4096,0), array(8,2,4,8589934592,128,0)) from src limit 1 POSTHOOK: type: QUERY POSTHOOK: Input: default@src -POSTHOOK: Output: file:/tmp/mwang/hive_2011-03-31_14-41-47_891_1868628369790989248/-mr-10000 +POSTHOOK: Output: file:/tmp/mwang/hive_2011-04-25_13-56-04_966_4403664262746873723/-mr-10000 [13,2,4,8589934592,4224,0] +PREHOOK: query: drop table bitmap_test +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table bitmap_test +POSTHOOK: type: DROPTABLE +PREHOOK: query: create table bitmap_test (a array, b array) +PREHOOK: type: CREATETABLE +POSTHOOK: query: create table bitmap_test (a array, b array) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: default@bitmap_test +PREHOOK: query: insert overwrite table bitmap_test +select array(13,2,4,8589934592,4096,0), array(8,2,4,8589934592,128,0) from src limit 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@bitmap_test +POSTHOOK: query: insert overwrite table bitmap_test +select array(13,2,4,8589934592,4096,0), array(8,2,4,8589934592,128,0) from src limit 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@bitmap_test +POSTHOOK: Lineage: bitmap_test.a EXPRESSION [] +POSTHOOK: Lineage: bitmap_test.b EXPRESSION [] +PREHOOK: query: select ewah_bitmap_or(a,b) from bitmap_test +PREHOOK: type: QUERY +PREHOOK: Input: default@bitmap_test +PREHOOK: Output: file:/tmp/mwang/hive_2011-04-25_13-56-14_800_8527224122491229569/-mr-10000 +POSTHOOK: query: select ewah_bitmap_or(a,b) from bitmap_test +POSTHOOK: type: QUERY +POSTHOOK: Input: default@bitmap_test +POSTHOOK: Output: file:/tmp/mwang/hive_2011-04-25_13-56-14_800_8527224122491229569/-mr-10000 +POSTHOOK: Lineage: bitmap_test.a EXPRESSION [] +POSTHOOK: Lineage: bitmap_test.b EXPRESSION [] +[13,2,4,8589934592,4224,0] +[13,2,4,8589934592,4224,0] +[13,2,4,8589934592,4224,0] +[13,2,4,8589934592,4224,0] +[13,2,4,8589934592,4224,0] +[13,2,4,8589934592,4224,0] +[13,2,4,8589934592,4224,0] +[13,2,4,8589934592,4224,0] +[13,2,4,8589934592,4224,0] +[13,2,4,8589934592,4224,0] +PREHOOK: query: drop table bitmap_test +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@bitmap_test +PREHOOK: Output: default@bitmap_test +POSTHOOK: query: drop table bitmap_test +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@bitmap_test +POSTHOOK: Output: default@bitmap_test +POSTHOOK: Lineage: bitmap_test.a EXPRESSION [] +POSTHOOK: Lineage: bitmap_test.b EXPRESSION []