#include "postgres.h"#include "utils/builtins.h"
Go to the source code of this file.
Functions | |
| Datum | quote_ident (PG_FUNCTION_ARGS) |
| static size_t | quote_literal_internal (char *dst, const char *src, size_t len) |
| Datum | quote_literal (PG_FUNCTION_ARGS) |
| char * | quote_literal_cstr (const char *rawstr) |
| Datum | quote_nullable (PG_FUNCTION_ARGS) |
| Datum quote_ident | ( | PG_FUNCTION_ARGS | ) |
Definition at line 24 of file quote.c.
References cstring_to_text(), PG_GETARG_TEXT_PP, PG_RETURN_TEXT_P, quote_identifier(), and text_to_cstring().
Referenced by quote_ident_cstr().
{
text *t = PG_GETARG_TEXT_PP(0);
const char *qstr;
char *str;
str = text_to_cstring(t);
qstr = quote_identifier(str);
PG_RETURN_TEXT_P(cstring_to_text(qstr));
}
| Datum quote_literal | ( | PG_FUNCTION_ARGS | ) |
Definition at line 77 of file quote.c.
References palloc(), PG_GETARG_TEXT_P, PG_RETURN_TEXT_P, quote_literal_internal(), SET_VARSIZE, VARDATA, VARHDRSZ, and VARSIZE.
Referenced by quote_nullable().
{
text *t = PG_GETARG_TEXT_P(0);
text *result;
char *cp1;
char *cp2;
int len;
len = VARSIZE(t) - VARHDRSZ;
/* We make a worst-case result area; wasting a little space is OK */
result = (text *) palloc(len * 2 + 3 + VARHDRSZ);
cp1 = VARDATA(t);
cp2 = VARDATA(result);
SET_VARSIZE(result, VARHDRSZ + quote_literal_internal(cp2, cp1, len));
PG_RETURN_TEXT_P(result);
}
| char* quote_literal_cstr | ( | const char * | rawstr | ) |
Definition at line 102 of file quote.c.
References palloc(), and quote_literal_internal().
Referenced by build_tuplestore_recursively(), get_sql_delete(), get_sql_insert(), get_sql_update(), get_tuple_of_interest(), PLy_quote_literal(), PLy_quote_nullable(), and text_format_string_conversion().
{
char *result;
int len;
int newlen;
len = strlen(rawstr);
/* We make a worst-case result area; wasting a little space is OK */
result = palloc(len * 2 + 3);
newlen = quote_literal_internal(result, rawstr, len);
result[newlen] = '\0';
return result;
}
| static size_t quote_literal_internal | ( | char * | dst, | |
| const char * | src, | |||
| size_t | len | |||
| ) | [static] |
Definition at line 46 of file quote.c.
References SQL_STR_DOUBLE.
Referenced by quote_literal(), and quote_literal_cstr().
{
const char *s;
char *savedst = dst;
for (s = src; s < src + len; s++)
{
if (*s == '\\')
{
*dst++ = ESCAPE_STRING_SYNTAX;
break;
}
}
*dst++ = '\'';
while (len-- > 0)
{
if (SQL_STR_DOUBLE(*src, true))
*dst++ = *src;
*dst++ = *src++;
}
*dst++ = '\'';
return dst - savedst;
}
| Datum quote_nullable | ( | PG_FUNCTION_ARGS | ) |
Definition at line 124 of file quote.c.
References cstring_to_text(), DirectFunctionCall1, PG_ARGISNULL, PG_GETARG_DATUM, PG_RETURN_DATUM, PG_RETURN_TEXT_P, and quote_literal().
{
if (PG_ARGISNULL(0))
PG_RETURN_TEXT_P(cstring_to_text("NULL"));
else
PG_RETURN_DATUM(DirectFunctionCall1(quote_literal,
PG_GETARG_DATUM(0)));
}
1.7.1