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

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

                Author: ASF GitHub Bot
            Created on: 02/Dec/22 23:22
            Start Date: 02/Dec/22 23:22
    Worklog Time Spent: 10m 
      Work Description: scarlin-cloudera commented on code in PR #3800:
URL: https://github.com/apache/hive/pull/3800#discussion_r1038620856


##########
ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFSum.java:
##########
@@ -337,29 +345,35 @@ public GenericUDAFEvaluator 
getWindowingEvaluator(WindowFrameDef wFrameDef) {
         return null;
       }
 
-      return new 
GenericUDAFStreamingEvaluator.SumAvgEnhancer<HiveDecimalWritable, HiveDecimal>(
+      return new 
GenericUDAFStreamingEvaluator.SumAvgEnhancer<HiveDecimalWritable, Object[]>(

Review Comment:
   This matches very similar logic found in GenericUDAFAvg which also uses an 
Object[] 
   
   The purpose is that we need to keep track of the sum while also keeping 
track whether the current window member is a null.  If all members in the 
window frame are null, we should treat the sum as null instead of 0, which is 
how the "preceding" rows behave.





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

    Worklog Id:     (was: 830758)
    Time Spent: 1h 40m  (was: 1.5h)

> Sum over window produces 0 when row contains null
> -------------------------------------------------
>
>                 Key: HIVE-26683
>                 URL: https://issues.apache.org/jira/browse/HIVE-26683
>             Project: Hive
>          Issue Type: Bug
>          Components: HiveServer2
>            Reporter: Steve Carlin
>            Assignee: Steve Carlin
>            Priority: Major
>              Labels: pull-request-available
>          Time Spent: 1h 40m
>  Remaining Estimate: 0h
>
> Ran the following sql:
>  
> {code:java}
> create table sum_window_test_small (id int, tinyint_col tinyint);
> insert into sum_window_test_small values (5,5), (10, NULL), (11,1);
> select id,
> tinyint_col,
> sum(tinyint_col) over (order by id nulls last rows between 1 following and 1 
> following)
> from sum_window_test_small order by id;
> select id,
> tinyint_col,
> sum(tinyint_col) over (order by id nulls last rows between current row and 1 
> following)
> from sum_window_test_small order by id;
> {code}
> The result is
> {code:java}
> +-----+--------------+---------------+
> | id  | tinyint_col  | sum_window_0  |
> +-----+--------------+---------------+
> | 5   | 5            | 0             |
> | 10  | NULL         | 1             |
> | 11  | 1            | NULL          |
> +-----+--------------+---------------+{code}
> The first row should have the sum as NULL
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to