On 1/2/14, 2:12 PM, Alvaro Herrera wrote:
> Peter Eisentraut wrote:
>
>> psprintf() in place of hardcoded palloc(N) + sprintf() and the like.
>>
>
>> + values[j++] = psprintf("%d", stat.blkno);
>> + values[j++] = psprintf("%c", stat.type);
>> + values[j++] = psprintf("%d", stat.live_items);
>> + values[j++] = psprintf("%d", stat.dead_items);
>> + values[j++] = psprintf("%d", stat.avg_item_size);
>> + values[j++] = psprintf("%d", stat.page_size);
>> + values[j++] = psprintf("%d", stat.free_size);
>> + values[j++] = psprintf("%d", stat.btpo_prev);
>> + values[j++] = psprintf("%d", stat.btpo_next);
>> + values[j++] = psprintf("%d", (stat.type == 'd') ? stat.btpo.xact : stat.btpo.level);
>> + values[j++] = psprintf("%d", stat.btpo_flags);
>>
>> tuple = BuildTupleFromCStrings(TupleDescGetAttInMetadata(tupleDesc),
>> values);
>
> In cases such as this one, I have often wondered whether it'd be better
> to write this as DatumGetSometype() plus heap_form_tuple, instead of
> printing to strings and then building a tuple from those.
Probably. As you can see, this style is only used in a few contrib
modules that all came from the same source, I think.