29 const char *status =
"???";
40 status =
"INVALID_UTF8";
43 status =
"PROHIBITED";
67 const char *status =
NULL;
75 elog(
ERROR,
"return type must be a row type");
135 {0x100000, 0x10FFFF},
138#define PG_UTF8_TEST_RANGES_LEN \
139 (sizeof(pg_utf8_test_ranges) / sizeof(pg_utf8_test_ranges[0]))
166 elog(
ERROR,
"return type must be a row type");
229 memset(nulls,
false,
sizeof(nulls));
232 if (codepoint <= 0xFFFF)
static Datum values[MAXATTR]
#define CStringGetTextDatum(s)
#define palloc0_array(type, count)
#define PG_GETARG_BYTEA_PP(n)
#define PG_FUNCTION_INFO_V1(funcname)
#define PG_RETURN_DATUM(x)
TypeFuncClass get_call_result_type(FunctionCallInfo fcinfo, Oid *resultTypeId, TupleDesc *resultTupleDesc)
#define SRF_IS_FIRSTCALL()
#define SRF_PERCALL_SETUP()
#define SRF_RETURN_NEXT(_funcctx, _result)
#define SRF_FIRSTCALL_INIT()
static Datum HeapTupleGetDatum(const HeapTupleData *tuple)
#define SRF_RETURN_DONE(_funcctx)
HeapTuple heap_form_tuple(TupleDesc tupleDescriptor, const Datum *values, const bool *isnull)
void pfree(void *pointer)
void * palloc0(Size size)
#define CHECK_FOR_INTERRUPTS()
static MemoryContext MemoryContextSwitchTo(MemoryContext context)
static unsigned char * unicode_to_utf8(char32_t c, unsigned char *utf8string)
static int unicode_utf8len(char32_t c)
size_t strlcpy(char *dst, const char *src, size_t siz)
static Datum PointerGetDatum(const void *X)
static struct cvec * range(struct vars *v, chr a, chr b, int cases)
pg_saslprep_rc pg_saslprep(const char *input, char **output)
char32_t current_codepoint
static const char * saslprep_status_to_text(pg_saslprep_rc rc)
#define PG_UTF8_TEST_RANGES_LEN
static const pg_utf8_codepoint_range pg_utf8_test_ranges[]
Datum test_saslprep(PG_FUNCTION_ARGS)
Datum test_saslprep_ranges(PG_FUNCTION_ARGS)
static Size VARSIZE_ANY_EXHDR(const void *PTR)
static char * VARDATA(const void *PTR)
static char * VARDATA_ANY(const void *PTR)
static void SET_VARSIZE(void *PTR, Size len)