Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit b77c6c7

Browse filesBrowse files
committed
Whoops, missed updating dsynonym_init for new dictionary parameter method.
1 parent b2a52b3 commit b77c6c7
Copy full SHA for b77c6c7

File tree

Expand file treeCollapse file tree

1 file changed

+23
-12
lines changed
Filter options
Expand file treeCollapse file tree

1 file changed

+23
-12
lines changed

‎src/backend/tsearch/dict_synonym.c

Copy file name to clipboardExpand all lines: src/backend/tsearch/dict_synonym.c
+23-12Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,13 @@
77
*
88
*
99
* IDENTIFICATION
10-
* $PostgreSQL: pgsql/src/backend/tsearch/dict_synonym.c,v 1.1 2007/08/21 01:11:18 tgl Exp $
10+
* $PostgreSQL: pgsql/src/backend/tsearch/dict_synonym.c,v 1.2 2007/08/22 04:13:15 tgl Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
1414
#include "postgres.h"
1515

16+
#include "commands/defrem.h"
1617
#include "storage/fd.h"
1718
#include "tsearch/ts_locale.h"
1819
#include "tsearch/ts_public.h"
@@ -21,6 +22,7 @@
2122

2223

2324
#define SYNBUFLEN 4096
25+
2426
typedef struct
2527
{
2628
char *in;
@@ -63,27 +65,37 @@ compareSyn(const void *a, const void *b)
6365
Datum
6466
dsynonym_init(PG_FUNCTION_ARGS)
6567
{
66-
text *in;
68+
List *dictoptions = (List *) PG_GETARG_POINTER(0);
6769
DictSyn *d;
68-
int cur = 0;
70+
ListCell *l;
71+
char *filename = NULL;
6972
FILE *fin;
70-
char *filename;
7173
char buf[SYNBUFLEN];
7274
char *starti,
7375
*starto,
7476
*end = NULL;
77+
int cur = 0;
7578
int slen;
7679

77-
/* init functions must defend against NULLs for themselves */
78-
if (PG_ARGISNULL(0) || PG_GETARG_POINTER(0) == NULL)
80+
foreach(l, dictoptions)
81+
{
82+
DefElem *defel = (DefElem *) lfirst(l);
83+
84+
if (pg_strcasecmp("Synonyms", defel->defname) == 0)
85+
filename = defGetString(defel);
86+
else
87+
ereport(ERROR,
88+
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
89+
errmsg("unrecognized synonym parameter: \"%s\"",
90+
defel->defname)));
91+
}
92+
93+
if (!filename)
7994
ereport(ERROR,
8095
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
81-
errmsg("NULL config not allowed for Synonym")));
82-
in = PG_GETARG_TEXT_P(0);
83-
84-
filename = get_tsearch_config_filename(TextPGetCString(in), "syn");
96+
errmsg("missing Synonyms parameter")));
8597

86-
PG_FREE_IF_COPY(in, 0);
98+
filename = get_tsearch_config_filename(filename, "syn");
8799

88100
if ((fin = AllocateFile(filename, "r")) == NULL)
89101
ereport(ERROR,
@@ -142,7 +154,6 @@ dsynonym_init(PG_FUNCTION_ARGS)
142154
if (cur > 1)
143155
qsort(d->syn, d->len, sizeof(Syn), compareSyn);
144156

145-
pfree(filename);
146157
PG_RETURN_POINTER(d);
147158
}
148159

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.