mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-08-23 07:00:40 +02:00
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.
86 lines
2.0 KiB
SQL
86 lines
2.0 KiB
SQL
/* contrib/tablefunc/tablefunc--1.0.sql */
|
|
|
|
CREATE FUNCTION normal_rand(int4, float8, float8)
|
|
RETURNS setof float8
|
|
AS 'MODULE_PATHNAME','normal_rand'
|
|
LANGUAGE C VOLATILE STRICT;
|
|
|
|
-- the generic crosstab function:
|
|
CREATE FUNCTION crosstab(text)
|
|
RETURNS setof record
|
|
AS 'MODULE_PATHNAME','crosstab'
|
|
LANGUAGE C STABLE STRICT;
|
|
|
|
-- examples of building custom type-specific crosstab functions:
|
|
CREATE TYPE tablefunc_crosstab_2 AS
|
|
(
|
|
row_name TEXT,
|
|
category_1 TEXT,
|
|
category_2 TEXT
|
|
);
|
|
|
|
CREATE TYPE tablefunc_crosstab_3 AS
|
|
(
|
|
row_name TEXT,
|
|
category_1 TEXT,
|
|
category_2 TEXT,
|
|
category_3 TEXT
|
|
);
|
|
|
|
CREATE TYPE tablefunc_crosstab_4 AS
|
|
(
|
|
row_name TEXT,
|
|
category_1 TEXT,
|
|
category_2 TEXT,
|
|
category_3 TEXT,
|
|
category_4 TEXT
|
|
);
|
|
|
|
CREATE FUNCTION crosstab2(text)
|
|
RETURNS setof tablefunc_crosstab_2
|
|
AS 'MODULE_PATHNAME','crosstab'
|
|
LANGUAGE C STABLE STRICT;
|
|
|
|
CREATE FUNCTION crosstab3(text)
|
|
RETURNS setof tablefunc_crosstab_3
|
|
AS 'MODULE_PATHNAME','crosstab'
|
|
LANGUAGE C STABLE STRICT;
|
|
|
|
CREATE FUNCTION crosstab4(text)
|
|
RETURNS setof tablefunc_crosstab_4
|
|
AS 'MODULE_PATHNAME','crosstab'
|
|
LANGUAGE C STABLE STRICT;
|
|
|
|
-- obsolete:
|
|
CREATE FUNCTION crosstab(text,int)
|
|
RETURNS setof record
|
|
AS 'MODULE_PATHNAME','crosstab'
|
|
LANGUAGE C STABLE STRICT;
|
|
|
|
CREATE FUNCTION crosstab(text,text)
|
|
RETURNS setof record
|
|
AS 'MODULE_PATHNAME','crosstab_hash'
|
|
LANGUAGE C STABLE STRICT;
|
|
|
|
CREATE FUNCTION connectby(text,text,text,text,int,text)
|
|
RETURNS setof record
|
|
AS 'MODULE_PATHNAME','connectby_text'
|
|
LANGUAGE C STABLE STRICT;
|
|
|
|
CREATE FUNCTION connectby(text,text,text,text,int)
|
|
RETURNS setof record
|
|
AS 'MODULE_PATHNAME','connectby_text'
|
|
LANGUAGE C STABLE STRICT;
|
|
|
|
-- These 2 take the name of a field to ORDER BY as 4th arg (for sorting siblings)
|
|
|
|
CREATE FUNCTION connectby(text,text,text,text,text,int,text)
|
|
RETURNS setof record
|
|
AS 'MODULE_PATHNAME','connectby_text_serial'
|
|
LANGUAGE C STABLE STRICT;
|
|
|
|
CREATE FUNCTION connectby(text,text,text,text,text,int)
|
|
RETURNS setof record
|
|
AS 'MODULE_PATHNAME','connectby_text_serial'
|
|
LANGUAGE C STABLE STRICT;
|