hezhang created HIVE-22658: ------------------------------ Summary: calite for hive struct Ineffective optimization Key: HIVE-22658 URL: https://issues.apache.org/jira/browse/HIVE-22658 Project: Hive Issue Type: Bug Components: CBO Affects Versions: 3.1.1, 2.3.2, 2.3.3 Reporter: hezhang Attachments: calcite-3608.patch
student table: {code:java} CREATE TABLE `student`( `id` int, `info` struct<name:string,age:int>) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' WITH SERDEPROPERTIES ( 'colelction.delim'=':', 'field.delim'=',', 'serialization.format'=',', 'serialization.null.format'='NULL') {code} the sql: {code:java} select * from student where info is not null; {code} result: {code:java} 1 {"name":"zhou","age":30} 2 {"name":"yan","age":30} 3 {"name":"chen","age":20} 4 {"name":"li","age":80} NULL NULL NULL {"name":null,"age":null} {code} cause:calcite Ineffective optimization cbo execute plan: {code:java} HiveProject(id=[$0], info=[$1]) HiveTableScan(table=[[default.student]], table:alias=[student]) {code} after fix RelRecordType isNullable,the plan is cbo execute plan: {code:java} HiveProject(id=[$0], info=[$1]) HiveFilter(condition=[IS NOT NULL($1)]) HiveTableScan(table=[[default.student]], table:alias=[student]) {code} then the result is: {code:java} 1 {"name":"zhou","age":30} 2 {"name":"yan","age":30} 3 {"name":"chen","age":20} 4 {"name":"li","age":80} NULL {"name":null,"age":null} {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)