[ https://issues.apache.org/jira/browse/HIVE-21264?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16787019#comment-16787019 ]
David Mollitor edited comment on HIVE-21264 at 3/7/19 5:48 PM: --------------------------------------------------------------- [~gopalv] Thank you so much for the review. If you prefer viewing changes in GitHub, I added a PR: https://github.com/apache/hive/pull/561 So, {{CharTypeInfo}} and {{VarcharTypeInfo}} are decedents of both {{BaseCharTypeInfo}} and {{PrimitiveTypeInfo}}. And with this proposed change, {{CharTypeInfo}} and {{VarcharTypeInfo}} do not override the {{hashcode}} or {{equals}} method. The equality check to ensure that they are the same type occurs in {{PrimitiveTypeInfo}} and the check that they are of the same length occurs in {{BaseCharTypeInfo}}. There is no need to do this check explicitly in the child classes. I have added a unit test to my patch to demonstrate. was (Author: belugabehr): [~gopalv] Thank you so much for the review. If you prefer viewing changes in GitHub, I added a PR: https://github.com/apache/hive/pull/561 So, {{CharTypeInfo}} and {{VarcharTypeInfo}} are decedents of both {{BaseCharTypeInfo}} and {{PrimitiveTypeInfo}}. And with this proposed change, {{CharTypeInfo}} and {{VarcharTypeInfo}} do not override the {{hashcode}} or {{equals}} method. The equality check to ensure that they are the same type occurs in {{PrimitiveTypeInfo} and the check that they are of the same length occurs in {{BaseCharTypeInfo}}. There is no need to do this check explicitly in the child classes. I have added a unit test to my patch to demonstrate. > Improvements Around CharTypeInfo > -------------------------------- > > Key: HIVE-21264 > URL: https://issues.apache.org/jira/browse/HIVE-21264 > Project: Hive > Issue Type: Improvement > Affects Versions: 4.0.0, 3.2.0 > Reporter: David Mollitor > Assignee: David Mollitor > Priority: Minor > Labels: pull-request-available > Attachments: HIVE-21264.1.patch, HIVE-21264.2.patch, > HIVE-21264.3.patch > > Time Spent: 10m > Remaining Estimate: 0h > > The {{CharTypeInfo}} stores the type name of the data type (char/varchar) and > the length (1-255). {{CharTypeInfo}} objects are often getting cached once > they are created. > The {{hashcode()}} and {{equals()}} of its sub-classes varchar and char are > inconsistent. > * Make hashcode and equals consistent (and fast) > * Simplify the {{getQualifiedName}} implementation and reduce the scope to > protected > * Other related nits -- This message was sent by Atlassian JIRA (v7.6.3#76005)