[jira] [Commented] (HIVE-12941) Unexpected result when using MIN() on struct with NULL in first field
[ https://issues.apache.org/jira/browse/HIVE-12941?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15132450#comment-15132450 ] Yongzhi Chen commented on HIVE-12941: - >From the behavior of primitive types, null value is lowest priority in getting >the min and max values: trying to get the min and max value from non-null >values first, only return null when all the values are null. The algorithm >treat null value as if largest value for function min and smallest value for >max. But the original min code does not apply the rule recursively for other complex types for example struct. It can handle null struct, but not struct with null fields {null}. max function works because ,by default, null is treated as minimum value for compare function. Attach the patch apply the rule for function min too. > Unexpected result when using MIN() on struct with NULL in first field > - > > Key: HIVE-12941 > URL: https://issues.apache.org/jira/browse/HIVE-12941 > Project: Hive > Issue Type: Bug > Components: Hive >Affects Versions: 1.1.0 >Reporter: Jan-Erik Hedbom >Assignee: Yongzhi Chen > Attachments: HIVE-12941.1.patch > > > Using MIN() on struct with NULL in first field of a row yields NULL as result. > Example: > select min(a) FROM (select 1 as a union all select 2 as a union all select > cast(null as int) as a) tmp; > OK > _c0 > 1 > As expected. But if we wrap it in a struct: > select min(a) FROM (select named_struct("field",1) as a union all select > named_struct("field",2) as a union all select named_struct("field",cast(null > as int)) as a) tmp; > OK > _c0 > NULL > Using MAX() works as expected for structs. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (HIVE-12941) Unexpected result when using MIN() on struct with NULL in first field
[ https://issues.apache.org/jira/browse/HIVE-12941?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15135675#comment-15135675 ] Hive QA commented on HIVE-12941: Here are the results of testing the latest attachment: https://issues.apache.org/jira/secure/attachment/12786277/HIVE-12941.1.patch {color:green}SUCCESS:{color} +1 due to 1 test(s) being added or modified. {color:red}ERROR:{color} -1 due to 8 failed/errored test(s), 10038 tests executed *Failed tests:* {noformat} TestMiniTezCliDriver-vectorized_parquet.q-explainuser_4.q-orc_merge6.q-and-12-more - did not produce a TEST-*.xml file org.apache.hadoop.hive.cli.TestNegativeCliDriver.testNegativeCliDriver_authorization_uri_import org.apache.hadoop.hive.serde2.columnar.TestLazyBinaryColumnarSerDe.testSerDeInnerNulls org.apache.hadoop.hive.serde2.objectinspector.TestFullMapEqualComparer.testAntiSymmetry org.apache.hadoop.hive.serde2.objectinspector.TestFullMapEqualComparer.testTransitivity org.apache.hadoop.hive.serde2.objectinspector.TestSimpleMapEqualComparer.testIncompatibleType org.apache.hadoop.hive.serde2.objectinspector.TestStandardObjectInspectors.testStandardUnionObjectInspector org.apache.hive.jdbc.TestSSL.testSSLVersion {noformat} Test results: http://ec2-174-129-184-35.compute-1.amazonaws.com/jenkins/job/PreCommit-HIVE-TRUNK-Build/6881/testReport Console output: http://ec2-174-129-184-35.compute-1.amazonaws.com/jenkins/job/PreCommit-HIVE-TRUNK-Build/6881/console Test logs: http://ec2-174-129-184-35.compute-1.amazonaws.com/logs/PreCommit-HIVE-TRUNK-Build-6881/ Messages: {noformat} Executing org.apache.hive.ptest.execution.TestCheckPhase Executing org.apache.hive.ptest.execution.PrepPhase Executing org.apache.hive.ptest.execution.ExecutionPhase Executing org.apache.hive.ptest.execution.ReportingPhase Tests exited with: TestsFailedException: 8 tests failed {noformat} This message is automatically generated. ATTACHMENT ID: 12786277 - PreCommit-HIVE-TRUNK-Build > Unexpected result when using MIN() on struct with NULL in first field > - > > Key: HIVE-12941 > URL: https://issues.apache.org/jira/browse/HIVE-12941 > Project: Hive > Issue Type: Bug > Components: Hive >Affects Versions: 1.1.0 >Reporter: Jan-Erik Hedbom >Assignee: Yongzhi Chen > Attachments: HIVE-12941.1.patch > > > Using MIN() on struct with NULL in first field of a row yields NULL as result. > Example: > select min(a) FROM (select 1 as a union all select 2 as a union all select > cast(null as int) as a) tmp; > OK > _c0 > 1 > As expected. But if we wrap it in a struct: > select min(a) FROM (select named_struct("field",1) as a union all select > named_struct("field",2) as a union all select named_struct("field",cast(null > as int)) as a) tmp; > OK > _c0 > NULL > Using MAX() works as expected for structs. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (HIVE-12941) Unexpected result when using MIN() on struct with NULL in first field
[ https://issues.apache.org/jira/browse/HIVE-12941?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15137729#comment-15137729 ] Hive QA commented on HIVE-12941: Here are the results of testing the latest attachment: https://issues.apache.org/jira/secure/attachment/12786696/HIVE-12941.2.patch {color:green}SUCCESS:{color} +1 due to 1 test(s) being added or modified. {color:red}ERROR:{color} -1 due to 3 failed/errored test(s), 10038 tests executed *Failed tests:* {noformat} TestSparkCliDriver-timestamp_lazy.q-bucketsortoptimize_insert_4.q-date_udf.q-and-12-more - did not produce a TEST-*.xml file org.apache.hadoop.hive.cli.TestNegativeCliDriver.testNegativeCliDriver_authorization_uri_import org.apache.hive.jdbc.TestSSL.testSSLVersion {noformat} Test results: http://ec2-174-129-184-35.compute-1.amazonaws.com/jenkins/job/PreCommit-HIVE-TRUNK-Build/6908/testReport Console output: http://ec2-174-129-184-35.compute-1.amazonaws.com/jenkins/job/PreCommit-HIVE-TRUNK-Build/6908/console Test logs: http://ec2-174-129-184-35.compute-1.amazonaws.com/logs/PreCommit-HIVE-TRUNK-Build-6908/ Messages: {noformat} Executing org.apache.hive.ptest.execution.TestCheckPhase Executing org.apache.hive.ptest.execution.PrepPhase Executing org.apache.hive.ptest.execution.ExecutionPhase Executing org.apache.hive.ptest.execution.ReportingPhase Tests exited with: TestsFailedException: 3 tests failed {noformat} This message is automatically generated. ATTACHMENT ID: 12786696 - PreCommit-HIVE-TRUNK-Build > Unexpected result when using MIN() on struct with NULL in first field > - > > Key: HIVE-12941 > URL: https://issues.apache.org/jira/browse/HIVE-12941 > Project: Hive > Issue Type: Bug > Components: Hive >Affects Versions: 1.1.0 >Reporter: Jan-Erik Hedbom >Assignee: Yongzhi Chen > Attachments: HIVE-12941.1.patch, HIVE-12941.2.patch > > > Using MIN() on struct with NULL in first field of a row yields NULL as result. > Example: > select min(a) FROM (select 1 as a union all select 2 as a union all select > cast(null as int) as a) tmp; > OK > _c0 > 1 > As expected. But if we wrap it in a struct: > select min(a) FROM (select named_struct("field",1) as a union all select > named_struct("field",2) as a union all select named_struct("field",cast(null > as int)) as a) tmp; > OK > _c0 > NULL > Using MAX() works as expected for structs. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (HIVE-12941) Unexpected result when using MIN() on struct with NULL in first field
[ https://issues.apache.org/jira/browse/HIVE-12941?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15137914#comment-15137914 ] Yongzhi Chen commented on HIVE-12941: - The failures are not related. > Unexpected result when using MIN() on struct with NULL in first field > - > > Key: HIVE-12941 > URL: https://issues.apache.org/jira/browse/HIVE-12941 > Project: Hive > Issue Type: Bug > Components: Hive >Affects Versions: 1.1.0 >Reporter: Jan-Erik Hedbom >Assignee: Yongzhi Chen > Attachments: HIVE-12941.1.patch, HIVE-12941.2.patch > > > Using MIN() on struct with NULL in first field of a row yields NULL as result. > Example: > select min(a) FROM (select 1 as a union all select 2 as a union all select > cast(null as int) as a) tmp; > OK > _c0 > 1 > As expected. But if we wrap it in a struct: > select min(a) FROM (select named_struct("field",1) as a union all select > named_struct("field",2) as a union all select named_struct("field",cast(null > as int)) as a) tmp; > OK > _c0 > NULL > Using MAX() works as expected for structs. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (HIVE-12941) Unexpected result when using MIN() on struct with NULL in first field
[ https://issues.apache.org/jira/browse/HIVE-12941?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15139137#comment-15139137 ] Aihua Xu commented on HIVE-12941: - The patch in general looks good. I would suggest to use a enum {Min, Max} to treat NULL as Min or Max in comparison instead of a boolean. > Unexpected result when using MIN() on struct with NULL in first field > - > > Key: HIVE-12941 > URL: https://issues.apache.org/jira/browse/HIVE-12941 > Project: Hive > Issue Type: Bug > Components: Hive >Affects Versions: 1.1.0 >Reporter: Jan-Erik Hedbom >Assignee: Yongzhi Chen > Attachments: HIVE-12941.1.patch, HIVE-12941.2.patch > > > Using MIN() on struct with NULL in first field of a row yields NULL as result. > Example: > select min(a) FROM (select 1 as a union all select 2 as a union all select > cast(null as int) as a) tmp; > OK > _c0 > 1 > As expected. But if we wrap it in a struct: > select min(a) FROM (select named_struct("field",1) as a union all select > named_struct("field",2) as a union all select named_struct("field",cast(null > as int)) as a) tmp; > OK > _c0 > NULL > Using MAX() works as expected for structs. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (HIVE-12941) Unexpected result when using MIN() on struct with NULL in first field
[ https://issues.apache.org/jira/browse/HIVE-12941?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15139363#comment-15139363 ] Aihua Xu commented on HIVE-12941: - The patch looks good. Nit:a comment needs to be updated {{if nullAsMax true, treat null as maximum value.}} and {{compare two object => two objects}}. +1. > Unexpected result when using MIN() on struct with NULL in first field > - > > Key: HIVE-12941 > URL: https://issues.apache.org/jira/browse/HIVE-12941 > Project: Hive > Issue Type: Bug > Components: Hive >Affects Versions: 1.1.0 >Reporter: Jan-Erik Hedbom >Assignee: Yongzhi Chen > Attachments: HIVE-12941.1.patch, HIVE-12941.2.patch, > HIVE-12941.3.patch > > > Using MIN() on struct with NULL in first field of a row yields NULL as result. > Example: > select min(a) FROM (select 1 as a union all select 2 as a union all select > cast(null as int) as a) tmp; > OK > _c0 > 1 > As expected. But if we wrap it in a struct: > select min(a) FROM (select named_struct("field",1) as a union all select > named_struct("field",2) as a union all select named_struct("field",cast(null > as int)) as a) tmp; > OK > _c0 > NULL > Using MAX() works as expected for structs. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (HIVE-12941) Unexpected result when using MIN() on struct with NULL in first field
[ https://issues.apache.org/jira/browse/HIVE-12941?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15142088#comment-15142088 ] Hive QA commented on HIVE-12941: Here are the results of testing the latest attachment: https://issues.apache.org/jira/secure/attachment/12787108/HIVE-12941.3.patch {color:green}SUCCESS:{color} +1 due to 1 test(s) being added or modified. {color:red}ERROR:{color} -1 due to 5 failed/errored test(s), 9754 tests executed *Failed tests:* {noformat} TestSparkCliDriver-timestamp_lazy.q-bucketsortoptimize_insert_4.q-date_udf.q-and-12-more - did not produce a TEST-*.xml file org.apache.hadoop.hive.cli.TestCliDriver.testCliDriver_index_auto_mult_tables org.apache.hadoop.hive.cli.TestNegativeCliDriver.testNegativeCliDriver_authorization_uri_import org.apache.hive.jdbc.TestJdbcWithMiniHS2.testAddJarDataNucleusUnCaching org.apache.hive.jdbc.TestSSL.testSSLVersion {noformat} Test results: http://ec2-174-129-184-35.compute-1.amazonaws.com/jenkins/job/PreCommit-HIVE-TRUNK-Build/6936/testReport Console output: http://ec2-174-129-184-35.compute-1.amazonaws.com/jenkins/job/PreCommit-HIVE-TRUNK-Build/6936/console Test logs: http://ec2-174-129-184-35.compute-1.amazonaws.com/logs/PreCommit-HIVE-TRUNK-Build-6936/ Messages: {noformat} Executing org.apache.hive.ptest.execution.TestCheckPhase Executing org.apache.hive.ptest.execution.PrepPhase Executing org.apache.hive.ptest.execution.ExecutionPhase Executing org.apache.hive.ptest.execution.ReportingPhase Tests exited with: TestsFailedException: 5 tests failed {noformat} This message is automatically generated. ATTACHMENT ID: 12787108 - PreCommit-HIVE-TRUNK-Build > Unexpected result when using MIN() on struct with NULL in first field > - > > Key: HIVE-12941 > URL: https://issues.apache.org/jira/browse/HIVE-12941 > Project: Hive > Issue Type: Bug > Components: Hive >Affects Versions: 1.1.0 >Reporter: Jan-Erik Hedbom >Assignee: Yongzhi Chen > Attachments: HIVE-12941.1.patch, HIVE-12941.2.patch, > HIVE-12941.3.patch > > > Using MIN() on struct with NULL in first field of a row yields NULL as result. > Example: > select min(a) FROM (select 1 as a union all select 2 as a union all select > cast(null as int) as a) tmp; > OK > _c0 > 1 > As expected. But if we wrap it in a struct: > select min(a) FROM (select named_struct("field",1) as a union all select > named_struct("field",2) as a union all select named_struct("field",cast(null > as int)) as a) tmp; > OK > _c0 > NULL > Using MAX() works as expected for structs. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (HIVE-12941) Unexpected result when using MIN() on struct with NULL in first field
[ https://issues.apache.org/jira/browse/HIVE-12941?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15142223#comment-15142223 ] Yongzhi Chen commented on HIVE-12941: - The failures are not related. The test org.apache.hadoop.hive.cli.TestCliDriver.testCliDriver_index_auto_mult_tables passed in my local machine. The other 3 failed many times in other pre-commit builds. > Unexpected result when using MIN() on struct with NULL in first field > - > > Key: HIVE-12941 > URL: https://issues.apache.org/jira/browse/HIVE-12941 > Project: Hive > Issue Type: Bug > Components: Hive >Affects Versions: 1.1.0 >Reporter: Jan-Erik Hedbom >Assignee: Yongzhi Chen > Attachments: HIVE-12941.1.patch, HIVE-12941.2.patch, > HIVE-12941.3.patch > > > Using MIN() on struct with NULL in first field of a row yields NULL as result. > Example: > select min(a) FROM (select 1 as a union all select 2 as a union all select > cast(null as int) as a) tmp; > OK > _c0 > 1 > As expected. But if we wrap it in a struct: > select min(a) FROM (select named_struct("field",1) as a union all select > named_struct("field",2) as a union all select named_struct("field",cast(null > as int)) as a) tmp; > OK > _c0 > NULL > Using MAX() works as expected for structs. -- This message was sent by Atlassian JIRA (v6.3.4#6332)