diff options
Diffstat (limited to 'src/backend/utils/adt/quote.c')
-rw-r--r-- | src/backend/utils/adt/quote.c | 24 |
1 files changed, 5 insertions, 19 deletions
diff --git a/src/backend/utils/adt/quote.c b/src/backend/utils/adt/quote.c index 519c6d874b5..6074414c372 100644 --- a/src/backend/utils/adt/quote.c +++ b/src/backend/utils/adt/quote.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/quote.c,v 1.24 2008/03/23 00:24:19 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/quote.c,v 1.25 2008/03/25 22:42:44 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -23,26 +23,13 @@ Datum quote_ident(PG_FUNCTION_ARGS) { - text *t = PG_GETARG_TEXT_P(0); - text *result; + text *t = PG_GETARG_TEXT_PP(0); const char *qstr; char *str; - int len; - - /* We have to convert to a C string to use quote_identifier */ - len = VARSIZE(t) - VARHDRSZ; - str = (char *) palloc(len + 1); - memcpy(str, VARDATA(t), len); - str[len] = '\0'; + str = text_to_cstring(t); qstr = quote_identifier(str); - - len = strlen(qstr); - result = (text *) palloc(len + VARHDRSZ); - SET_VARSIZE(result, len + VARHDRSZ); - memcpy(VARDATA(result), qstr, len); - - PG_RETURN_TEXT_P(result); + PG_RETURN_TEXT_P(cstring_to_text(qstr)); } /* @@ -106,8 +93,7 @@ Datum quote_nullable(PG_FUNCTION_ARGS) { if (PG_ARGISNULL(0)) - PG_RETURN_DATUM(DirectFunctionCall1(textin, - CStringGetDatum("NULL"))); + PG_RETURN_TEXT_P(cstring_to_text("NULL")); else PG_RETURN_DATUM(DirectFunctionCall1(quote_literal, PG_GETARG_DATUM(0))); |