Re: avoid recasting text to tsvector when calculating selectivity - Mailing list pgsql-hackers

From Jan Urbański
Subject Re: avoid recasting text to tsvector when calculating selectivity
Date
Msg-id 487EE822.1040205@students.mimuw.edu.pl
Whole thread Raw
In response to Re: avoid recasting text to tsvector when calculating selectivity  (Jan Urbański <j.urbanski@students.mimuw.edu.pl>)
List pgsql-hackers
Jan Urbański wrote:
> Tom Lane wrote:
>> Jan Urbański <j.urbanski@students.mimuw.edu.pl>
>> writes:
>>> I'm about to write a oprrest function for the @@ operator. Currently
>>> @@ handles multiple cases, like tsvector @@ tsquery, text @@ tsquery,
>>> tsquery @@ tsvector etc. The text @@ text case is for instance
>>> handled by calling to_tsvector and plainto_tsquery on the input
>>> arguments.
>>
>>> For a @@ restriction function, I need to have a tsquery and a
>>> tsvector, so in the text @@ text situation I'd end up calling
>>> plainto_tsquery during planning, which would consequently get called
>>> again during execution. Also, I'd need a not-so-elegant
>>> if-elsif-elsif sequence at the beginning of the function. Is this
>>> OK/unavoidable/easly avoided?
>>
>> I'm not following your point here.  Sure, there are multiple flavors of
>> @@, but why shouldn't they each have their own oprrest function?
>
> Because they'll all boil down to the same function. Suppose I have an
> oprrest function for tsvector @@ tsquery. An oprrest for text @@ text
> would just be:
> tv = DatumGetTSVector(DirectFunctionCall1(to_tsvector,
> PG_GETARG_DATUM(0)));
> tq = DatumGetTSQuery(DirectFunctionCall1(plainto_tsquery,
> PG_GETARG_DATUM(1)));
> res = DirectFunctionCall2(my_oprrest, TSVectorGetDatum(tv),
> TSQueryGetDatun(tq))
> ...
>
> I thought I might avoid having to call ts_tsvector and plainto_tsquery,
> because the arguments need to be transformed to tsvector and tsquery
> anyway during execution.

[thinks...]
OTOH, you often plan a query without executing it, so this doesn't make
sense. OK, please disregard that, I'm just beginning to see the depths
of my misunderstanding of the issue ;)

--
Jan Urbanski
GPG key ID: E583D7D2

ouden estin



pgsql-hackers by date:

Previous
From: Jan Urbański
Date:
Subject: Re: avoid recasting text to tsvector when calculating selectivity
Next
From: David Fetter
Date:
Subject: Re: introduction of WIP window function patch