Well, a couple of specific cases that I came across are
quote_identifier() in src/backend/utils/adt/quote.c, and
do_to_timestamp() in src/backend/utils/adt/formatting.c (line 3349).
I was getting a rough notion of how common the duplication was using
$ egrep -Rn -C 2 'memcpy.*VARDATA' src/backend
Not all of these are genuine duplications of textout and textin (you
have to eyeball them individually to work that out) but it's a
reasonable starting point.
The files matched under src/backend are as follows.
src/backend/libpq/be-fsstubs.c
src/backend/utils/mb/mbutils.c
src/backend/utils/adt/timestamp.c
src/backend/utils/adt/nabstime.c
src/backend/utils/adt/xml.c
src/backend/utils/adt/quote.c
src/backend/utils/adt/oracle_compat.c
src/backend/utils/adt/varchar.c
src/backend/utils/adt/ruleutils.c
src/backend/utils/adt/varlena.c
src/backend/utils/adt/tsginidx.c
src/backend/utils/adt/cash.c
src/backend/utils/adt/date.c
src/backend/utils/adt/genfile.c
src/backend/utils/adt/network.c
src/backend/utils/adt/selfuncs.c
src/backend/utils/adt/formatting.c
src/backend/utils/adt/version.c
src/backend/utils/adt/pgstatfuncs.c
src/backend/access/heap/tuptoaster.c
src/backend/access/common/heaptuple.c
src/backend/storage/large_object/inv_api.c
src/backend/executor/execQual.c
src/backend/catalog/pg_conversion.c
On 9/22/07, Gregory Stark <stark@enterprisedb.com> wrote:
>
> "Brendan Jurd" <direvus@gmail.com> writes:
>
> > On 9/22/07, Gregory Stark <stark@enterprisedb.com> wrote:
> >> The canonical way to do it is with
> >>
> >> DatumGetCString(DirectFunctionCall1(textout, t))
> >
> > Ah, I see. Thanks.
> >
> > In that case, would it be helpful if I submitted a patch for the
> > various code fragments that do this locally, updating them to use
> > DatumGetCString?
>
> I would be interested in seeing just a list of such places if you have it
> handy. I don't think we consider it wrong to violate the text data type
> abstraction barrier like you describe though.
>
> I'm interested because any such code is possibly either failing to take into
> account toasted data or is unnecessarily detoasting packed varlenas.
>
> --
> Gregory Stark
> EnterpriseDB http://www.enterprisedb.com
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: don't forget to increase your free space map settings
>