hawq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kavinder Dhaliwal (JIRA)" <j...@apache.org>
Subject [jira] [Created] (HAWQ-944) Numutils.c: pg_ltoa and pg_itoa functions allocate unnecessary amount of bytes
Date Thu, 21 Jul 2016 16:19:20 GMT
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)

Mime
View raw message