[
https://issues.apache.org/jira/browse/HIVE-21264?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16787019#comment-16787019
]
David Mollitor commented on HIVE-21264:
---------------------------------------
[~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)