mirror of
https://github.com/postgres/postgres.git
synced 2025-07-27 12:41:57 +03:00
Update /contrib for "autocommit TO 'on'".
Create objects in public schema. Make spacing/capitalization consistent. Remove transaction block use for object creation. Remove unneeded function GRANTs.
This commit is contained in:
@ -16,107 +16,107 @@ SELECT avg(normal_rand)::int FROM normal_rand(100, 250, 0.2, EXTRACT(SECONDS FRO
|
||||
--
|
||||
-- crosstab()
|
||||
--
|
||||
create table ct(id int, rowclass text, rowid text, attribute text, value text);
|
||||
CREATE TABLE ct(id int, rowclass text, rowid text, attribute text, value text);
|
||||
\copy ct from 'data/ct.data'
|
||||
select * from crosstab2('select rowid, attribute, value from ct where rowclass = ''group1'' and (attribute = ''att2'' or attribute = ''att3'') order by 1,2;');
|
||||
SELECT * FROM crosstab2('SELECT rowid, attribute, value FROM ct where rowclass = ''group1'' and (attribute = ''att2'' or attribute = ''att3'') ORDER BY 1,2;');
|
||||
row_name | category_1 | category_2
|
||||
----------+------------+------------
|
||||
test1 | val2 | val3
|
||||
test2 | val6 | val7
|
||||
(2 rows)
|
||||
|
||||
select * from crosstab3('select rowid, attribute, value from ct where rowclass = ''group1'' and (attribute = ''att2'' or attribute = ''att3'') order by 1,2;');
|
||||
SELECT * FROM crosstab3('SELECT rowid, attribute, value FROM ct where rowclass = ''group1'' and (attribute = ''att2'' or attribute = ''att3'') ORDER BY 1,2;');
|
||||
row_name | category_1 | category_2 | category_3
|
||||
----------+------------+------------+------------
|
||||
test1 | val2 | val3 |
|
||||
test2 | val6 | val7 |
|
||||
(2 rows)
|
||||
|
||||
select * from crosstab4('select rowid, attribute, value from ct where rowclass = ''group1'' and (attribute = ''att2'' or attribute = ''att3'') order by 1,2;');
|
||||
SELECT * FROM crosstab4('SELECT rowid, attribute, value FROM ct where rowclass = ''group1'' and (attribute = ''att2'' or attribute = ''att3'') ORDER BY 1,2;');
|
||||
row_name | category_1 | category_2 | category_3 | category_4
|
||||
----------+------------+------------+------------+------------
|
||||
test1 | val2 | val3 | |
|
||||
test2 | val6 | val7 | |
|
||||
(2 rows)
|
||||
|
||||
select * from crosstab2('select rowid, attribute, value from ct where rowclass = ''group1'' order by 1,2;');
|
||||
SELECT * FROM crosstab2('SELECT rowid, attribute, value FROM ct where rowclass = ''group1'' ORDER BY 1,2;');
|
||||
row_name | category_1 | category_2
|
||||
----------+------------+------------
|
||||
test1 | val1 | val2
|
||||
test2 | val5 | val6
|
||||
(2 rows)
|
||||
|
||||
select * from crosstab3('select rowid, attribute, value from ct where rowclass = ''group1'' order by 1,2;');
|
||||
SELECT * FROM crosstab3('SELECT rowid, attribute, value FROM ct where rowclass = ''group1'' ORDER BY 1,2;');
|
||||
row_name | category_1 | category_2 | category_3
|
||||
----------+------------+------------+------------
|
||||
test1 | val1 | val2 | val3
|
||||
test2 | val5 | val6 | val7
|
||||
(2 rows)
|
||||
|
||||
select * from crosstab4('select rowid, attribute, value from ct where rowclass = ''group1'' order by 1,2;');
|
||||
SELECT * FROM crosstab4('SELECT rowid, attribute, value FROM ct where rowclass = ''group1'' ORDER BY 1,2;');
|
||||
row_name | category_1 | category_2 | category_3 | category_4
|
||||
----------+------------+------------+------------+------------
|
||||
test1 | val1 | val2 | val3 | val4
|
||||
test2 | val5 | val6 | val7 | val8
|
||||
(2 rows)
|
||||
|
||||
select * from crosstab2('select rowid, attribute, value from ct where rowclass = ''group2'' and (attribute = ''att1'' or attribute = ''att2'') order by 1,2;');
|
||||
SELECT * FROM crosstab2('SELECT rowid, attribute, value FROM ct where rowclass = ''group2'' and (attribute = ''att1'' or attribute = ''att2'') ORDER BY 1,2;');
|
||||
row_name | category_1 | category_2
|
||||
----------+------------+------------
|
||||
test3 | val1 | val2
|
||||
test4 | val4 | val5
|
||||
(2 rows)
|
||||
|
||||
select * from crosstab3('select rowid, attribute, value from ct where rowclass = ''group2'' and (attribute = ''att1'' or attribute = ''att2'') order by 1,2;');
|
||||
SELECT * FROM crosstab3('SELECT rowid, attribute, value FROM ct where rowclass = ''group2'' and (attribute = ''att1'' or attribute = ''att2'') ORDER BY 1,2;');
|
||||
row_name | category_1 | category_2 | category_3
|
||||
----------+------------+------------+------------
|
||||
test3 | val1 | val2 |
|
||||
test4 | val4 | val5 |
|
||||
(2 rows)
|
||||
|
||||
select * from crosstab4('select rowid, attribute, value from ct where rowclass = ''group2'' and (attribute = ''att1'' or attribute = ''att2'') order by 1,2;');
|
||||
SELECT * FROM crosstab4('SELECT rowid, attribute, value FROM ct where rowclass = ''group2'' and (attribute = ''att1'' or attribute = ''att2'') ORDER BY 1,2;');
|
||||
row_name | category_1 | category_2 | category_3 | category_4
|
||||
----------+------------+------------+------------+------------
|
||||
test3 | val1 | val2 | |
|
||||
test4 | val4 | val5 | |
|
||||
(2 rows)
|
||||
|
||||
select * from crosstab2('select rowid, attribute, value from ct where rowclass = ''group2'' order by 1,2;');
|
||||
SELECT * FROM crosstab2('SELECT rowid, attribute, value FROM ct where rowclass = ''group2'' ORDER BY 1,2;');
|
||||
row_name | category_1 | category_2
|
||||
----------+------------+------------
|
||||
test3 | val1 | val2
|
||||
test4 | val4 | val5
|
||||
(2 rows)
|
||||
|
||||
select * from crosstab3('select rowid, attribute, value from ct where rowclass = ''group2'' order by 1,2;');
|
||||
SELECT * FROM crosstab3('SELECT rowid, attribute, value FROM ct where rowclass = ''group2'' ORDER BY 1,2;');
|
||||
row_name | category_1 | category_2 | category_3
|
||||
----------+------------+------------+------------
|
||||
test3 | val1 | val2 | val3
|
||||
test4 | val4 | val5 | val6
|
||||
(2 rows)
|
||||
|
||||
select * from crosstab4('select rowid, attribute, value from ct where rowclass = ''group2'' order by 1,2;');
|
||||
SELECT * FROM crosstab4('SELECT rowid, attribute, value FROM ct where rowclass = ''group2'' ORDER BY 1,2;');
|
||||
row_name | category_1 | category_2 | category_3 | category_4
|
||||
----------+------------+------------+------------+------------
|
||||
test3 | val1 | val2 | val3 |
|
||||
test4 | val4 | val5 | val6 |
|
||||
(2 rows)
|
||||
|
||||
select * from crosstab('select rowid, attribute, value from ct where rowclass = ''group1'' order by 1,2;', 2) as c(rowid text, att1 text, att2 text);
|
||||
SELECT * FROM crosstab('SELECT rowid, attribute, value FROM ct where rowclass = ''group1'' ORDER BY 1,2;', 2) AS c(rowid text, att1 text, att2 text);
|
||||
rowid | att1 | att2
|
||||
-------+------+------
|
||||
test1 | val1 | val2
|
||||
test2 | val5 | val6
|
||||
(2 rows)
|
||||
|
||||
select * from crosstab('select rowid, attribute, value from ct where rowclass = ''group1'' order by 1,2;', 3) as c(rowid text, att1 text, att2 text, att3 text);
|
||||
SELECT * FROM crosstab('SELECT rowid, attribute, value FROM ct where rowclass = ''group1'' ORDER BY 1,2;', 3) AS c(rowid text, att1 text, att2 text, att3 text);
|
||||
rowid | att1 | att2 | att3
|
||||
-------+------+------+------
|
||||
test1 | val1 | val2 | val3
|
||||
test2 | val5 | val6 | val7
|
||||
(2 rows)
|
||||
|
||||
select * from crosstab('select rowid, attribute, value from ct where rowclass = ''group1'' order by 1,2;', 4) as c(rowid text, att1 text, att2 text, att3 text, att4 text);
|
||||
SELECT * FROM crosstab('SELECT rowid, attribute, value FROM ct where rowclass = ''group1'' ORDER BY 1,2;', 4) AS c(rowid text, att1 text, att2 text, att3 text, att4 text);
|
||||
rowid | att1 | att2 | att3 | att4
|
||||
-------+------+------+------+------
|
||||
test1 | val1 | val2 | val3 | val4
|
||||
|
@ -3,6 +3,7 @@
|
||||
-- does not depend on contents of tablefunc.sql.
|
||||
--
|
||||
\set ECHO none
|
||||
SET autocommit TO 'on';
|
||||
\i tablefunc.sql
|
||||
\set ECHO all
|
||||
|
||||
@ -15,28 +16,28 @@ SELECT avg(normal_rand)::int FROM normal_rand(100, 250, 0.2, EXTRACT(SECONDS FRO
|
||||
--
|
||||
-- crosstab()
|
||||
--
|
||||
create table ct(id int, rowclass text, rowid text, attribute text, value text);
|
||||
CREATE TABLE ct(id int, rowclass text, rowid text, attribute text, value text);
|
||||
\copy ct from 'data/ct.data'
|
||||
|
||||
select * from crosstab2('select rowid, attribute, value from ct where rowclass = ''group1'' and (attribute = ''att2'' or attribute = ''att3'') order by 1,2;');
|
||||
select * from crosstab3('select rowid, attribute, value from ct where rowclass = ''group1'' and (attribute = ''att2'' or attribute = ''att3'') order by 1,2;');
|
||||
select * from crosstab4('select rowid, attribute, value from ct where rowclass = ''group1'' and (attribute = ''att2'' or attribute = ''att3'') order by 1,2;');
|
||||
SELECT * FROM crosstab2('SELECT rowid, attribute, value FROM ct where rowclass = ''group1'' and (attribute = ''att2'' or attribute = ''att3'') ORDER BY 1,2;');
|
||||
SELECT * FROM crosstab3('SELECT rowid, attribute, value FROM ct where rowclass = ''group1'' and (attribute = ''att2'' or attribute = ''att3'') ORDER BY 1,2;');
|
||||
SELECT * FROM crosstab4('SELECT rowid, attribute, value FROM ct where rowclass = ''group1'' and (attribute = ''att2'' or attribute = ''att3'') ORDER BY 1,2;');
|
||||
|
||||
select * from crosstab2('select rowid, attribute, value from ct where rowclass = ''group1'' order by 1,2;');
|
||||
select * from crosstab3('select rowid, attribute, value from ct where rowclass = ''group1'' order by 1,2;');
|
||||
select * from crosstab4('select rowid, attribute, value from ct where rowclass = ''group1'' order by 1,2;');
|
||||
SELECT * FROM crosstab2('SELECT rowid, attribute, value FROM ct where rowclass = ''group1'' ORDER BY 1,2;');
|
||||
SELECT * FROM crosstab3('SELECT rowid, attribute, value FROM ct where rowclass = ''group1'' ORDER BY 1,2;');
|
||||
SELECT * FROM crosstab4('SELECT rowid, attribute, value FROM ct where rowclass = ''group1'' ORDER BY 1,2;');
|
||||
|
||||
select * from crosstab2('select rowid, attribute, value from ct where rowclass = ''group2'' and (attribute = ''att1'' or attribute = ''att2'') order by 1,2;');
|
||||
select * from crosstab3('select rowid, attribute, value from ct where rowclass = ''group2'' and (attribute = ''att1'' or attribute = ''att2'') order by 1,2;');
|
||||
select * from crosstab4('select rowid, attribute, value from ct where rowclass = ''group2'' and (attribute = ''att1'' or attribute = ''att2'') order by 1,2;');
|
||||
SELECT * FROM crosstab2('SELECT rowid, attribute, value FROM ct where rowclass = ''group2'' and (attribute = ''att1'' or attribute = ''att2'') ORDER BY 1,2;');
|
||||
SELECT * FROM crosstab3('SELECT rowid, attribute, value FROM ct where rowclass = ''group2'' and (attribute = ''att1'' or attribute = ''att2'') ORDER BY 1,2;');
|
||||
SELECT * FROM crosstab4('SELECT rowid, attribute, value FROM ct where rowclass = ''group2'' and (attribute = ''att1'' or attribute = ''att2'') ORDER BY 1,2;');
|
||||
|
||||
select * from crosstab2('select rowid, attribute, value from ct where rowclass = ''group2'' order by 1,2;');
|
||||
select * from crosstab3('select rowid, attribute, value from ct where rowclass = ''group2'' order by 1,2;');
|
||||
select * from crosstab4('select rowid, attribute, value from ct where rowclass = ''group2'' order by 1,2;');
|
||||
SELECT * FROM crosstab2('SELECT rowid, attribute, value FROM ct where rowclass = ''group2'' ORDER BY 1,2;');
|
||||
SELECT * FROM crosstab3('SELECT rowid, attribute, value FROM ct where rowclass = ''group2'' ORDER BY 1,2;');
|
||||
SELECT * FROM crosstab4('SELECT rowid, attribute, value FROM ct where rowclass = ''group2'' ORDER BY 1,2;');
|
||||
|
||||
select * from crosstab('select rowid, attribute, value from ct where rowclass = ''group1'' order by 1,2;', 2) as c(rowid text, att1 text, att2 text);
|
||||
select * from crosstab('select rowid, attribute, value from ct where rowclass = ''group1'' order by 1,2;', 3) as c(rowid text, att1 text, att2 text, att3 text);
|
||||
select * from crosstab('select rowid, attribute, value from ct where rowclass = ''group1'' order by 1,2;', 4) as c(rowid text, att1 text, att2 text, att3 text, att4 text);
|
||||
SELECT * FROM crosstab('SELECT rowid, attribute, value FROM ct where rowclass = ''group1'' ORDER BY 1,2;', 2) AS c(rowid text, att1 text, att2 text);
|
||||
SELECT * FROM crosstab('SELECT rowid, attribute, value FROM ct where rowclass = ''group1'' ORDER BY 1,2;', 3) AS c(rowid text, att1 text, att2 text, att3 text);
|
||||
SELECT * FROM crosstab('SELECT rowid, attribute, value FROM ct where rowclass = ''group1'' ORDER BY 1,2;', 4) AS c(rowid text, att1 text, att2 text, att3 text, att4 text);
|
||||
|
||||
-- test connectby with text based hierarchy
|
||||
CREATE TABLE connectby_text(keyid text, parent_keyid text);
|
||||
|
@ -1,59 +1,63 @@
|
||||
-- Adjust this setting to control where the objects get created.
|
||||
SET search_path = public;
|
||||
|
||||
SET autocommit TO 'on';
|
||||
|
||||
CREATE OR REPLACE FUNCTION normal_rand(int4, float8, float8, int4)
|
||||
RETURNS setof float8
|
||||
AS 'MODULE_PATHNAME','normal_rand' LANGUAGE 'c' VOLATILE STRICT;
|
||||
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
|
||||
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
|
||||
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
|
||||
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;
|
||||
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;
|
||||
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;
|
||||
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;
|
||||
RETURNS setof record
|
||||
AS 'MODULE_PATHNAME','crosstab'
|
||||
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;
|
||||
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;
|
||||
|
||||
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;
|
||||
RETURNS setof record
|
||||
AS 'MODULE_PATHNAME','connectby_text'
|
||||
LANGUAGE 'C' STABLE STRICT;
|
||||
|
Reference in New Issue
Block a user