149{
154
155
157 {
160
163
165 elog(
ERROR,
"return type must be a row type");
167
168
173
175 }
176
179
181 {
188 const char *status;
193 bool nulls[4] = {0};
196
198
199
201 {
206 continue;
207 }
208
210
211
214 {
216 continue;
217 }
219
220
223
224
226
227
228 memset(nulls,
false,
sizeof(nulls));
229
230
231 if (codepoint <= 0
xFFFF)
233 else
236
237
240
241
246
247
249 {
251
257 }
258 else
259 {
260 nulls[3] = true;
262 }
263
264
267
268
270
272 }
273
274
276}
static Datum values[MAXATTR]
#define CStringGetTextDatum(s)
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)
#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)
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[]
static char * VARDATA(const void *PTR)
static void SET_VARSIZE(void *PTR, Size len)