[ 
https://issues.apache.org/jira/browse/HIVE-26074?focusedWorklogId=759042&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-759042
 ]

ASF GitHub Bot logged work on HIVE-26074:
-----------------------------------------

                Author: ASF GitHub Bot
            Created on: 20/Apr/22 08:30
            Start Date: 20/Apr/22 08:30
    Worklog Time Spent: 10m 
      Work Description: ayushtkn commented on code in PR #3187:
URL: https://github.com/apache/hive/pull/3187#discussion_r853870053


##########
ql/src/java/org/apache/hadoop/hive/ql/udf/ptf/ValueBoundaryScanner.java:
##########
@@ -1214,6 +1223,55 @@ public boolean isEqualPrimitive(String s1, String s2) {
   }
 }
 
+class CharValueBoundaryScanner extends SingleValueBoundaryScanner {
+  public CharValueBoundaryScanner(BoundaryDef start, BoundaryDef end,
+      OrderExpressionDef expressionDef, boolean nullsLast) {
+    super(start, end, expressionDef, nullsLast);
+  }
+
+  @Override
+  public boolean isDistanceGreater(Object v1, Object v2, int amt) {
+    HiveChar s1 = PrimitiveObjectInspectorUtils.getHiveChar(v1,
+        (PrimitiveObjectInspector) expressionDef.getOI());
+    HiveChar s2 = PrimitiveObjectInspectorUtils.getHiveChar(v2,
+        (PrimitiveObjectInspector) expressionDef.getOI());
+    return s1 != null && s2 != null && s1.compareTo(s2) > 0;
+  }
+
+  @Override
+  public boolean isEqual(Object v1, Object v2) {
+    HiveChar s1 = PrimitiveObjectInspectorUtils.getHiveChar(v1,
+        (PrimitiveObjectInspector) expressionDef.getOI());
+    HiveChar s2 = PrimitiveObjectInspectorUtils.getHiveChar(v2,
+        (PrimitiveObjectInspector) expressionDef.getOI());
+    return (s1 == null && s2 == null) || (s1 != null && s1.equals(s2));
+  }
+}
+
+class VarcharValueBoundaryScanner extends SingleValueBoundaryScanner {
+  public VarcharValueBoundaryScanner(BoundaryDef start, BoundaryDef end,
+      OrderExpressionDef expressionDef, boolean nullsLast) {
+    super(start, end, expressionDef, nullsLast);
+  }
+
+  @Override
+  public boolean isDistanceGreater(Object v1, Object v2, int amt) {
+    HiveVarchar s1 = PrimitiveObjectInspectorUtils.getHiveVarchar(v1,
+        (PrimitiveObjectInspector) expressionDef.getOI());
+    HiveVarchar s2 = PrimitiveObjectInspectorUtils.getHiveVarchar(v2,
+        (PrimitiveObjectInspector) expressionDef.getOI());
+    return s1 != null && s2 != null && s1.compareTo(s2) > 0;
+  }
+
+  @Override
+  public boolean isEqual(Object v1, Object v2) {

Review Comment:
   Added





Issue Time Tracking
-------------------

    Worklog Id:     (was: 759042)
    Time Spent: 1h 10m  (was: 1h)

> PTF Vectorization: BoundaryScanner for varchar
> ----------------------------------------------
>
>                 Key: HIVE-26074
>                 URL: https://issues.apache.org/jira/browse/HIVE-26074
>             Project: Hive
>          Issue Type: Bug
>            Reporter: László Bodor
>            Assignee: László Bodor
>            Priority: Major
>              Labels: pull-request-available
>          Time Spent: 1h 10m
>  Remaining Estimate: 0h
>
> HIVE-24761 should be extended for varchar, otherwise it fails on varchar type
> {code}
> Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: Internal Error: 
> attempt to setup a Window for typeString: 'varchar(170)'
>       at 
> org.apache.hadoop.hive.ql.udf.ptf.SingleValueBoundaryScanner.getBoundaryScanner(ValueBoundaryScanner.java:773)
>       at 
> org.apache.hadoop.hive.ql.udf.ptf.MultiValueBoundaryScanner$MultiPrimitiveValueBoundaryScanner.<init
>  (ValueBoundaryScanner.java:1257)
>       at 
> org.apache.hadoop.hive.ql.udf.ptf.MultiValueBoundaryScanner.getScanner(ValueBoundaryScanner.java:1237)
>       at 
> org.apache.hadoop.hive.ql.udf.ptf.ValueBoundaryScanner.getScanner(ValueBoundaryScanner.java:327)
>       at 
> org.apache.hadoop.hive.ql.udf.ptf.PTFRangeUtil.getRange(PTFRangeUtil.java:40)
>       at 
> org.apache.hadoop.hive.ql.exec.vector.ptf.VectorPTFGroupBatches.finishPartition(VectorPTFGroupBatches.java:442)
>       at 
> org.apache.hadoop.hive.ql.exec.vector.ptf.VectorPTFOperator.finishPartition(VectorPTFOperator.java:631)
>       at 
> org.apache.hadoop.hive.ql.exec.vector.ptf.VectorPTFOperator.closeOp(VectorPTFOperator.java:782)
>       at org.apache.hadoop.hive.ql.exec.Operator.close(Operator.java:731)
>       at org.apache.hadoop.hive.ql.exec.Operator.close(Operator.java:755)
>       at 
> org.apache.hadoop.hive.ql.exec.tez.ReduceRecordProcessor.close(ReduceRecordProcessor.java:383)
>       ... 16 more
> {code}



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

Reply via email to