You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by om...@apache.org on 2013/05/22 23:04:35 UTC
svn commit: r1485421 [6/6] - in /hive/branches/vectorization/ql/src:
java/org/apache/hadoop/hive/ql/exec/vector/expressions/templates/
test/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/
test/org/apache/hadoop/hive/ql/exec/vector/util/
Modified: hive/branches/vectorization/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/util/VectorizedRowGroupGenUtil.java
URL: http://svn.apache.org/viewvc/hive/branches/vectorization/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/util/VectorizedRowGroupGenUtil.java?rev=1485421&r1=1485420&r2=1485421&view=diff
==============================================================================
--- hive/branches/vectorization/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/util/VectorizedRowGroupGenUtil.java (original)
+++ hive/branches/vectorization/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/util/VectorizedRowGroupGenUtil.java Wed May 22 21:04:35 2013
@@ -18,11 +18,18 @@
package org.apache.hadoop.hive.ql.exec.vector.util;
+import java.util.Random;
+
+import org.apache.hadoop.hive.ql.exec.vector.DoubleColumnVector;
import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector;
import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch;
+
public class VectorizedRowGroupGenUtil {
+ private static final long LONG_VECTOR_NULL_VALUE = 1;
+ private static final double DOUBLE_VECTOR_NULL_VALUE = Double.NaN;
+
public static VectorizedRowBatch getVectorizedRowBatch(int size, int numCol, int seed) {
VectorizedRowBatch vrg = new VectorizedRowBatch(numCol, size);
for (int j = 0; j < numCol; j++) {
@@ -35,4 +42,71 @@ public class VectorizedRowGroupGenUtil {
vrg.size = size;
return vrg;
}
+
+ public static LongColumnVector generateLongColumnVector(
+ boolean nulls, boolean repeating, int size, Random rand) {
+ LongColumnVector lcv = new LongColumnVector(size);
+
+ lcv.noNulls = !nulls;
+ lcv.isRepeating = repeating;
+
+ long repeatingValue;
+ do{
+ repeatingValue= rand.nextLong();
+ }while(repeatingValue == 0);
+
+ int nullFrequency = generateNullFrequency(rand);
+
+ for(int i = 0; i < size; i++) {
+ if(nulls && (repeating || i % nullFrequency == 0)) {
+ lcv.isNull[i] = true;
+ lcv.vector[i] = LONG_VECTOR_NULL_VALUE;
+
+ }else {
+ lcv.isNull[i] = false;
+ lcv.vector[i] = repeating ? repeatingValue : rand.nextLong();
+ if(lcv.vector[i] == 0) {
+ i--;
+ }
+ }
+ }
+ return lcv;
+ }
+
+ public static DoubleColumnVector generateDoubleColumnVector(
+ boolean nulls, boolean repeating, int size, Random rand)
+ {
+ DoubleColumnVector dcv = new DoubleColumnVector(size);
+
+ dcv.noNulls = !nulls;
+ dcv.isRepeating = repeating;
+
+ double repeatingValue;
+ do{
+ repeatingValue= rand.nextDouble();
+ }while(repeatingValue == 0);
+
+ int nullFrequency = generateNullFrequency(rand);
+
+ for(int i = 0; i < size; i++) {
+ if(nulls && (repeating || i % nullFrequency == 0)) {
+ dcv.isNull[i] = true;
+ dcv.vector[i] = DOUBLE_VECTOR_NULL_VALUE;
+
+ }else {
+ dcv.isNull[i] = false;
+ dcv.vector[i] = repeating ? repeatingValue : rand.nextDouble();
+
+ if(dcv.vector[i] == 0) {
+ i--;
+ }
+ }
+ }
+ return dcv;
+ }
+
+ private static int generateNullFrequency(Random rand) {
+ return 60 + rand.nextInt(20);
+ }
+
}