@Override public boolean checkValue(ColumnVector columnVector, int idx) { TimestampColumnVector col = (TimestampColumnVector) columnVector; return bloomFilter.testLong(col.time[idx]); } }
@Override public boolean checkValue(ColumnVector columnVector, int idx) { LongColumnVector col = (LongColumnVector) columnVector; return bloomFilter.testLong(col.vector[idx]); } }
public boolean testDouble(double val) { return testLong(Double.doubleToLongBits(val)); }
@VisibleForTesting public static boolean checkInBloomFilter(BloomFilter bloomFilter, Object predicateValue, Type sqlType) { if (sqlType == TINYINT || sqlType == SMALLINT || sqlType == INTEGER || sqlType == BIGINT) { return bloomFilter.testLong(((Number) predicateValue).longValue()); } if (sqlType == DOUBLE) { return bloomFilter.testDouble((Double) predicateValue); } if (sqlType instanceof VarcharType || sqlType instanceof VarbinaryType) { return bloomFilter.test(((Slice) predicateValue).getBytes()); } // todo support DECIMAL, FLOAT, DATE, TIMESTAMP, and CHAR return true; }
partitionId = keyHash & (hashPartitions.length - 1); if (bloom1 != null && !bloom1.testLong(keyHash)) {
public JoinUtil.JoinResult setDirect(byte[] bytes, int offset, int length, BytesBytesMultiHashMap.Result hashMapResult) { int keyHash = HashCodeUtil.murmurHash(bytes, offset, length); partitionId = keyHash & (hashPartitions.length - 1); if (bloom1 != null && !bloom1.testLong(keyHash)) { /* * if the keyHash is missing in the bloom filter, then the value cannot exist in any of the * spilled partition - return NOMATCH */ dummyRow = null; aliasFilter = (byte) 0xff; hashMapResult.forget(); return JoinResult.NOMATCH; } // If the target hash table is on disk, spill this row to disk as well to be processed later if (isOnDisk(partitionId)) { return JoinUtil.JoinResult.SPILL; } else { aliasFilter = hashPartitions[partitionId].hashMap.getValueResult(bytes, offset, length, hashMapResult); dummyRow = null; if (hashMapResult.hasRows()) { return JoinUtil.JoinResult.MATCH; } else { aliasFilter = (byte) 0xff; return JoinUtil.JoinResult.NOMATCH; } } }
boolean vBoolean = ((BooleanObjectInspector)valObjectInspector). get(arguments[0].get()); return bloomFilter.testLong(vBoolean ? 1 : 0); case BYTE: byte vByte = ((ByteObjectInspector) valObjectInspector). get(arguments[0].get()); return bloomFilter.testLong(vByte); case SHORT: short vShort = ((ShortObjectInspector) valObjectInspector). get(arguments[0].get()); return bloomFilter.testLong(vShort); case INT: int vInt = ((IntObjectInspector) valObjectInspector). get(arguments[0].get()); return bloomFilter.testLong(vInt); case LONG: long vLong = ((LongObjectInspector) valObjectInspector). get(arguments[0].get()); return bloomFilter.testLong(vLong); case FLOAT: float vFloat = ((FloatObjectInspector) valObjectInspector). DateWritable vDate = ((DateObjectInspector) valObjectInspector). getPrimitiveWritableObject(arguments[0].get()); return bloomFilter.testLong(vDate.getDays()); case TIMESTAMP: Timestamp vTimeStamp = ((TimestampObjectInspector) valObjectInspector). getPrimitiveJavaObject(arguments[0].get()); return bloomFilter.testLong(vTimeStamp.getTime());
public JoinUtil.JoinResult setFromOutput(Output output) throws HiveException { int keyHash = HashCodeUtil.murmurHash(output.getData(), 0, output.getLength()); if (bloom1 != null && !bloom1.testLong(keyHash)) { /* * if the keyHash is missing in the bloom filter, then the value cannot * exist in any of the spilled partition - return NOMATCH */ dummyRow = null; aliasFilter = (byte) 0xff; hashMapResult.forget(); return JoinResult.NOMATCH; } partitionId = keyHash & (hashPartitions.length - 1); // If the target hash table is on disk, spill this row to disk as well to be processed later if (isOnDisk(partitionId)) { toSpillPartitionId = partitionId; hashMapResult.forget(); return JoinUtil.JoinResult.SPILL; } else { aliasFilter = hashPartitions[partitionId].hashMap.getValueResult(output.getData(), 0, output.getLength(), hashMapResult, /* matchTracker */ null); dummyRow = null; if (hashMapResult.hasRows()) { return JoinUtil.JoinResult.MATCH; } else { aliasFilter = (byte) 0xff; return JoinUtil.JoinResult.NOMATCH; } } }
public JoinUtil.JoinResult setFromOutput(Output output, MatchTracker matchTracker) { int keyHash = HashCodeUtil.murmurHash(output.getData(), 0, output.getLength()); if (bloom1 != null && !bloom1.testLong(keyHash)) {
public JoinUtil.JoinResult setFromOutput(Output output) throws HiveException { int keyHash = HashCodeUtil.murmurHash(output.getData(), 0, output.getLength()); if (bloom1 != null && !bloom1.testLong(keyHash)) {
public boolean testDouble(double val) { return testLong(Double.doubleToLongBits(val)); }
public boolean testDouble(double val) { return testLong(Double.doubleToLongBits(val)); }
@VisibleForTesting public static boolean checkInBloomFilter(BloomFilter bloomFilter, Object predicateValue, Type sqlType) { if (sqlType == TINYINT || sqlType == SMALLINT || sqlType == INTEGER || sqlType == BIGINT) { return bloomFilter.testLong(((Number) predicateValue).longValue()); } if (sqlType == DOUBLE) { return bloomFilter.testDouble((Double) predicateValue); } if (sqlType instanceof VarcharType || sqlType instanceof VarbinaryType) { return bloomFilter.test(((Slice) predicateValue).getBytes()); } // todo support DECIMAL, FLOAT, DATE, TIMESTAMP, and CHAR return true; }
@VisibleForTesting public static boolean checkInBloomFilter(BloomFilter bloomFilter, Object predicateValue, Type sqlType) { if (sqlType == TINYINT || sqlType == SMALLINT || sqlType == INTEGER || sqlType == BIGINT) { return bloomFilter.testLong(((Number) predicateValue).longValue()); } if (sqlType == DOUBLE) { return bloomFilter.testDouble((Double) predicateValue); } if (sqlType instanceof VarcharType || sqlType instanceof VarbinaryType) { return bloomFilter.test(((Slice) predicateValue).getBytes()); } // todo support DECIMAL, FLOAT, DATE, TIMESTAMP, and CHAR return true; }
@VisibleForTesting public static boolean checkInBloomFilter(BloomFilter bloomFilter, Object predicateValue, Type sqlType) { if (sqlType == TINYINT || sqlType == SMALLINT || sqlType == INTEGER || sqlType == BIGINT) { return bloomFilter.testLong(((Number) predicateValue).longValue()); } if (sqlType == DOUBLE) { return bloomFilter.testDouble((Double) predicateValue); } if (sqlType instanceof VarcharType || sqlType instanceof VarbinaryType) { return bloomFilter.test(((Slice) predicateValue).getBytes()); } // todo support DECIMAL, FLOAT, DATE, TIMESTAMP, and CHAR return true; }