We are trying to run this code in Postgres 18.6:
CREATE EXTENSION IF NOT EXISTS pgcrypto WITH SCHEMA pg_catalog CASCADE;

and getting the error
postgres=# CREATE EXTENSION IF NOT EXISTS pgcrypto WITH SCHEMA pg_catalog 
CASCADE;
ERROR:  function "gen_random_uuid" already exists with same argument types
CONTEXT:  SQL statement "CREATE FUNCTION gen_random_uuid()
RETURNS uuid
AS '$libdir/pgcrypto', 'pg_random_uuid'
LANGUAGE C VOLATILE PARALLEL SAFE"
extension script file "pgcrypto--1.3.sql", near line 66

That's because pgcrypto-1.3.sql has the following 4 lines starting at line 66:
CREATE FUNCTION gen_random_uuid()
RETURNS uuid
AS 'MODULE_PATHNAME', 'pg_random_uuid'
LANGUAGE C VOLATILE PARALLEL SAFE;

which try to create the gen_random_uuid() function but since it already exists 
it throws an error.

1)  Should pgcrytpo-1.3.sql be trying to create gen_random_uuid() if/when it 
already exists?


The pgcrypto.control file contains:
# pgcrypto extension
comment = 'cryptographic functions'
default_version = '1.4'
module_pathname = '$libdir/pgcrypto'
relocatable = true
trusted = true

2) given what's in pgcrypto.control should there be a pgcrypto-1.4.sql file?


NOTE:  If I comment lines 66-69 in pgcrypto-1.3.sql the
CREATE EXTENSION IF NOT EXISTS pgcrypto WITH SCHEMA pg_catalog CASCADE;
code completes successfully.

I'm hesitant to alter pgcrypto-1.3.sql.   Thoughts?

Thanks, Mark

Reply via email to