William Slacum created HIVE-11544:
-------------------------------------

             Summary: LazyInteger should avoid throwing NumberFormatException
                 Key: HIVE-11544
                 URL: https://issues.apache.org/jira/browse/HIVE-11544
             Project: Hive
          Issue Type: Improvement
          Components: Serializers/Deserializers
    Affects Versions: 1.2.0, 0.14.0
            Reporter: William Slacum
            Priority: Minor


{{LazyInteger#parseInt}} will throw a {{NumberFormatException}} under these 
conditions:

# bytes are null
# radix is invalid
# length is 0
# the string is '+' or '-'
# {{LazyInteger#parse}} throws a {{NumberFormatException}}

Most of the time, such as in {{LazyInteger#init}} and {{LazyByte#init}}, the 
exception is caught, swallowed, and {{isNull}} is set to {{true}}.

This is generally a bad workflow, as exception creation is a performance 
bottleneck, and potentially repeating for many rows in a query can have a 
drastic performance consequence.

It would be better if this method returned an {{Optional<Integer>}}, which 
would provide similar functionality with a higher throughput rate.

I've tested against 0.14.0, and saw that the logic is unchanged in 1.2.0, so 
I've marked those as affected. Any version in between would also suffer from 
this.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to