[ 
https://issues.apache.org/jira/browse/HAWQ-944?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Goden Yao updated HAWQ-944:
---------------------------
    Fix Version/s: 2.0.1.0-incubating

> Numutils.c: pg_ltoa and pg_itoa functions allocate unnecessary amount of bytes
> ------------------------------------------------------------------------------
>
>                 Key: HAWQ-944
>                 URL: https://issues.apache.org/jira/browse/HAWQ-944
>             Project: Apache HAWQ
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Kavinder Dhaliwal
>            Assignee: Kavinder Dhaliwal
>            Priority: Minor
>             Fix For: 2.0.1.0-incubating
>
>
> The current implementations of {{pg_ltoa}} and {{pg_itoa}} allocate a 33 byte 
> char array and set the input pointer to that array. This is far too many 
> bytes than needed to translate an int16 or int32 to a string
> int32 -> 10 bytes maximum + 1 sign bit + '\0' = 12 bytes
> int16 ->  5 bytes maximum  + 1 sign bit + '\0' = 7 bytes
> When HAWQ/Greenplum forked from Postgres the two functions simply delegated 
> to {{sprintf}} so an optimization was introduced that involved the 33 byte 
> solution. Postgres itself implemented these functions in commit 
> https://github.com/postgres/postgres/commit/4fc115b2e981f8c63165ca86a23215380a3fda66
>  that require a 12 byte maximum char pointer.
> This is a minor improvement that can be made to the HAWQ codebase and it's 
> relatively little effort to do so.



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

Reply via email to