1
/*-------------------------------------------------------------------------
4
* Functions for quoting identifiers and literals
6
* Portions Copyright (c) 2000-2005, PostgreSQL Global Development Group
10
* $PostgreSQL: pgsql/src/backend/utils/adt/quote.c,v 1.14.4.1 2005-03-21 16:29:31 tgl Exp $
12
*-------------------------------------------------------------------------
16
#include "utils/builtins.h"
21
* returns a properly quoted identifier
24
quote_ident(PG_FUNCTION_ARGS)
26
text *t = PG_GETARG_TEXT_P(0);
32
/* We have to convert to a C string to use quote_identifier */
33
len = VARSIZE(t) - VARHDRSZ;
34
str = (char *) palloc(len + 1);
35
memcpy(str, VARDATA(t), len);
38
qstr = quote_identifier(str);
41
result = (text *) palloc(len + VARHDRSZ);
42
VARATT_SIZEP(result) = len + VARHDRSZ;
43
memcpy(VARDATA(result), qstr, len);
45
PG_RETURN_TEXT_P(result);
50
* returns a properly quoted literal
53
quote_literal(PG_FUNCTION_ARGS)
55
text *t = PG_GETARG_TEXT_P(0);
61
len = VARSIZE(t) - VARHDRSZ;
62
/* We make a worst-case result area; wasting a little space is OK */
63
result = (text *) palloc(len * 2 + 2 + VARHDRSZ);
66
cp2 = VARDATA(result);
73
else if (*cp1 == '\\')
80
VARATT_SIZEP(result) = cp2 - ((char *) result);
82
PG_RETURN_TEXT_P(result);