9.5: tsvector problem
I have never seen this problem before. It occurred while trying to import
a dump (done by 9.5 client of a 9.4 database) also.
Table definition:
-
CREATE TABLE source.annual
(
filename text,
gzipfile text,
id serial NOT NULL,
tsv tsvector,
ut character varying(19),
xml xml,
processed boolean,
CONSTRAINT annual_pkey PRIMARY KEY (id)
)
WITH (
OIDS=FALSE
);
CREATE INDEX xml_tsv_idx
ON source.annual
USING gin
(tsv);
CREATE TRIGGER tsvectorupdate_source_xml
BEFORE INSERT OR UPDATE
ON source.annual
FOR EACH ROW
EXECUTE PROCEDURE source.update_xml_tsv();
And the trigger function:
CREATE OR REPLACE FUNCTION source.update_xml_tsv()
RETURNS trigger AS
$BODY$
begin
new.tsv := to_tsvector('english', coalesce(new.xml,''));
return new;
end
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
When I try to insert a value into this table, I get:
==================================
ERROR: function to_tsvector(unknown, xml) does not exist
LINE 1: SELECT to_tsvector('english', coalesce(new.xml))
^
HINT: No function matches the given name and argument types. You might
need to add explicit type casts.
QUERY: SELECT to_tsvector('english', coalesce(new.xml))
CONTEXT: PL/pgSQL function source.update_xml_tsv() line 5 at assignment
********** Error **********
ERROR: function to_tsvector(unknown, xml) does not exist
SQL state: 42883
Hint: No function matches the given name and argument types. You might need
to add explicit type casts.
Context: PL/pgSQL function source.update_xml_tsv() line 5 at assignment
=============================================
But I can do
select to_tsvector('English', 'This is a problem')
without a problem.
What is causing this?
Regards
Johann
--
Because experiencing your loyal love is better than life itself,
my lips will praise you. (Psalm 63:3)
Hello Johann
There are two to_tsvector functions:
charles@charles.[local]=# \df to_tsvector
List of functions
Schema | Name | Result data type | Argument data types |
Type
------------+-------------+------------------+---------------------+--------
pg_catalog | to_tsvector | tsvector | regconfig, text | normal
pg_catalog | to_tsvector | tsvector | text | normal
(2 rows)
I think that you may try casting the result of coalesce() to TEXT.
Bye
Charles
On 04/26/2016 03:25 PM, Johann Spies wrote:
I have never seen this problem before. It occurred while trying to
import a dump (done by 9.5 client of a 9.4 database) also.Table definition:
-
CREATE TABLE source.annual
(
filename text,
gzipfile text,
id serial NOT NULL,
tsv tsvector,
ut character varying(19),
xml xml,
processed boolean,
CONSTRAINT annual_pkey PRIMARY KEY (id)
)
WITH (
OIDS=FALSE
);
CREATE INDEX xml_tsv_idx
ON source.annual
USING gin
(tsv);CREATE TRIGGER tsvectorupdate_source_xml
BEFORE INSERT OR UPDATE
ON source.annual
FOR EACH ROW
EXECUTE PROCEDURE source.update_xml_tsv();And the trigger function:
CREATE OR REPLACE FUNCTION source.update_xml_tsv()
RETURNS trigger AS
$BODY$begin
new.tsv := to_tsvector('english', coalesce(new.xml,''));
return new;
end
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;When I try to insert a value into this table, I get:
==================================
ERROR: function to_tsvector(unknown, xml) does not exist
LINE 1: SELECT to_tsvector('english', coalesce(new.xml))
^
HINT: No function matches the given name and argument types. You might
need to add explicit type casts.
QUERY: SELECT to_tsvector('english', coalesce(new.xml))
CONTEXT: PL/pgSQL function source.update_xml_tsv() line 5 at assignment********** Error **********
ERROR: function to_tsvector(unknown, xml) does not exist
SQL state: 42883
Hint: No function matches the given name and argument types. You might
need to add explicit type casts.
Context: PL/pgSQL function source.update_xml_tsv() line 5 at assignment
=============================================But I can do
select to_tsvector('English', 'This is a problem')
without a problem.
What is causing this?
Regards
Johann--
Because experiencing your loyal love is better than life itself,
my lips will praise you. (Psalm 63:3)
--
----------------------------
Swiss PostgreSQL Users Group
c/o Charles Clavadetscher
Motorenstrasse 18
CH - 8005 Zürich
--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general
On 26 April 2016 at 15:35, Charles Clavadetscher <clavadetscher@swisspug.org
wrote:
Hello Johann
There are two to_tsvector functions:
charles@charles.[local]=# \df to_tsvector
List of functions
Schema | Name | Result data type | Argument data types | Type------------+-------------+------------------+---------------------+--------
pg_catalog | to_tsvector | tsvector | regconfig, text | normal
pg_catalog | to_tsvector | tsvector | text | normal
(2 rows)I think that you may try casting the result of coalesce() to TEXT.
Thanks Charles. That solved it. Strange that this was not necessary in
9.4 though.
Regards.
Johann
--
Because experiencing your loyal love is better than life itself,
my lips will praise you. (Psalm 63:3)