Re: multi-SQL command string aborts despite IF EXISTS - Mailing list pgsql-general

From Laurenz Albe
Subject Re: multi-SQL command string aborts despite IF EXISTS
Date
Msg-id ea7e30c91d85b10a72fb7cc05e2a6e68e5fbcf43.camel@cybertec.at
Whole thread Raw
In response to multi-SQL command string aborts despite IF EXISTS  (Karsten Hilbert <Karsten.Hilbert@gmx.net>)
Responses Re: multi-SQL command string aborts despite IF EXISTS
List pgsql-general
Karsten Hilbert wrote:
> the Orthanc DICOM server tries to create a trigram index using this code:
> 
>           db->Execute(
>             "CREATE EXTENSION IF NOT EXISTS pg_trgm; "
>             "CREATE INDEX DicomIdentifiersIndexValues2 ON DicomIdentifiers USING gin(value gin_trgm_ops);");
> 
> which results in this sequence of events inside PG11:
> 
>     2019-01-28 08:52:50 GMT ORT:  exec_execute_message, postgres.c:2011
>     2019-01-28 08:52:50 GMT LOG:  00000: Anweisung: CREATE EXTENSION IF NOT EXISTS pg_trgm; CREATE INDEX
DicomIdentifiersIndexValues2ON DicomIdentifiers USING gin(value gin_2019-01-28 08:52:50 GMT ORT:  exec_simple_query,
postgres.c:975
>     2019-01-28 08:52:50 GMT FEHLER:  42501: keine Berechtigung, um Erweiterung »pg_trgm« zu erzeugen
>     2019-01-28 08:52:50 GMT TIPP:  Nur Superuser können diese Erweiterung anlegen.
>     2019-01-28 08:52:50 GMT ORT:  execute_extension_script, extension.c:809
>     2019-01-28 08:52:50 GMT ANWEISUNG:  CREATE EXTENSION IF NOT EXISTS pg_trgm; CREATE INDEX
DicomIdentifiersIndexValues2ON DicomIdentifiers USING gin(value gin_trgm_ops);
 
>     2019-01-28 08:52:50 GMT LOG:  00000: Anweisung: ABORT
> 
> Apparently, the two SQL commands are being sent as one
> command string.
> 
> It is quite reasonable that the CREATE EXTENSION part fails
> because the connected user, indeed, does not have sufficient
> permissions, as it should be. However, the pg_trgm extension
> is pre-installed by the database superuser such that index
> creation should succeed.
> 
> Now, I would have thought that the "IF NOT EXISTS" part of
> the CREATE EXTENSION would have allowed the subsequent CREATE
> INDEX to succeed.
> 
> I am wrong ?

No, you are right.

The "pg_trgm" extension does *not* exist in the database, and that is your problem.

Perhaps you preinstalled the extension in the wrong database (postgres?).

Yours,
Laurenz Albe
-- 
Cybertec | https://www.cybertec-postgresql.com



pgsql-general by date:

Previous
From: Tom Lane
Date:
Subject: Re: error when creating logical replication slot
Next
From: Ron
Date:
Subject: Re: Regarding query execution for long time