Re: formatting the output of a function

From: Martijn van Oosterhout <kleptog(at)svana(dot)org>
To: Islam Hegazy <islheg(at)gawab(dot)com>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: formatting the output of a function
Date: 2007-06-06 20:20:18
Message-ID: 20070606202018.GF8997@svana.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Wed, Jun 06, 2007 at 01:45:43PM -0600, Islam Hegazy wrote:
> output[0] = (char*)palloc(sizeof(int)); //allocate space for a string that accepts an integer

No it doesn't, it allocates space for an integer

> output[1] = (char*)palloc(sizeof(double)); //allocate space for a string that accepts an integer

This allocates space for a double.
>
> snprintf(output[0], sizeof(int), "%d", counter);
> snprintf(output[1], sizeof(float), "%.5f", result);

And here you're using sizeof(float) which is even smaller.

Don't try to be smart with the sizes, just use 16 bytes for both and in
the snprintf use 16 also, then everything will work fine.

> HeapTuple data;
> Datum finalResult;
> data = BuildTupleFromCStrings(attinmeta, output);

Although I think you're going the long way round, you can build a tuple
from the integer wtihout making a string first...

Have a nice day,
--
Martijn van Oosterhout <kleptog(at)svana(dot)org> http://svana.org/kleptog/
> From each according to his ability. To each according to his ability to litigate.

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Alvaro Herrera 2007-06-06 20:24:12 Re: New Live CD needed
Previous Message Islam Hegazy 2007-06-06 19:45:43 formatting the output of a function