mirror of
https://github.com/postgres/postgres.git
synced 2025-11-28 11:44:57 +03:00
Have crosstab variants treat NULL rowid as a category in its own right,
per suggestion from Tom Lane. This fixes crash-bug reported by Stefan Schwarzer.
This commit is contained in:
@@ -23,42 +23,48 @@ SELECT * FROM crosstab2('SELECT rowid, attribute, val FROM ct where rowclass = '
|
||||
----------+------------+------------
|
||||
test1 | val2 | val3
|
||||
test2 | val6 | val7
|
||||
(2 rows)
|
||||
| val10 | val11
|
||||
(3 rows)
|
||||
|
||||
SELECT * FROM crosstab3('SELECT rowid, attribute, val 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)
|
||||
| val10 | val11 |
|
||||
(3 rows)
|
||||
|
||||
SELECT * FROM crosstab4('SELECT rowid, attribute, val 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)
|
||||
| val10 | val11 | |
|
||||
(3 rows)
|
||||
|
||||
SELECT * FROM crosstab2('SELECT rowid, attribute, val FROM ct where rowclass = ''group1'' ORDER BY 1,2;');
|
||||
row_name | category_1 | category_2
|
||||
----------+------------+------------
|
||||
test1 | val1 | val2
|
||||
test2 | val5 | val6
|
||||
(2 rows)
|
||||
| val9 | val10
|
||||
(3 rows)
|
||||
|
||||
SELECT * FROM crosstab3('SELECT rowid, attribute, val 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)
|
||||
| val9 | val10 | val11
|
||||
(3 rows)
|
||||
|
||||
SELECT * FROM crosstab4('SELECT rowid, attribute, val 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)
|
||||
| val9 | val10 | val11 | val12
|
||||
(3 rows)
|
||||
|
||||
SELECT * FROM crosstab2('SELECT rowid, attribute, val FROM ct where rowclass = ''group2'' and (attribute = ''att1'' or attribute = ''att2'') ORDER BY 1,2;');
|
||||
row_name | category_1 | category_2
|
||||
@@ -103,25 +109,28 @@ SELECT * FROM crosstab4('SELECT rowid, attribute, val FROM ct where rowclass = '
|
||||
(2 rows)
|
||||
|
||||
SELECT * FROM crosstab('SELECT rowid, attribute, val FROM ct where rowclass = ''group1'' ORDER BY 1,2;', 2) AS c(rowid text, att1 text, att2 text);
|
||||
rowid | att1 | att2
|
||||
-------+------+------
|
||||
rowid | att1 | att2
|
||||
-------+------+-------
|
||||
test1 | val1 | val2
|
||||
test2 | val5 | val6
|
||||
(2 rows)
|
||||
| val9 | val10
|
||||
(3 rows)
|
||||
|
||||
SELECT * FROM crosstab('SELECT rowid, attribute, val 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)
|
||||
rowid | att1 | att2 | att3
|
||||
-------+------+-------+-------
|
||||
test1 | val1 | val2 | val3
|
||||
test2 | val5 | val6 | val7
|
||||
| val9 | val10 | val11
|
||||
(3 rows)
|
||||
|
||||
SELECT * FROM crosstab('SELECT rowid, attribute, val 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
|
||||
test2 | val5 | val6 | val7 | val8
|
||||
(2 rows)
|
||||
rowid | att1 | att2 | att3 | att4
|
||||
-------+------+-------+-------+-------
|
||||
test1 | val1 | val2 | val3 | val4
|
||||
test2 | val5 | val6 | val7 | val8
|
||||
| val9 | val10 | val11 | val12
|
||||
(3 rows)
|
||||
|
||||
-- test connectby with text based hierarchy
|
||||
CREATE TABLE connectby_text(keyid text, parent_keyid text);
|
||||
|
||||
Reference in New Issue
Block a user