RETURNS setof float8
AS 'MODULE_PATHNAME','normal_rand' LANGUAGE 'c' VOLATILE STRICT;
-CREATE VIEW tablefunc_crosstab_2 AS
- SELECT
- ''::TEXT AS row_name,
- ''::TEXT AS category_1,
- ''::TEXT AS category_2;
-
-CREATE VIEW tablefunc_crosstab_3 AS
- SELECT
- ''::TEXT AS row_name,
- ''::TEXT AS category_1,
- ''::TEXT AS category_2,
- ''::TEXT AS category_3;
-
-CREATE VIEW tablefunc_crosstab_4 AS
- SELECT
- ''::TEXT AS row_name,
- ''::TEXT AS category_1,
- ''::TEXT AS category_2,
- ''::TEXT AS category_3,
- ''::TEXT AS category_4;
+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
CREATE OR REPLACE FUNCTION connectby(text,text,text,text,int)
RETURNS setof record
AS 'MODULE_PATHNAME','connectby_text' LANGUAGE 'c' STABLE STRICT;
+
+GRANT EXECUTE ON FUNCTION normal_rand(int4, float8, float8, int4) TO PUBLIC;
+GRANT EXECUTE ON FUNCTION crosstab2(text) TO PUBLIC;
+GRANT EXECUTE ON FUNCTION crosstab3(text) TO PUBLIC;
+GRANT EXECUTE ON FUNCTION crosstab4(text) TO PUBLIC;
+GRANT EXECUTE ON FUNCTION crosstab(text,int) TO PUBLIC;
+GRANT EXECUTE ON FUNCTION connectby(text,text,text,text,int,text) TO PUBLIC;
+GRANT EXECUTE ON FUNCTION connectby(text,text,text,text,int) TO PUBLIC;