mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-30 00:04:49 -04:00 
			
		
		
		
	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 | ||||
|  *	  $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 "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 "tsearch/ts_cache.h" | ||||
| #include "tsearch/ts_public.h" | ||||
| #include "tsearch/ts_utils.h" | ||||
| #include "utils/array.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 | ||||
|  */ | ||||
| static ArrayType * | ||||
| ts_lexize_workhorse(Oid dictId, text *in) | ||||
| Datum | ||||
| ts_lexize(PG_FUNCTION_ARGS) | ||||
| { | ||||
| 	Oid			dictId = PG_GETARG_OID(0); | ||||
| 	text	   *in = PG_GETARG_TEXT_P(1); | ||||
| 	ArrayType  *a; | ||||
| 	TSDictionaryCacheEntry *dict; | ||||
| 	TSLexeme   *res, | ||||
| 			   *ptr; | ||||
| 	Datum	   *da; | ||||
| 	ArrayType  *a; | ||||
| 	DictSubState dstate = {false, false, NULL}; | ||||
| 
 | ||||
| 	dict = lookup_ts_dictionary_cache(dictId); | ||||
| @ -65,12 +55,12 @@ ts_lexize_workhorse(Oid dictId, text *in) | ||||
| 	} | ||||
| 
 | ||||
| 	if (!res) | ||||
| 		return NULL; | ||||
| 		PG_RETURN_NULL(); | ||||
| 
 | ||||
| 	ptr = res; | ||||
| 	while (ptr->lexeme) | ||||
| 		ptr++; | ||||
| 	da = (Datum *) palloc(sizeof(Datum) * (ptr - res + 1)); | ||||
| 	da = (Datum *) palloc(sizeof(Datum) * (ptr - res)); | ||||
| 	ptr = res; | ||||
| 	while (ptr->lexeme) | ||||
| 	{ | ||||
| @ -95,37 +85,5 @@ ts_lexize_workhorse(Oid dictId, text *in) | ||||
| 	pfree(res); | ||||
| 	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); | ||||
| 	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(); | ||||
| 	PG_RETURN_POINTER(a); | ||||
| } | ||||
|  | ||||
| @ -37,7 +37,7 @@ | ||||
|  * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group | ||||
|  * 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 */ | ||||
| #define CATALOG_VERSION_NO	200710191 | ||||
| #define CATALOG_VERSION_NO	200710192 | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -7,7 +7,7 @@ | ||||
|  * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group | ||||
|  * 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 | ||||
|  *	  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_ )); | ||||
| 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_ )); | ||||
| 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_ )); | ||||
| 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 = 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 | ||||
|  * | ||||
|  * $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 | ||||
|  */ | ||||
| extern Datum ts_lexize_byid(PG_FUNCTION_ARGS); | ||||
| extern Datum ts_lexize_byname(PG_FUNCTION_ARGS); | ||||
| extern Datum ts_lexize(PG_FUNCTION_ARGS); | ||||
| 
 | ||||
| /*
 | ||||
|  * Simple built-in dictionary | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user