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

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

                Author: ASF GitHub Bot
            Created on: 19/Oct/22 11:53
            Start Date: 19/Oct/22 11:53
    Worklog Time Spent: 10m 
      Work Description: zabetak closed pull request #3680: [HIVE-26643] 
HiveUnionPullUpConstantsRule produces an invalid plan when pulling up constants 
for nullable fields
URL: https://github.com/apache/hive/pull/3680




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

    Worklog Id:     (was: 818439)
    Time Spent: 40m  (was: 0.5h)

> HiveUnionPullUpConstantsRule produces an invalid plan when pulling up 
> constants for nullable fields
> ---------------------------------------------------------------------------------------------------
>
>                 Key: HIVE-26643
>                 URL: https://issues.apache.org/jira/browse/HIVE-26643
>             Project: Hive
>          Issue Type: Bug
>          Components: CBO
>    Affects Versions: 4.0.0-alpha-2
>            Reporter: Alessandro Solimando
>            Assignee: Alessandro Solimando
>            Priority: Major
>              Labels: pull-request-available
>          Time Spent: 40m
>  Remaining Estimate: 0h
>
> The rule pulls up constants without checking/adjusting nullability to match 
> that of the field type.
> Here is the stack-trace when a nullable type is involved:
> {code:java}
> java.lang.AssertionError: Cannot add expression of different type to set:
> set type is RecordType(JavaType(class java.lang.Integer) f1, JavaType(int) 
> NOT NULL f2) NOT NULL
> expression type is RecordType(JavaType(int) NOT NULL f1, JavaType(int) NOT 
> NULL f2) NOT NULL
> set is 
> rel#38:HiveUnion.(input#0=HepRelVertex#35,input#1=HepRelVertex#35,all=true)
> expression is HiveProject(f1=[1], f2=[$0])
>   HiveUnion(all=[true])
>     HiveProject(f2=[$1])
>       HiveProject(f1=[$0], f2=[$1])
>         HiveFilter(condition=[=($0, 1)])
>           LogicalTableScan(table=[[]])
>     HiveProject(f2=[$1])
>       HiveProject(f1=[$0], f2=[$1])
>         HiveFilter(condition=[=($0, 1)])
>           LogicalTableScan(table=[[]])
> {code}
> The solution is to check nullability and add a cast when the field is 
> nullable, since the constant's type is not.



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

Reply via email to