Taewoo Kim has uploaded a new change for review.
https://asterix-gerrit.ics.uci.edu/1505
Change subject: ASTERIXDB-1791: Add a sanity check to hashjoin partition reading
......................................................................
ASTERIXDB-1791: Add a sanity check to hashjoin partition reading
- Add a sanity condition when reading the spilled partition pairs
from disk.
Change-Id: I034691f05e05207b478929d76b02013578eed5ed
---
M
hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoin.java
M
hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoinOperatorDescriptor.java
2 files changed, 9 insertions(+), 3 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb
refs/changes/05/1505/1
diff --git
a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoin.java
b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoin.java
index 17f009e..9733366 100644
---
a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoin.java
+++
b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoin.java
@@ -605,6 +605,10 @@
this.isReversed = b;
}
+ public int getNumberOfPartitions() {
+ return numOfPartitions;
+ }
+
/**
* Prints out the detailed information for partitions: in-memory and
spilled partitions.
* This method exists for a debug purpose.
diff --git
a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoinOperatorDescriptor.java
b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoinOperatorDescriptor.java
index a72c0c6..a8e66ac 100644
---
a/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoinOperatorDescriptor.java
+++
b/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/OptimizedHybridHashJoinOperatorDescriptor.java
@@ -418,8 +418,9 @@
BitSet partitionStatus =
state.hybridHJ.getPartitionStatus();
rPartbuff.reset();
- for (int pid = partitionStatus.nextSetBit(0); pid >=
0; pid = partitionStatus
- .nextSetBit(pid + 1)) {
+ for (int pid = partitionStatus.nextSetBit(0); pid >= 0
+ && pid <
state.hybridHJ.getNumberOfPartitions(); pid = partitionStatus
+ .nextSetBit(pid + 1)) {
RunFileReader bReader =
state.hybridHJ.getBuildRFReader(pid);
RunFileReader pReader =
state.hybridHJ.getProbeRFReader(pid);
@@ -579,7 +580,8 @@
LOGGER.fine("\t\t>>>Case 2.1.1 - KEEP APPLYING
RecursiveHHJ WITH "
+ "(isLeftOuter || build<probe) - [Level "
+ level + "]");
}
- for (int rPid = rPStatus.nextSetBit(0); rPid >= 0;
rPid = rPStatus.nextSetBit(rPid + 1)) {
+ for (int rPid = rPStatus.nextSetBit(0); rPid >= 0
+ && rPid < rHHj.getNumberOfPartitions(); rPid =
rPStatus.nextSetBit(rPid + 1)) {
RunFileReader rbrfw = rHHj.getBuildRFReader(rPid);
RunFileReader rprfw = rHHj.getProbeRFReader(rPid);
int rbSizeInTuple =
rHHj.getBuildPartitionSizeInTup(rPid);
--
To view, visit https://asterix-gerrit.ics.uci.edu/1505
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I034691f05e05207b478929d76b02013578eed5ed
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Taewoo Kim <[email protected]>