This has been saved for the 8.4 release:


Brendan Jurd wrote:
> As discussed on -hackers, I'm trying to get rid of some redundant code
> by creating a widely useful set of functions to convert between text
> and C string in the backend.
> The new extern functions, declared in include/utils/builtins.h and
> defined in backend/utils/adt/varlena.c, are:
> char * text_cstring(const text *t)
> char * text_cstring_limit(const text *t, int len)
> text * cstring_text(const char *s)
> text * cstring_text_limit(const char *s, int len)
> Within varlena.c, the actual conversions are performed by:
> char * do_text_cstring(const text *t, const int len)
> text * do_cstring_text(const char *s, const int len)
> These functions now do the work for the fmgr functions textin and
> textout, as well as being directly accessible by backend code.
> I've searched through the backend for any code which converted between
> text and C string manually (with memcpy and VARDATA), replacing with
> calls to one of the four new functions as appropriate.
> I came across some areas which were using the same, or similar,
> conversion technique on other varlena data types, such as bytea or
> xmltype.  In cases where the conversion was completely identical I
> used the new functions.  In cases with any differences (even if they
> seemed minor) I played it safe and left them alone.
> I'd now like to submit my work so far for review.  This patch compiled
> cleanly on Linux and passed all parallel regression tests.  It appears
> to be performance-neutral based on a few rough tests; I haven't tried
> to profile the changes in detail.
> There is still a lot of code out there using DirectFunctionCall1 to
> call text(in|out)).  I've decided to wait for some community feedback
> on the patch as it stands before replacing those calls.  There are a
> great many, and it would be a shame to have to go through them more
> than once.
> I would naively expect that replacing fmgr calls with direct calls
> would lead to a performance gain (no fmgr overhead), but honestly I'm
> not sure whether that would actually make a difference.
> Thanks for your time,
> BJ

[ Attachment, skipping... ]

> ---------------------------(end of broadcast)---------------------------
> TIP 7: You can help support the PostgreSQL project by donating at

  Bruce Momjian  <[EMAIL PROTECTED]>

  + If your life is a hard drive, Christ can be your backup. +

---------------------------(end of broadcast)---------------------------
TIP 7: You can help support the PostgreSQL project by donating at


Reply via email to