>From Ali Alsuliman <[email protected]>:
Ali Alsuliman has uploaded this change for review. (
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/19531 )
Change subject: [ASTERIXDB-3580][COMP] minor refactoring
......................................................................
[ASTERIXDB-3580][COMP] minor refactoring
Ext-ref: MB-63354, MB-65314
Change-Id: I270201573d5d19763bf8d68db99faa72f0b92f46
---
M
hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/AbstractHashJoinPOperator.java
M
hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/IPartitioningRequirementsCoordinator.java
2 files changed, 71 insertions(+), 48 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb
refs/changes/31/19531/1
diff --git
a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/AbstractHashJoinPOperator.java
b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/AbstractHashJoinPOperator.java
index 68f0898..800c839 100644
---
a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/AbstractHashJoinPOperator.java
+++
b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/AbstractHashJoinPOperator.java
@@ -138,19 +138,21 @@
.getPartitioningType() ==
requirements.getPartitioningType()) {
switch (requirements.getPartitioningType()) {
case UNORDERED_PARTITIONED: {
- UnorderedPartitionedProperty upp1 =
+ UnorderedPartitionedProperty
unorderedFirstDelivered =
(UnorderedPartitionedProperty)
firstDeliveredPartitioning;
- Set<LogicalVariable> set1 =
upp1.getColumnSet();
- UnorderedPartitionedProperty uppreq =
(UnorderedPartitionedProperty) requirements;
- Set<LogicalVariable> modifuppreq = new
ListSet<>();
+ Set<LogicalVariable> firstDeliveredVars =
unorderedFirstDelivered.getColumnSet();
+ UnorderedPartitionedProperty
unorderedRequired =
+ (UnorderedPartitionedProperty)
requirements;
+ Set<LogicalVariable> originalRequiredVars
= unorderedRequired.getColumnSet();
+ Set<LogicalVariable> modifiedRequiredVars
= new ListSet<>();
Map<LogicalVariable, EquivalenceClass>
eqmap = context.getEquivalenceClassMap(op);
- Set<LogicalVariable> covered = new
ListSet<>();
- Set<LogicalVariable> keysCurrent =
uppreq.getColumnSet();
- List<LogicalVariable> keysFirst =
(keysRightBranch.containsAll(keysCurrent))
- ? keysRightBranch : keysLeftBranch;
+ Set<LogicalVariable> coveredVars = new
ListSet<>();
+ List<LogicalVariable> keysFirst =
+
(keysRightBranch.containsAll(originalRequiredVars)) ? keysRightBranch
+ : keysLeftBranch;
List<LogicalVariable> keysSecond =
keysFirst == keysRightBranch ?
keysLeftBranch : keysRightBranch;
- for (LogicalVariable r :
uppreq.getColumnSet()) {
+ for (LogicalVariable r :
originalRequiredVars) {
EquivalenceClass ecSnd = eqmap.get(r);
boolean found = false;
int j = 0;
@@ -167,33 +169,38 @@
}
LogicalVariable v2 = keysSecond.get(j);
EquivalenceClass ecFst = eqmap.get(v2);
- for (LogicalVariable vset1 : set1) {
+ for (LogicalVariable vset1 :
firstDeliveredVars) {
if (vset1 == v2 || ecFst != null
&& eqmap.get(vset1) == ecFst) {
- if (!covered.add(vset1)) {
+ if (!coveredVars.add(vset1)) {
continue;
}
- modifuppreq.add(r);
+ modifiedRequiredVars.add(r);
break;
}
}
- if (covered.equals(set1)) {
+ if
(coveredVars.equals(firstDeliveredVars)) {
break;
}
}
- if (!covered.equals(set1)) {
- throw new AlgebricksException("Could
not modify " + requirements
- + " to agree with partitioning
property " + firstDeliveredPartitioning
- + " delivered by previous
input operator.");
+ if
(!coveredVars.equals(firstDeliveredVars)) {
+ throw new AlgebricksException(
+ "Could not modify the original
required partitioning " + requirements
+ + " to agree with the
partitioning property "
+ +
firstDeliveredPartitioning
+ + " delivered by
previous input operator. Covered vars: "
+ + coveredVars + ".
Modified required vars: "
+ +
modifiedRequiredVars);
}
- UnorderedPartitionedProperty upp2;
- UnorderedPartitionedProperty rqd =
(UnorderedPartitionedProperty) requirements;
- if (rqd.usesPartitionsMap()) {
- upp2 =
UnorderedPartitionedProperty.ofPartitionsMap(modifuppreq,
- rqd.getNodeDomain(),
rqd.getPartitionsMap());
+ UnorderedPartitionedProperty
unorderedFinalRequired;
+ if (unorderedRequired.usesPartitionsMap())
{
+ unorderedFinalRequired =
UnorderedPartitionedProperty.ofPartitionsMap(
+ modifiedRequiredVars,
unorderedRequired.getNodeDomain(),
+
unorderedRequired.getPartitionsMap());
} else {
- upp2 =
UnorderedPartitionedProperty.of(modifuppreq, rqd.getNodeDomain());
+ unorderedFinalRequired =
UnorderedPartitionedProperty.of(modifiedRequiredVars,
+
unorderedRequired.getNodeDomain());
}
- return new Pair<>(false, upp2);
+ return new Pair<>(false,
unorderedFinalRequired);
}
case ORDERED_PARTITIONED: {
throw new NotImplementedException();
diff --git
a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/IPartitioningRequirementsCoordinator.java
b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/IPartitioningRequirementsCoordinator.java
index d6f4812..9a174f8 100644
---
a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/IPartitioningRequirementsCoordinator.java
+++
b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/IPartitioningRequirementsCoordinator.java
@@ -58,51 +58,57 @@
&&
firstDeliveredPartitioning.getPartitioningType() ==
rqdpp.getPartitioningType()) {
switch (rqdpp.getPartitioningType()) {
case UNORDERED_PARTITIONED: {
- UnorderedPartitionedProperty upp1 =
+ UnorderedPartitionedProperty unorderedRequired
= (UnorderedPartitionedProperty) rqdpp;
+ UnorderedPartitionedProperty
unorderedFirstDelivered =
(UnorderedPartitionedProperty)
firstDeliveredPartitioning;
- Set<LogicalVariable> set1 =
upp1.getColumnSet();
- UnorderedPartitionedProperty uppreq =
(UnorderedPartitionedProperty) rqdpp;
- Set<LogicalVariable> modifuppreq = new
ListSet<>();
+ Set<LogicalVariable> firstDeliveredVars =
unorderedFirstDelivered.getColumnSet();
+ Set<LogicalVariable> originalRequiredVars =
unorderedRequired.getColumnSet();
+ Set<LogicalVariable> modifiedRequiredVars =
new ListSet<>();
Map<LogicalVariable, EquivalenceClass> eqmap =
context.getEquivalenceClassMap(op);
- Set<LogicalVariable> covered = new ListSet<>();
+ Set<LogicalVariable> coveredVars = new
ListSet<>();
- // coordinate from an existing partition
property
- // (firstDeliveredPartitioning)
- for (LogicalVariable v : set1) {
+ // coordinate from an existing partition
property (firstDeliveredPartitioning)
+ for (LogicalVariable v : firstDeliveredVars) {
EquivalenceClass ecFirst = eqmap.get(v);
- for (LogicalVariable r :
uppreq.getColumnSet()) {
- if (!modifuppreq.contains(r)) {
+ for (LogicalVariable r :
originalRequiredVars) {
+ if (!modifiedRequiredVars.contains(r))
{
EquivalenceClass ec = eqmap.get(r);
if (ecFirst == ec) {
- covered.add(v);
- modifuppreq.add(r);
+ coveredVars.add(v);
+ modifiedRequiredVars.add(r);
break;
}
}
}
}
- if (!covered.equals(set1)) {
+ if (!coveredVars.equals(firstDeliveredVars)) {
throw new
AlgebricksException(ErrorCode.ILLEGAL_STATE,
- "Could not modify " + rqdpp + " to
agree with partitioning property "
+ "Could not modify the original
required partitioning " + rqdpp
+ + " to agree with the
partitioning property "
+
firstDeliveredPartitioning
- + " delivered by previous
input operator.");
+ + " delivered by previous
input operator. Covered vars: "
+ + coveredVars + ".
Modified required vars: "
+ + modifiedRequiredVars);
}
- if (modifuppreq.size() != set1.size()) {
+ if (modifiedRequiredVars.size() !=
firstDeliveredVars.size()) {
throw new
AlgebricksException(ErrorCode.ILLEGAL_STATE,
- "The number of variables are not
equal in both partitioning sides");
+ "The number of variables are not
equal in both partitioning sides. First delivered: "
+ + firstDeliveredVars + ".
Modified required: "
+ + modifiedRequiredVars);
}
- UnorderedPartitionedProperty upp2;
- UnorderedPartitionedProperty rqd =
(UnorderedPartitionedProperty) rqdpp;
- if (rqd.usesPartitionsMap()) {
- upp2 =
UnorderedPartitionedProperty.ofPartitionsMap(modifuppreq,
- rqd.getNodeDomain(),
rqd.getPartitionsMap());
+ UnorderedPartitionedProperty
unorderedFinalRequired;
+ if (unorderedRequired.usesPartitionsMap()) {
+ unorderedFinalRequired =
UnorderedPartitionedProperty.ofPartitionsMap(
+ modifiedRequiredVars,
unorderedRequired.getNodeDomain(),
+
unorderedRequired.getPartitionsMap());
} else {
- upp2 =
UnorderedPartitionedProperty.of(modifuppreq, rqd.getNodeDomain());
+ unorderedFinalRequired =
UnorderedPartitionedProperty.of(modifiedRequiredVars,
+ unorderedRequired.getNodeDomain());
}
- return new Pair<>(false, upp2);
+ return new Pair<>(false,
unorderedFinalRequired);
}
case ORDERED_PARTITIONED: {
throw new NotImplementedException();
--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/19531
To unsubscribe, or for help writing mail filters, visit
https://asterix-gerrit.ics.uci.edu/settings
Gerrit-Project: asterixdb
Gerrit-Branch: ionic
Gerrit-Change-Id: I270201573d5d19763bf8d68db99faa72f0b92f46
Gerrit-Change-Number: 19531
Gerrit-PatchSet: 1
Gerrit-Owner: Ali Alsuliman <[email protected]>
Gerrit-MessageType: newchange