mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-21 08:29:39 +08:00
029fac2264
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.
13 lines
393 B
SQL
13 lines
393 B
SQL
/* contrib/pgrowlocks/pgrowlocks--1.0.sql */
|
|
|
|
CREATE FUNCTION pgrowlocks(IN relname text,
|
|
OUT locked_row TID, -- row TID
|
|
OUT lock_type TEXT, -- lock type
|
|
OUT locker XID, -- locking XID
|
|
OUT multi bool, -- multi XID?
|
|
OUT xids xid[], -- multi XIDs
|
|
OUT pids INTEGER[]) -- locker's process id
|
|
RETURNS SETOF record
|
|
AS 'MODULE_PATHNAME', 'pgrowlocks'
|
|
LANGUAGE C STRICT;
|