[
https://issues.apache.org/jira/browse/HIVE-24761?focusedWorklogId=585701&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-585701
]
ASF GitHub Bot logged work on HIVE-24761:
-----------------------------------------
Author: ASF GitHub Bot
Created on: 20/Apr/21 10:46
Start Date: 20/Apr/21 10:46
Worklog Time Spent: 10m
Work Description: abstractdog commented on a change in pull request #2099:
URL: https://github.com/apache/hive/pull/2099#discussion_r616566788
##########
File path:
ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java
##########
@@ -3005,6 +3003,19 @@ private boolean validatePTFOperator(PTFOperator op,
VectorizationContext vContex
}
}
}
+ if (vectorPTFDesc.getOrderExprNodeDescs().length > 1) {
+ /*
+ * Currently, we need to rule out here all cases where a range
boundary scanner can run,
+ * basically: 1. bounded start 2. bounded end which is not current row
+ */
+ if (windowFrameDef.getWindowType() == WindowType.RANGE
+ && (!windowFrameDef.isStartUnbounded() ||
!windowFrameDef.getEnd().isCurrentRow())) {
Review comment:
good catch, I'm going to fix the condition to enable unbounded end
FYI, the connection between this part and boundary scanner is the
unimplemented method:
{code}
@Override
public boolean isDistanceGreater(Object v1, Object v2, int amt) {
throw new UnsupportedOperationException("Only unbounded ranges
supported");
}
{code}
##########
File path:
ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java
##########
@@ -3005,6 +3003,19 @@ private boolean validatePTFOperator(PTFOperator op,
VectorizationContext vContex
}
}
}
+ if (vectorPTFDesc.getOrderExprNodeDescs().length > 1) {
+ /*
+ * Currently, we need to rule out here all cases where a range
boundary scanner can run,
+ * basically: 1. bounded start 2. bounded end which is not current row
+ */
+ if (windowFrameDef.getWindowType() == WindowType.RANGE
+ && (!windowFrameDef.isStartUnbounded() ||
!windowFrameDef.getEnd().isCurrentRow())) {
Review comment:
good catch! I'm going to fix the condition to enable unbounded end
FYI, the connection between this part and boundary scanner is the
unimplemented method:
```
@Override
public boolean isDistanceGreater(Object v1, Object v2, int amt) {
throw new UnsupportedOperationException("Only unbounded ranges
supported");
}
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
Issue Time Tracking
-------------------
Worklog Id: (was: 585701)
Time Spent: 1h 20m (was: 1h 10m)
> Vectorization: Support PTF - bounded start windows
> --------------------------------------------------
>
> Key: HIVE-24761
> URL: https://issues.apache.org/jira/browse/HIVE-24761
> Project: Hive
> Issue Type: Sub-task
> Reporter: László Bodor
> Assignee: László Bodor
> Priority: Major
> Labels: pull-request-available
> Time Spent: 1h 20m
> Remaining Estimate: 0h
>
> {code}
> notVectorizedReason: PTF operator: *** only UNBOUNDED start frame is
> supported
> {code}
> Currently, bounded windows are not supported in VectorPTFOperator. If we
> simply remove the check compile-time:
> https://github.com/apache/hive/blob/master/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/Vectorizer.java#L2911
> {code}
> if (!windowFrameDef.isStartUnbounded()) {
> setOperatorIssue(functionName + " only UNBOUNDED start frame is
> supported");
> return false;
> }
> {code}
> We get incorrect results, that's because vectorized codepath completely
> ignores boundaries, and simply iterates through all the input batches in
> [VectorPTFGroupBatches|https://github.com/apache/hive/blob/master/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/ptf/VectorPTFGroupBatches.java#L172]:
> {code}
> for (VectorPTFEvaluatorBase evaluator : evaluators) {
> evaluator.evaluateGroupBatch(batch);
> if (isLastGroupBatch) {
> evaluator.doLastBatchWork();
> }
> }
> {code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)