17#include "catalog/pg_collation_d.h"
53 while (*in && isspace((
unsigned char) *in))
56 if (!*in || *in ==
'#')
60 while (*in && !isspace((
unsigned char) *in))
84 (
errcode(ERRCODE_CONFIG_FILE_ERROR),
85 errmsg(
"could not open synonym file \"%s\": %m",
139 pfree(real_filename);
158 foreach(l, dictoptions)
162 if (strcmp(defel->
defname,
"matchorig") == 0)
166 else if (strcmp(defel->
defname,
"keeporig") == 0)
170 else if (strcmp(defel->
defname,
"matchsynonyms") == 0)
174 else if (strcmp(defel->
defname,
"keepsynonyms") == 0)
178 else if (strcmp(defel->
defname,
"rules") == 0)
186 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
187 errmsg(
"unrecognized xsyn parameter: \"%s\"",
208 if (!length || d->
len == 0)
238 while ((syn =
find_word(pos, &end)) != NULL)
247 res[nsyns].
flags = 0;
char * defGetString(DefElem *def)
bool defGetBoolean(DefElem *def)
static int compare_syn(const void *a, const void *b)
Datum dxsyn_init(PG_FUNCTION_ARGS)
static void read_dictionary(DictSyn *d, const char *filename)
Datum dxsyn_lexize(PG_FUNCTION_ARGS)
static char * find_word(char *in, char **end)
PG_FUNCTION_INFO_V1(dxsyn_init)
int errcode(int sqlerrcode)
int errmsg(const char *fmt,...)
#define ereport(elevel,...)
#define PG_GETARG_POINTER(n)
#define PG_GETARG_INT32(n)
#define PG_RETURN_POINTER(x)
if(TABLE==NULL||TABLE_index==NULL)
int pg_mblen(const char *mbstr)
char * pstrdup(const char *in)
void * repalloc(void *pointer, Size size)
void pfree(void *pointer)
void * palloc0(Size size)
char * pnstrdup(const char *in, Size len)
#define qsort(a, b, c, d)
static void word(struct vars *v, int dir, struct state *lp, struct state *rp)
bool tsearch_readline_begin(tsearch_readline_state *stp, const char *filename)
char * tsearch_readline(tsearch_readline_state *stp)
void tsearch_readline_end(tsearch_readline_state *stp)
char * get_tsearch_config_filename(const char *basename, const char *extension)