Kavinder Dhaliwal created HAWQ-944:
--------------------------------------
Summary: 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: Lei Chang
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)