Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1e3qzu-0004wC-VW for pgsql-admin@arkaria.postgresql.org; Sun, 15 Oct 2017 22:03:03 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1e3qzt-0001t9-CR for pgsql-admin@arkaria.postgresql.org; Sun, 15 Oct 2017 22:03:01 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1e3qxp-0006rf-QV for pgsql-admin@postgresql.org; Sun, 15 Oct 2017 22:00:54 +0000 Received: from colo1.denninger.net ([67.205.158.196]) by makus.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1e3qxi-0001Xq-8y for pgsql-admin@postgresql.org; Sun, 15 Oct 2017 22:00:52 +0000 Received: from denninger.net (ip68-1-57-197.pn.at.cox.net [68.1.57.197]) by colo1.denninger.net (Postfix) with ESMTP id 450B82734A for ; Sun, 15 Oct 2017 18:00:46 -0400 (EDT) Received: from [192.168.10.23] (D13.Denninger.Net [192.168.10.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by denninger.net (Postfix) with ESMTPSA id 619112C8CEE for ; Sun, 15 Oct 2017 17:00:40 -0500 (CDT) Subject: Re: Tsearch2 removal bit me - how to correct? To: pgsql-admin@postgresql.org References: <64d687df-3a87-0e4a-e954-f2f23c2581c9@denninger.net> <19742.1508082461@sss.pgh.pa.us> <25ef2548-e569-ba17-5902-5676f8fc62db@denninger.net> From: Karl Denninger Message-ID: Date: Sun, 15 Oct 2017 17:00:36 -0500 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 In-Reply-To: <25ef2548-e569-ba17-5902-5676f8fc62db@denninger.net> Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-512; boundary="------------ms010704010206010605020207" List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-admin Precedence: bulk Sender: pgsql-admin-owner@postgresql.org This is a cryptographically signed message in MIME format. --------------ms010704010206010605020207 Content-Type: multipart/alternative; boundary="------------B747943ADEC6D1D3778824D0" Content-Language: en-US This is a multi-part message in MIME format. --------------B747943ADEC6D1D3778824D0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On 10/15/2017 14:49, Karl Denninger wrote: > On 10/15/2017 10:47, Tom Lane wrote: >> Karl Denninger writes: >>> Attempting to migrate to 10.0 from 9.6, which has had "tsearch2" load= ed >>> for backward compatibility since "forever" (which I suspect is no lon= ger >>> really required as the capability is internal and has been for a long= >>> time) results in this blowup logged in loadable_libraries.txt: >>> could not load library "$libdir/tsearch2": ERROR:=C2=A0 could not acc= ess file >>> "$libdir/tsearch2": No such file or directory >>> So what's causing this to be requested on startup and how do I kill i= t?=C2=A0 >> Look for '$libdir/tsearch2' in the pg_proc.probin column of each >> DB in the installation ... >> >> regards, tom lane > That worked on one of my clusters, but on another I'm seeing entries > in pg_catalog, and can't remove them. > > pgsql=3D# \c fapforum > You are now connected to database "fapforum" as user "pgsql". > fapforum=3D# select proname from pg_proc where probin like '%tsearch2%'= ; > =C2=A0=C2=A0=C2=A0 proname > ---------------- > =C2=A0prsd_end > =C2=A0prsd_lextype > =C2=A0prsd_start > =C2=A0thesaurus_init > (4 rows) > > fapforum=3D# \df prsd_end; > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0 List of functions > =C2=A0=C2=A0 Schema=C2=A0=C2=A0 |=C2=A0=C2=A0 Name=C2=A0=C2=A0 | Result= data type | Argument data types |=C2=A0 Type > ------------+----------+------------------+---------------------+------= -- > =C2=A0pg_catalog | prsd_end | void=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | internal=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | normal > (1 row) > > fapforum=3D# drop function prsd_end(internal); > ERROR:=C2=A0 cannot drop function prsd_end(internal) because it is requ= ired > by the database system > > The others I can drop, but I wind up with these in each database... > any idea where the piece is that the original package stuffed in that > I need to get rid of so I can kill these? > This has also left me with an interesting other issue that is likely related. The removal of the functions of course necessitated the removal of the gin indices I was using.=C2=A0 Ok, I understand that.=C2=A0 But the 9.6 documentation says this is valid: SELECT to_tsvector('english','in the list of stop words'); But.... ticker=3D# select to_tsvector('english', 'in the list of stop words'); ERROR:=C2=A0 invalid input syntax for type oid: "english" LINE 1: select to_tsvector('english', 'in the list of stop words'); Interestingly enough if I don't specify the language.... ticker=3D# select to_tsvector('in the list of stop words'); =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 to_tsvector ---------------------------- =C2=A0'list':3 'stop':5 'word':6 (1 row) Which is correct.=C2=A0 So it appears the internal functions are both the= re and working. But, attempting to re-create the indices, omitting the language so it defaults, fails with a complaint that the operand function must be immutable. ticker=3D# create index idx_message on post using gin(to_tsvector( messag= e || ' ' || message2 || ' ' || message3)); ERROR:=C2=A0 functions in index expression must be marked IMMUTABLE That's not so good..... Yes, the default is specified as english in postgresql.conf default_text_search_config =3D 'pg_catalog.english' I suspect the "remnants" of the previous module are doing this.... any ideas? --=20 Karl Denninger karl@denninger.net /The Market Ticker/ /[S/MIME encrypted email preferred]/ --------------B747943ADEC6D1D3778824D0 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable



On 10/15/2017 14:49, Karl Denninger wrote:
On 10/15/2017 10:47, Tom Lane wrote:=
Karl Denninger <karl@denn=
inger.net> writes:
Attempting to migrate to 10.0 from 9.6, which ha=
s had "tsearch2" loaded
for backward compatibility since "forever" (which I suspect is no longer
really required as the capability is internal and has been for a long
time) results in this blowup logged in loadable_libraries.txt:
could not load library "$libdir/tsearch2": ERROR:=C2=A0 could not access =
file
"$libdir/tsearch2": No such file or directory
So what's causing this to be requested on startu=
p and how do I kill it?=C2=A0
Look for '$libdir/tsearch2' in the pg_proc.probin =
column of each
DB in the installation ...

			regards, tom lane
That worked on one of my clusters, but on another I'm seeing entries in pg_catalog, and can't remove them.

pgsql=3D# \c fapforum
You are now connected to database "fapforum" as user "pgsql".
fapforum=3D# select proname from pg_proc where probin like '%tsearch2%';
=C2=A0=C2=A0=C2=A0 proname
----------------
=C2=A0prsd_end
=C2=A0prsd_lextype
=C2=A0prsd_start
=C2=A0thesaurus_init
(4 rows)

fapforum=3D# \df prsd_end;
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 List of functions
=C2=A0=C2=A0 Schema=C2=A0=C2=A0 |=C2=A0=C2=A0 Name=C2=A0=C2=A0 | Re= sult data type | Argument data types |=C2=A0 Type
------------+----------+------------------+---------------------+--------=
=C2=A0pg_catalog | prsd_end | void=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | internal=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | normal
(1 row)

fapforum=3D# drop function prsd_end(internal);
ERROR:=C2=A0 cannot drop function prsd_end(internal) because it is required by the database system

The others I can drop, but I wind up with these in each database... any idea where the piece is that the original package stuffed in that I need to get rid of so I can kill these?

This has also left me with an interesting other issue that is likely related.

The removal of the functions of course necessitated the removal of the gin indices I was using.=C2=A0 Ok, I understand that.=C2=A0 But t= he 9.6 documentation says this is valid:

SELECT =
to_tsvector('english','in the list of stop words');
But....

ticker=3D# select to_tsvector('english', 'in the list of stop words')= ;
ERROR:=C2=A0 invalid input syntax for type oid: "english"
LINE 1: select to_tsvector('english', 'in the list of stop words');
Interestingly enough if I don't specify the language....
ticker=3D# select to_tsvector('in the list of stop words');
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 to_tsvector
----------------------------
=C2=A0'list':3 'stop':5 'word':6
(1 row)

Which is correct.=C2=A0 So it appears the internal functions are both= there and working.

But, attempting to re-create the indices, omitting the language so it defaults, fails with a complaint that the operand function must be immutable.

ticker=3D# create index idx_message on post using gin(to_tsvector( message || ' ' || message2 || ' ' || message3));
ERROR:=C2=A0 functions in index expression must be marked IMMUTABLE
That's not so good.....

Yes, the default is specified as english in postgresql.conf

default_text_search_config =3D 'pg_catalog.english'

I suspect the "remnants" of the previous module are doing this.... any ideas?

--
Karl Denninger
karl@denninger.net
The Market Ticker
[S/MIME encrypted email preferred]
--------------B747943ADEC6D1D3778824D0-- --------------ms010704010206010605020207 Content-Type: application/pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature 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 --------------ms010704010206010605020207--