mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-01-06 15:24:56 +08:00
a265b7f70a
>>Sounds like all that's needed for your case. But to be complete, in >>addition to changing tablefunc.c we'd have to: >>1) come up with a new function call signature that makes sense and does >>not cause backward compatibility problems for other people >>2) make needed changes to tablefunc.sql.in >>3) adjust the README.tablefunc appropriately >>4) adjust the regression test for new functionality >>5) be sure we don't break any of the old cases >> >>If you want to submit a complete patch, it would be gratefully accepted >>-- for review at least ;-) > > Here's the patch, at least for steps 1-3 Nabil Sayegh Joe Conway
79 lines
1.9 KiB
MySQL
79 lines
1.9 KiB
MySQL
-- Adjust this setting to control where the objects get created.
|
|
SET search_path = public;
|
|
|
|
CREATE OR REPLACE FUNCTION normal_rand(int4, float8, float8, int4)
|
|
RETURNS setof float8
|
|
AS 'MODULE_PATHNAME','normal_rand'
|
|
LANGUAGE 'C' VOLATILE STRICT;
|
|
|
|
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 OR REPLACE FUNCTION crosstab2(text)
|
|
RETURNS setof tablefunc_crosstab_2
|
|
AS 'MODULE_PATHNAME','crosstab'
|
|
LANGUAGE 'C' STABLE STRICT;
|
|
|
|
CREATE OR REPLACE FUNCTION crosstab3(text)
|
|
RETURNS setof tablefunc_crosstab_3
|
|
AS 'MODULE_PATHNAME','crosstab'
|
|
LANGUAGE 'C' STABLE STRICT;
|
|
|
|
CREATE OR REPLACE FUNCTION crosstab4(text)
|
|
RETURNS setof tablefunc_crosstab_4
|
|
AS 'MODULE_PATHNAME','crosstab'
|
|
LANGUAGE 'C' STABLE STRICT;
|
|
|
|
CREATE OR REPLACE FUNCTION crosstab(text,int)
|
|
RETURNS setof record
|
|
AS 'MODULE_PATHNAME','crosstab'
|
|
LANGUAGE 'C' STABLE STRICT;
|
|
|
|
CREATE OR REPLACE FUNCTION crosstab(text,text)
|
|
RETURNS setof record
|
|
AS 'MODULE_PATHNAME','crosstab_hash'
|
|
LANGUAGE 'C' STABLE STRICT;
|
|
|
|
CREATE OR REPLACE FUNCTION connectby(text,text,text,text,int,text)
|
|
RETURNS setof record
|
|
AS 'MODULE_PATHNAME','connectby_text'
|
|
LANGUAGE 'C' STABLE STRICT;
|
|
|
|
CREATE OR REPLACE 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 OR REPLACE FUNCTION connectby(text,text,text,text,text,int,text)
|
|
RETURNS setof record
|
|
AS 'MODULE_PATHNAME','connectby_text_serial'
|
|
LANGUAGE 'C' STABLE STRICT;
|
|
|
|
CREATE OR REPLACE FUNCTION connectby(text,text,text,text,text,int)
|
|
RETURNS setof record
|
|
AS 'MODULE_PATHNAME','connectby_text_serial'
|
|
LANGUAGE 'C' STABLE STRICT;
|