Alessandro Solimando created HIVE-26643:
-------------------------------------------

             Summary: HiveUnionPullUpConstantsRule fails when pulling up 
constants over 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


The rule does pull 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