[
https://issues.apache.org/jira/browse/ORC-1291?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
William Hyun resolved ORC-1291.
-------------------------------
Fix Version/s: 1.8.1
Resolution: Fixed
Issue resolved by pull request 1283
[https://github.com/apache/orc/pull/1283]
> NullPointerException in TypeDescription
> ---------------------------------------
>
> Key: ORC-1291
> URL: https://issues.apache.org/jira/browse/ORC-1291
> Project: ORC
> Issue Type: Bug
> Components: Java
> Affects Versions: 1.8.0
> Reporter: Liron Levy
> Assignee: Dongjoon Hyun
> Priority: Major
> Fix For: 1.8.1
>
>
> There's a null pointer exception in the cases where TypeDescription does not
> have children.
> For example:
>
> {code:java}
> val orcSchema1 = TypeDescription.createStruct()
> .addField("a", TypeDescription.createString())
> .addField("b", TypeDescription.createDouble())
> .addField("c", TypeDescription.createBoolean())
> println(orcSchema1.hashCode()) {code}
> This will throw:
>
> java.lang.NullPointerException: Cannot invoke "java.util.List.hashCode()"
> because "this.children" is null
> As you can see version 1.7 had this code:
> {code:java}
> @Override
> public int hashCode() {
> long result = category.ordinal() * 4241 + maxLength + precision * 13 +
> scale;
> if (children != null) {
> for(TypeDescription child: children) {
> result = result * 6959 + child.hashCode();
> }
> }
> return (int) result;
> } {code}
> while version 1.8 has this:
> {code:java}
> @Override
> public int hashCode() {
> final int prime = 31;
> int result = 1;
> result = prime * result + category.hashCode();
> result = prime * result + children.hashCode();
> result = prime * result + maxLength;
> result = prime * result + precision;
> result = prime * result + scale;
> return result;
> } {code}
> Primitive type description do not have children which means that hashCode
> cannot work on any TypeDescription (as it will surely have primitive types
> somewhere).
--
This message was sent by Atlassian Jira
(v8.20.10#820010)