Re: Using HStore type in TSearch

From: Łukasz Dejneka <l(dot)dejneka(at)gmail(dot)com>
To: pgsql-novice(at)postgresql(dot)org
Subject: Re: Using HStore type in TSearch
Date: 2010-03-26 08:15:50
Message-ID: 4df5da451003260115va8d83d1l43da0367bcf60d88@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-novice

Ok, so I did this (modified the ts_match_vq function):
Datum.
ljd_test(PG_FUNCTION_ARGS).
{
//get arguments
HStore *hs = PG_GETARG_HS(0);.
TSQuery tq = PG_GETARG_TSQUERY(1);
TSQuery tq_in;
CHKVAL chkvalKeys;
bool res;

//check for empty values.
if (!hs->size || !tq->size)
{
PG_FREE_IF_COPY(hs, 0);
PG_FREE_IF_COPY(tq, 1);
PG_RETURN_BOOL(false);
}

//process TSQuery
tq_in = TSQueryGetDatum(tq);

//process HStore
//HEntry *ptr = ARRPTR(hs);
//char *words = STRPTR(hs);

chkvalKeys.arrb = ARRPTR(hs);
chkvalKeys.arre = chkvalKeys.arrb + hs->size;
chkvalKeys.values = STRPTR(hs);
chkvalKeys.operand = GETOPERAND(tq_in);

res = ljd_exec(
GETQUERY(tq_in),
&chkvalKeys,
true,
checkcondition_str
);

PG_FREE_IF_COPY(hs, 0);
PG_FREE_IF_COPY(tq, 1);
PG_RETURN_BOOL(res);
Now the problem is in the data passed to CHKVAL type (the "chkvalKeys.values
= STRPTR(hs);" line), in TSVector data is ltree (I think), but the HStore
STRPTR function returns a string. How could I convert the HStore values, so
they are compatible with checkcondition_str function located in
/postgresql-8.4.3/contrib/ltree ??

Thanks in advance.

Browse pgsql-novice by date

  From Date Subject
Next Message Zdravko Balorda 2010-03-26 10:25:13 Re: Table inheritance
Previous Message Tom Lane 2010-03-26 03:40:55 Re: Getting started