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:
@ -3,68 +3,68 @@
|
||||
--SQL for XML parser
|
||||
|
||||
-- deprecated old name for xml_is_well_formed
|
||||
CREATE OR REPLACE FUNCTION xml_valid(text) RETURNS bool
|
||||
CREATE FUNCTION xml_valid(text) RETURNS bool
|
||||
AS 'xml_is_well_formed'
|
||||
LANGUAGE INTERNAL STRICT STABLE;
|
||||
|
||||
CREATE OR REPLACE FUNCTION xml_encode_special_chars(text) RETURNS text
|
||||
CREATE FUNCTION xml_encode_special_chars(text) RETURNS text
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE C STRICT IMMUTABLE;
|
||||
|
||||
CREATE OR REPLACE FUNCTION xpath_string(text,text) RETURNS text
|
||||
CREATE FUNCTION xpath_string(text,text) RETURNS text
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE C STRICT IMMUTABLE;
|
||||
|
||||
CREATE OR REPLACE FUNCTION xpath_nodeset(text,text,text,text) RETURNS text
|
||||
CREATE FUNCTION xpath_nodeset(text,text,text,text) RETURNS text
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE C STRICT IMMUTABLE;
|
||||
|
||||
CREATE OR REPLACE FUNCTION xpath_number(text,text) RETURNS float4
|
||||
CREATE FUNCTION xpath_number(text,text) RETURNS float4
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE C STRICT IMMUTABLE;
|
||||
|
||||
CREATE OR REPLACE FUNCTION xpath_bool(text,text) RETURNS boolean
|
||||
CREATE FUNCTION xpath_bool(text,text) RETURNS boolean
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE C STRICT IMMUTABLE;
|
||||
|
||||
-- List function
|
||||
|
||||
CREATE OR REPLACE FUNCTION xpath_list(text,text,text) RETURNS text
|
||||
CREATE FUNCTION xpath_list(text,text,text) RETURNS text
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE C STRICT IMMUTABLE;
|
||||
|
||||
CREATE OR REPLACE FUNCTION xpath_list(text,text) RETURNS text
|
||||
CREATE FUNCTION xpath_list(text,text) RETURNS text
|
||||
AS 'SELECT xpath_list($1,$2,'','')'
|
||||
LANGUAGE SQL STRICT IMMUTABLE;
|
||||
|
||||
-- Wrapper functions for nodeset where no tags needed
|
||||
|
||||
CREATE OR REPLACE FUNCTION xpath_nodeset(text,text)
|
||||
CREATE FUNCTION xpath_nodeset(text,text)
|
||||
RETURNS text
|
||||
AS 'SELECT xpath_nodeset($1,$2,'''','''')'
|
||||
LANGUAGE SQL STRICT IMMUTABLE;
|
||||
|
||||
CREATE OR REPLACE FUNCTION xpath_nodeset(text,text,text)
|
||||
CREATE FUNCTION xpath_nodeset(text,text,text)
|
||||
RETURNS text
|
||||
AS 'SELECT xpath_nodeset($1,$2,'''',$3)'
|
||||
LANGUAGE SQL STRICT IMMUTABLE;
|
||||
|
||||
-- Table function
|
||||
|
||||
CREATE OR REPLACE FUNCTION xpath_table(text,text,text,text,text)
|
||||
CREATE FUNCTION xpath_table(text,text,text,text,text)
|
||||
RETURNS setof record
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE C STRICT STABLE;
|
||||
|
||||
-- XSLT functions
|
||||
|
||||
CREATE OR REPLACE FUNCTION xslt_process(text,text,text)
|
||||
CREATE FUNCTION xslt_process(text,text,text)
|
||||
RETURNS text
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE C STRICT VOLATILE;
|
||||
|
||||
-- the function checks for the correct argument count
|
||||
CREATE OR REPLACE FUNCTION xslt_process(text,text)
|
||||
CREATE FUNCTION xslt_process(text,text)
|
||||
RETURNS text
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE C STRICT IMMUTABLE;
|
||||
|
Reference in New Issue
Block a user