Thread: Problem calling setweight function from JDBC

Problem calling setweight function from JDBC

From
Viliam Ďurina
Date:
Hello,

I have a call to setweight function in a PreparedStatement with the following sql:

update my_table set a_text_data=setweight(to_tsvector(? :: regconfig, ?), ? :: char)

Later I set the parameters:
stmt.setString(1, language);
stmt.setString(2, textToIndex);
stmt.setString(3, weight);

But the call fails with:

"ERROR: function setweight(tsvector, character) does not exist"

I had very similar error with ts_vector where the cast to regconfig helped, but not in this case. Inspecting the
setweightfunction in system catalogs shows that parameters are tsvector and char. What am I doing wrong? 

Thanks in advance,
Viliam


Re: Problem calling setweight function from JDBC

From
Tom Lane
Date:
=?UTF-8?B?VmlsaWFtIMSOdXJpbmE=?= <viliam.durina@kios.sk> writes:
> I have a call to setweight function in a PreparedStatement with the following sql:

> update my_table set a_text_data=setweight(to_tsvector(? :: regconfig, ?), ? :: char)

Make that ::"char" not ::char ... the quotes matter here, because char
without quotes is a keyword.

            regards, tom lane

Re: Problem calling setweight function from JDBC

From
Viliam Ďurina
Date:
Thank you, this helped.
Viliam

On 24.3.2011 16:08, Tom Lane wrote:
> =?UTF-8?B?VmlsaWFtIMSOdXJpbmE=?=<viliam.durina@kios.sk>  writes:
>> I have a call to setweight function in a PreparedStatement with the following sql:
>
>> update my_table set a_text_data=setweight(to_tsvector(? :: regconfig, ?), ? :: char)
>
> Make that ::"char" not ::char ... the quotes matter here, because char
> without quotes is a keyword.
>
>             regards, tom lane