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.
This commit is contained in:
parent
ba6b0bfd63
commit
638bd34f89
@ -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)
|
|||||||
}
|
}
|
||||||
|
|
||||||
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)
|
|||||||
pfree(res);
|
pfree(res);
|
||||||
pfree(da);
|
pfree(da);
|
||||||
|
|
||||||
return 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);
|
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 @@
|
|||||||
* 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 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/* yyyymmddN */
|
/* yyyymmddN */
|
||||||
#define CATALOG_VERSION_NO 200710191
|
#define CATALOG_VERSION_NO 200710192
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -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("");
|
|||||||
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 @@
|
|||||||
*
|
*
|
||||||
* 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);
|
|||||||
/*
|
/*
|
||||||
* 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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user