mirror of
https://github.com/postgres/postgres.git
synced 2025-07-28 23:42:10 +03:00
Avoid use of CREATE OR REPLACE FUNCTION in extension installation files.
It was never terribly consistent to use OR REPLACE (because of the lack of comparable functionality for data types, operators, etc), and experimentation shows that it's now positively pernicious in the extension world. We really want a failure to occur if there are any conflicts, else it's unclear what the extension-ownership state of the conflicted object ought to be. Most of the time, CREATE EXTENSION will fail anyway because of conflicts on other object types, but an extension defining only functions can succeed, with bad results.
This commit is contained in:
@ -12,11 +12,11 @@ CREATE DOMAIN lo AS pg_catalog.oid;
|
||||
-- The other functions that formerly existed are not needed because
|
||||
-- the implicit casts between a domain and its underlying type handle them.
|
||||
--
|
||||
CREATE OR REPLACE FUNCTION lo_oid(lo) RETURNS pg_catalog.oid AS
|
||||
CREATE FUNCTION lo_oid(lo) RETURNS pg_catalog.oid AS
|
||||
'SELECT $1::pg_catalog.oid' LANGUAGE SQL STRICT IMMUTABLE;
|
||||
|
||||
-- This is used in triggers
|
||||
CREATE OR REPLACE FUNCTION lo_manage()
|
||||
CREATE FUNCTION lo_manage()
|
||||
RETURNS pg_catalog.trigger
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE C;
|
||||
|
Reference in New Issue
Block a user