@Test public void testIOBufferCountComputation() { assertEquals(1, BinaryHashTable.getNumWriteBehindBuffers(32)); assertEquals(1, BinaryHashTable.getNumWriteBehindBuffers(33)); assertEquals(1, BinaryHashTable.getNumWriteBehindBuffers(40)); assertEquals(1, BinaryHashTable.getNumWriteBehindBuffers(64)); assertEquals(1, BinaryHashTable.getNumWriteBehindBuffers(127)); assertEquals(2, BinaryHashTable.getNumWriteBehindBuffers(128)); assertEquals(2, BinaryHashTable.getNumWriteBehindBuffers(129)); assertEquals(2, BinaryHashTable.getNumWriteBehindBuffers(511)); assertEquals(3, BinaryHashTable.getNumWriteBehindBuffers(512)); assertEquals(3, BinaryHashTable.getNumWriteBehindBuffers(513)); assertEquals(3, BinaryHashTable.getNumWriteBehindBuffers(2047)); assertEquals(4, BinaryHashTable.getNumWriteBehindBuffers(2048)); assertEquals(4, BinaryHashTable.getNumWriteBehindBuffers(2049)); assertEquals(4, BinaryHashTable.getNumWriteBehindBuffers(8191)); assertEquals(5, BinaryHashTable.getNumWriteBehindBuffers(8192)); assertEquals(5, BinaryHashTable.getNumWriteBehindBuffers(8193)); assertEquals(5, BinaryHashTable.getNumWriteBehindBuffers(32767)); assertEquals(6, BinaryHashTable.getNumWriteBehindBuffers(32768)); assertEquals(6, BinaryHashTable.getNumWriteBehindBuffers(Integer.MAX_VALUE)); }
@VisibleForTesting static int getNumWriteBehindBuffers(int numBuffers) { int numIOBufs = (int) (Math.log(numBuffers) / Math.log(4) - 1.5); return numIOBufs > 6 ? 6 : numIOBufs; }
BinaryHashTable extends BaseHybridHashTable { @VisibleForTesting static int getNumWriteBehindBuffers(int numBuffers) { int numIOBufs = (int) (Math.log(numBuffers) / Math.log(4) - 1.5); return numIOBufs > 6 ? 6 : numIOBufs; } }
BinaryHashTable extends BaseHybridHashTable { @VisibleForTesting static int getNumWriteBehindBuffers(int numBuffers) { int numIOBufs = (int) (Math.log(numBuffers) / Math.log(4) - 1.5); return numIOBufs > 6 ? 6 : numIOBufs; } BinaryHashTable(
			Configuration conf,
			Object owner,
			AbstractRowSerializer buildSideSerializer,
			AbstractRowSerializer probeSideSerializer,
			Projection<BaseRow, BinaryRow> buildSideProjection,
			Projection<BaseRow, BinaryRow> probeSideProjection,
			MemoryManager memManager,
			long reservedMemorySize,
			IOManager ioManager,
			int avgRecordLen,
			int buildRowCount,
			boolean useBloomFilters,
			HashJoinType type,
			JoinCondition condFunc,
			boolean reverseJoin,
			boolean[] filterNulls,
			boolean tryDistinctBuildRow);  BinaryHashTable(
			Configuration conf,
			Object owner,
			AbstractRowSerializer buildSideSerializer,
			AbstractRowSerializer probeSideSerializer,
			Projection<BaseRow, BinaryRow> buildSideProjection,
			Projection<BaseRow, BinaryRow> probeSideProjection,
			MemoryManager memManager,
			long reservedMemorySize,
			long preferredMemorySize,
			long perRequestMemorySize,
			IOManager ioManager,
			int avgRecordLen,
			long buildRowCount,
			boolean useBloomFilters,
			HashJoinType type,
			JoinCondition condFunc,
			boolean reverseJoin,
			boolean[] filterNulls,
			boolean tryDistinctBuildRow); }
BinaryHashTable extends BaseHybridHashTable { @VisibleForTesting static int getNumWriteBehindBuffers(int numBuffers) { int numIOBufs = (int) (Math.log(numBuffers) / Math.log(4) - 1.5); return numIOBufs > 6 ? 6 : numIOBufs; } BinaryHashTable(
			Configuration conf,
			Object owner,
			AbstractRowSerializer buildSideSerializer,
			AbstractRowSerializer probeSideSerializer,
			Projection<BaseRow, BinaryRow> buildSideProjection,
			Projection<BaseRow, BinaryRow> probeSideProjection,
			MemoryManager memManager,
			long reservedMemorySize,
			IOManager ioManager,
			int avgRecordLen,
			int buildRowCount,
			boolean useBloomFilters,
			HashJoinType type,
			JoinCondition condFunc,
			boolean reverseJoin,
			boolean[] filterNulls,
			boolean tryDistinctBuildRow);  BinaryHashTable(
			Configuration conf,
			Object owner,
			AbstractRowSerializer buildSideSerializer,
			AbstractRowSerializer probeSideSerializer,
			Projection<BaseRow, BinaryRow> buildSideProjection,
			Projection<BaseRow, BinaryRow> probeSideProjection,
			MemoryManager memManager,
			long reservedMemorySize,
			long preferredMemorySize,
			long perRequestMemorySize,
			IOManager ioManager,
			int avgRecordLen,
			long buildRowCount,
			boolean useBloomFilters,
			HashJoinType type,
			JoinCondition condFunc,
			boolean reverseJoin,
			boolean[] filterNulls,
			boolean tryDistinctBuildRow); void putBuildRow(BaseRow row); void endBuild(); boolean tryProbe(BaseRow record); boolean nextMatching(); BaseRow getCurrentProbeRow(); RowIterator<BinaryRow> getBuildSideIterator(); @Override void clearPartitions(); }
BinaryHashTable extends BaseHybridHashTable { @VisibleForTesting static int getNumWriteBehindBuffers(int numBuffers) { int numIOBufs = (int) (Math.log(numBuffers) / Math.log(4) - 1.5); return numIOBufs > 6 ? 6 : numIOBufs; } BinaryHashTable(
			Configuration conf,
			Object owner,
			AbstractRowSerializer buildSideSerializer,
			AbstractRowSerializer probeSideSerializer,
			Projection<BaseRow, BinaryRow> buildSideProjection,
			Projection<BaseRow, BinaryRow> probeSideProjection,
			MemoryManager memManager,
			long reservedMemorySize,
			IOManager ioManager,
			int avgRecordLen,
			int buildRowCount,
			boolean useBloomFilters,
			HashJoinType type,
			JoinCondition condFunc,
			boolean reverseJoin,
			boolean[] filterNulls,
			boolean tryDistinctBuildRow);  BinaryHashTable(
			Configuration conf,
			Object owner,
			AbstractRowSerializer buildSideSerializer,
			AbstractRowSerializer probeSideSerializer,
			Projection<BaseRow, BinaryRow> buildSideProjection,
			Projection<BaseRow, BinaryRow> probeSideProjection,
			MemoryManager memManager,
			long reservedMemorySize,
			long preferredMemorySize,
			long perRequestMemorySize,
			IOManager ioManager,
			int avgRecordLen,
			long buildRowCount,
			boolean useBloomFilters,
			HashJoinType type,
			JoinCondition condFunc,
			boolean reverseJoin,
			boolean[] filterNulls,
			boolean tryDistinctBuildRow); void putBuildRow(BaseRow row); void endBuild(); boolean tryProbe(BaseRow record); boolean nextMatching(); BaseRow getCurrentProbeRow(); RowIterator<BinaryRow> getBuildSideIterator(); @Override void clearPartitions();  }