Re: multi-SQL command string aborts despite IF EXISTS

From: Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at>
To: Karsten Hilbert <Karsten(dot)Hilbert(at)gmx(dot)net>, pgsql-general <pgsql-general(at)postgresql(dot)org>
Subject: Re: multi-SQL command string aborts despite IF EXISTS
Date: 2019-01-28 14:17:47
Message-ID: ea7e30c91d85b10a72fb7cc05e2a6e68e5fbcf43.camel@cybertec.at
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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 DicomIdentifiersIndexValues2 ON 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 DicomIdentifiersIndexValues2 ON 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

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Ron 2019-01-28 14:29:50 Re: Regarding query execution for long time
Previous Message Tom Lane 2019-01-28 14:15:28 Re: error when creating logical replication slot