3 #include "catalog/pg_type.h"
4 #include "tsearch/ts_type.h"
5 #include "utils/array.h"
7 PG_FUNCTION_INFO_V1(tsvector2textarray);
8 Datum tsvector2textarray(PG_FUNCTION_ARGS);
10 tsvector2textarray(PG_FUNCTION_ARGS)
12 TSVector ts = PG_GETARG_TSVECTOR(0);
16 WordEntry *wptr = ARRPTR(ts);
18 words = palloc( sizeof(Datum) * (ts->size+1) );
20 for(i=0; i<ts->size; i++)
22 text *t = palloc(VARHDRSZ + wptr->len);
24 SET_VARSIZE(t, VARHDRSZ + wptr->len);
25 memcpy( VARDATA(t), STRPTR(ts) + wptr->pos, wptr->len);
26 words[i] = PointerGetDatum(t);
31 a = construct_array( words, ts->size,
32 TEXTOID, -1, false, 'i' );
34 PG_FREE_IF_COPY(ts, 0);
36 PG_RETURN_ARRAYTYPE_P(a);