mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-01-06 15:24:56 +08:00
Introduce filtering dictionary support to tsearch. Propagate --nolocale option
to CREATE DATABASE command in pg_regress to allow correct checking of locale-sensitive contrib modules.
This commit is contained in:
parent
77dfb64df4
commit
a88a48011c
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/backend/tsearch/ts_parse.c,v 1.13 2009/07/16 06:33:44 petere Exp $
|
* $PostgreSQL: pgsql/src/backend/tsearch/ts_parse.c,v 1.14 2009/08/18 10:30:41 teodor Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -29,7 +29,6 @@ typedef struct ParsedLex
|
|||||||
int type;
|
int type;
|
||||||
char *lemm;
|
char *lemm;
|
||||||
int lenlemm;
|
int lenlemm;
|
||||||
bool resfollow;
|
|
||||||
struct ParsedLex *next;
|
struct ParsedLex *next;
|
||||||
} ParsedLex;
|
} ParsedLex;
|
||||||
|
|
||||||
@ -189,6 +188,8 @@ LexizeExec(LexizeData *ld, ParsedLex **correspondLexem)
|
|||||||
while (ld->towork.head)
|
while (ld->towork.head)
|
||||||
{
|
{
|
||||||
ParsedLex *curVal = ld->towork.head;
|
ParsedLex *curVal = ld->towork.head;
|
||||||
|
char *curValLemm = curVal->lemm;
|
||||||
|
int curValLenLemm = curVal->lenlemm;
|
||||||
|
|
||||||
map = ld->cfg->map + curVal->type;
|
map = ld->cfg->map + curVal->type;
|
||||||
|
|
||||||
@ -208,8 +209,8 @@ LexizeExec(LexizeData *ld, ParsedLex **correspondLexem)
|
|||||||
res = (TSLexeme *) DatumGetPointer(FunctionCall4(
|
res = (TSLexeme *) DatumGetPointer(FunctionCall4(
|
||||||
&(dict->lexize),
|
&(dict->lexize),
|
||||||
PointerGetDatum(dict->dictData),
|
PointerGetDatum(dict->dictData),
|
||||||
PointerGetDatum(curVal->lemm),
|
PointerGetDatum(curValLemm),
|
||||||
Int32GetDatum(curVal->lenlemm),
|
Int32GetDatum(curValLenLemm),
|
||||||
PointerGetDatum(&ld->dictState)
|
PointerGetDatum(&ld->dictState)
|
||||||
));
|
));
|
||||||
|
|
||||||
@ -231,6 +232,13 @@ LexizeExec(LexizeData *ld, ParsedLex **correspondLexem)
|
|||||||
if (!res) /* dictionary doesn't know this lexeme */
|
if (!res) /* dictionary doesn't know this lexeme */
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
if ( res->flags & TSL_FILTER )
|
||||||
|
{
|
||||||
|
curValLemm = res->lexeme;
|
||||||
|
curValLenLemm = strlen(res->lexeme);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
RemoveHead(ld);
|
RemoveHead(ld);
|
||||||
setCorrLex(ld, correspondLexem);
|
setCorrLex(ld, correspondLexem);
|
||||||
return res;
|
return res;
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 1998-2009, PostgreSQL Global Development Group
|
* Copyright (c) 1998-2009, PostgreSQL Global Development Group
|
||||||
*
|
*
|
||||||
* $PostgreSQL: pgsql/src/include/tsearch/ts_public.h,v 1.15 2009/07/16 06:33:45 petere Exp $
|
* $PostgreSQL: pgsql/src/include/tsearch/ts_public.h,v 1.16 2009/08/18 10:30:41 teodor Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -101,6 +101,7 @@ typedef struct
|
|||||||
|
|
||||||
#define TSL_ADDPOS 0x01
|
#define TSL_ADDPOS 0x01
|
||||||
#define TSL_PREFIX 0x02
|
#define TSL_PREFIX 0x02
|
||||||
|
#define TSL_FILTER 0x04
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Struct for supporting complex dictionaries like thesaurus.
|
* Struct for supporting complex dictionaries like thesaurus.
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
* Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group
|
* Portions Copyright (c) 1996-2009, 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/test/regress/pg_regress.c,v 1.63 2009/06/11 14:49:15 momjian Exp $
|
* $PostgreSQL: pgsql/src/test/regress/pg_regress.c,v 1.64 2009/08/18 10:30:41 teodor Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -1767,9 +1767,11 @@ create_database(const char *dbname)
|
|||||||
*/
|
*/
|
||||||
header(_("creating database \"%s\""), dbname);
|
header(_("creating database \"%s\""), dbname);
|
||||||
if (encoding)
|
if (encoding)
|
||||||
psql_command("postgres", "CREATE DATABASE \"%s\" TEMPLATE=template0 ENCODING='%s'", dbname, encoding);
|
psql_command("postgres", "CREATE DATABASE \"%s\" TEMPLATE=template0 ENCODING='%s'%s", dbname, encoding,
|
||||||
|
(nolocale) ? " LC_COLLATE='C' LC_CTYPE='C'" : "");
|
||||||
else
|
else
|
||||||
psql_command("postgres", "CREATE DATABASE \"%s\" TEMPLATE=template0", dbname);
|
psql_command("postgres", "CREATE DATABASE \"%s\" TEMPLATE=template0%s", dbname,
|
||||||
|
(nolocale) ? " LC_COLLATE='C' LC_CTYPE='C'" : "");
|
||||||
psql_command(dbname,
|
psql_command(dbname,
|
||||||
"ALTER DATABASE \"%s\" SET lc_messages TO 'C';"
|
"ALTER DATABASE \"%s\" SET lc_messages TO 'C';"
|
||||||
"ALTER DATABASE \"%s\" SET lc_monetary TO 'C';"
|
"ALTER DATABASE \"%s\" SET lc_monetary TO 'C';"
|
||||||
|
Loading…
Reference in New Issue
Block a user