Commit 638bd34f authored by Tom Lane's avatar Tom Lane

Found another small glitch in tsearch API: the two versions of ts_lexize()

are really redundant, since we invented a regdictionary alias type.
We can have just one function, declared as taking regdictionary, and
it will handle both behaviors.  Noted while working on documentation.
parent ba6b0bfd
...@@ -7,41 +7,31 @@ ...@@ -7,41 +7,31 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/tsearch/dict.c,v 1.1 2007/08/21 01:11:18 tgl Exp $ * $PostgreSQL: pgsql/src/backend/tsearch/dict.c,v 1.2 2007/10/19 22:01:45 tgl Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
#include "postgres.h" #include "postgres.h"
#include "funcapi.h"
#include "access/genam.h"
#include "access/heapam.h"
#include "access/skey.h"
#include "catalog/indexing.h"
#include "catalog/namespace.h"
#include "catalog/pg_ts_dict.h"
#include "catalog/pg_type.h" #include "catalog/pg_type.h"
#include "tsearch/ts_cache.h" #include "tsearch/ts_cache.h"
#include "tsearch/ts_public.h"
#include "tsearch/ts_utils.h" #include "tsearch/ts_utils.h"
#include "utils/array.h"
#include "utils/builtins.h" #include "utils/builtins.h"
#include "utils/fmgroids.h"
#include "utils/rel.h"
#include "utils/syscache.h"
/* /*
* Lexize one word by dictionary, mostly debug function * Lexize one word by dictionary, mostly debug function
*/ */
static ArrayType * Datum
ts_lexize_workhorse(Oid dictId, text *in) ts_lexize(PG_FUNCTION_ARGS)
{ {
Oid dictId = PG_GETARG_OID(0);
text *in = PG_GETARG_TEXT_P(1);
ArrayType *a;
TSDictionaryCacheEntry *dict; TSDictionaryCacheEntry *dict;
TSLexeme *res, TSLexeme *res,
*ptr; *ptr;
Datum *da; Datum *da;
ArrayType *a;
DictSubState dstate = {false, false, NULL}; DictSubState dstate = {false, false, NULL};
dict = lookup_ts_dictionary_cache(dictId); dict = lookup_ts_dictionary_cache(dictId);
...@@ -65,12 +55,12 @@ ts_lexize_workhorse(Oid dictId, text *in) ...@@ -65,12 +55,12 @@ ts_lexize_workhorse(Oid dictId, text *in)
} }
if (!res) if (!res)
return NULL; PG_RETURN_NULL();
ptr = res; ptr = res;
while (ptr->lexeme) while (ptr->lexeme)
ptr++; ptr++;
da = (Datum *) palloc(sizeof(Datum) * (ptr - res + 1)); da = (Datum *) palloc(sizeof(Datum) * (ptr - res));
ptr = res; ptr = res;
while (ptr->lexeme) while (ptr->lexeme)
{ {
...@@ -95,37 +85,5 @@ ts_lexize_workhorse(Oid dictId, text *in) ...@@ -95,37 +85,5 @@ ts_lexize_workhorse(Oid dictId, text *in)
pfree(res); pfree(res);
pfree(da); pfree(da);
return a; PG_RETURN_POINTER(a);
}
Datum
ts_lexize_byid(PG_FUNCTION_ARGS)
{
Oid dictId = PG_GETARG_OID(0);
text *in = PG_GETARG_TEXT_P(1);
ArrayType *a;
a = ts_lexize_workhorse(dictId, in);
if (a)
PG_RETURN_POINTER(a);
else
PG_RETURN_NULL();
}
Datum
ts_lexize_byname(PG_FUNCTION_ARGS)
{
text *dictname = PG_GETARG_TEXT_P(0);
text *in = PG_GETARG_TEXT_P(1);
Oid dictId;
ArrayType *a;
dictId = TSDictionaryGetDictid(textToQualifiedNameList(dictname), false);
a = ts_lexize_workhorse(dictId, in);
if (a)
PG_RETURN_POINTER(a);
else
PG_RETURN_NULL();
} }
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
* Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* $PostgreSQL: pgsql/src/include/catalog/catversion.h,v 1.433 2007/10/19 19:48:34 tgl Exp $ * $PostgreSQL: pgsql/src/include/catalog/catversion.h,v 1.434 2007/10/19 22:01:45 tgl Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -53,6 +53,6 @@ ...@@ -53,6 +53,6 @@
*/ */
/* yyyymmddN */ /* yyyymmddN */
#define CATALOG_VERSION_NO 200710191 #define CATALOG_VERSION_NO 200710192
#endif #endif
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* $PostgreSQL: pgsql/src/include/catalog/pg_proc.h,v 1.475 2007/10/19 19:48:34 tgl Exp $ * $PostgreSQL: pgsql/src/include/catalog/pg_proc.h,v 1.476 2007/10/19 22:01:45 tgl Exp $
* *
* NOTES * NOTES
* The script catalog/genbki.sh reads this file and generates .bki * The script catalog/genbki.sh reads this file and generates .bki
...@@ -4326,9 +4326,7 @@ DESCR(""); ...@@ -4326,9 +4326,7 @@ DESCR("");
DATA(insert OID = 3721 ( prsd_lextype PGNSP PGUID 12 1 0 f f t f i 1 2281 "2281" _null_ _null_ _null_ prsd_lextype - _null_ _null_ )); DATA(insert OID = 3721 ( prsd_lextype PGNSP PGUID 12 1 0 f f t f i 1 2281 "2281" _null_ _null_ _null_ prsd_lextype - _null_ _null_ ));
DESCR(""); DESCR("");
DATA(insert OID = 3723 ( ts_lexize PGNSP PGUID 12 1 0 f f t f i 2 1009 "26 25" _null_ _null_ _null_ ts_lexize_byid - _null_ _null_ )); DATA(insert OID = 3723 ( ts_lexize PGNSP PGUID 12 1 0 f f t f i 2 1009 "3769 25" _null_ _null_ _null_ ts_lexize - _null_ _null_ ));
DESCR("normalize one word by dictionary");
DATA(insert OID = 3724 ( ts_lexize PGNSP PGUID 12 1 0 f f t f s 2 1009 "25 25" _null_ _null_ _null_ ts_lexize_byname - _null_ _null_ ));
DESCR("normalize one word by dictionary"); DESCR("normalize one word by dictionary");
DATA(insert OID = 3725 ( dsimple_init PGNSP PGUID 12 1 0 f f t f i 1 2281 "2281" _null_ _null_ _null_ dsimple_init - _null_ _null_ )); DATA(insert OID = 3725 ( dsimple_init PGNSP PGUID 12 1 0 f f t f i 1 2281 "2281" _null_ _null_ _null_ dsimple_init - _null_ _null_ ));
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
* *
* Copyright (c) 1998-2007, PostgreSQL Global Development Group * Copyright (c) 1998-2007, PostgreSQL Global Development Group
* *
* $PostgreSQL: pgsql/src/include/tsearch/ts_utils.h,v 1.4 2007/09/10 12:36:41 teodor Exp $ * $PostgreSQL: pgsql/src/include/tsearch/ts_utils.h,v 1.5 2007/10/19 22:01:45 tgl Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -222,8 +222,7 @@ extern Datum prsd_lextype(PG_FUNCTION_ARGS); ...@@ -222,8 +222,7 @@ extern Datum prsd_lextype(PG_FUNCTION_ARGS);
/* /*
* Dictionary interface to SQL * Dictionary interface to SQL
*/ */
extern Datum ts_lexize_byid(PG_FUNCTION_ARGS); extern Datum ts_lexize(PG_FUNCTION_ARGS);
extern Datum ts_lexize_byname(PG_FUNCTION_ARGS);
/* /*
* Simple built-in dictionary * Simple built-in dictionary
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment