PostgreSQL Source Code git master
Functions
dict.c File Reference
#include "postgres.h"
#include "catalog/pg_type.h"
#include "tsearch/ts_cache.h"
#include "tsearch/ts_public.h"
#include "utils/array.h"
#include "utils/builtins.h"
Include dependency graph for dict.c:

Go to the source code of this file.

Functions

 

Function Documentation

ts_lexize()

Datum ts_lexize ( PG_FUNCTION_ARGS  )

Definition at line 27 of file dict.c.

28{
29 Oid dictId = PG_GETARG_OID(0);
30 text *in = PG_GETARG_TEXT_PP(1);
31 ArrayType *a;
33 TSLexeme *res,
34 *ptr;
35 Datum *da;
36 DictSubState dstate = {false, false, NULL};
37
38 dict = lookup_ts_dictionary_cache(dictId);
39
44 PointerGetDatum(&dstate)));
45
46 if (dstate.getnext)
47 {
48 dstate.isend = true;
53 PointerGetDatum(&dstate)));
54 if (ptr != NULL)
55 res = ptr;
56 }
57
58 if (!res)
60
61 ptr = res;
62 while (ptr->lexeme)
63 ptr++;
64 da = (Datum *) palloc(sizeof(Datum) * (ptr - res));
65 ptr = res;
66 while (ptr->lexeme)
67 {
68 da[ptr - res] = CStringGetTextDatum(ptr->lexeme);
69 ptr++;
70 }
71
72 a = construct_array_builtin(da, ptr - res, TEXTOID);
73
74 ptr = res;
75 while (ptr->lexeme)
76 {
77 pfree(DatumGetPointer(da[ptr - res]));
78 pfree(ptr->lexeme);
79 ptr++;
80 }
81 pfree(res);
82 pfree(da);
83
85}
ArrayType * construct_array_builtin(Datum *elems, int nelems, Oid elmtype)
Definition: arrayfuncs.c:3382
#define CStringGetTextDatum(s)
Definition: builtins.h:97
#define PG_GETARG_OID(n)
Definition: fmgr.h:275
#define PG_GETARG_TEXT_PP(n)
Definition: fmgr.h:309
#define PG_RETURN_NULL()
Definition: fmgr.h:345
#define FunctionCall4(flinfo, arg1, arg2, arg3, arg4)
Definition: fmgr.h:706
#define PG_RETURN_POINTER(x)
Definition: fmgr.h:361
a
int a
Definition: isn.c:73
void pfree(void *pointer)
Definition: mcxt.c:1594
void * palloc(Size size)
Definition: mcxt.c:1365
static Datum PointerGetDatum(const void *X)
Definition: postgres.h:332
uint64_t Datum
Definition: postgres.h:70
static Pointer DatumGetPointer(Datum X)
Definition: postgres.h:322
static Datum Int32GetDatum(int32 X)
Definition: postgres.h:222
unsigned int Oid
Definition: postgres_ext.h:32
Definition: array.h:93
bool isend
Definition: ts_public.h:152
bool getnext
Definition: ts_public.h:154
FmgrInfo lexize
Definition: ts_cache.h:59
char * lexeme
Definition: ts_public.h:138
Definition: c.h:692
TSDictionaryCacheEntry * lookup_ts_dictionary_cache(Oid dictId)
Definition: ts_cache.c:208
static Size VARSIZE_ANY_EXHDR(const void *PTR)
Definition: varatt.h:472
static char * VARDATA_ANY(const void *PTR)
Definition: varatt.h:486

References a, construct_array_builtin(), CStringGetTextDatum, DatumGetPointer(), TSDictionaryCacheEntry::dictData, FunctionCall4, DictSubState::getnext, Int32GetDatum(), DictSubState::isend, TSLexeme::lexeme, TSDictionaryCacheEntry::lexize, lookup_ts_dictionary_cache(), palloc(), pfree(), PG_GETARG_OID, PG_GETARG_TEXT_PP, PG_RETURN_NULL, PG_RETURN_POINTER, PointerGetDatum(), VARDATA_ANY(), and VARSIZE_ANY_EXHDR().

AltStyle によって変換されたページ (->オリジナル) /