mirror of
https://github.com/postgres/postgres.git
synced 2025-07-27 12:41:57 +03:00
> Am Son, 2003-06-22 um 02.09 schrieb Joe Conway:
>>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
This commit is contained in:
@ -197,9 +197,9 @@ ERROR: provided "categories" SQL must return 1 column of at least one row
|
||||
-- connectby
|
||||
--
|
||||
-- test connectby with text based hierarchy
|
||||
CREATE TABLE connectby_text(keyid text, parent_keyid text);
|
||||
CREATE TABLE connectby_text(keyid text, parent_keyid text, pos int);
|
||||
\copy connectby_text from 'data/connectby_text.data'
|
||||
-- with branch
|
||||
-- with branch, without orderby
|
||||
SELECT * FROM connectby('connectby_text', 'keyid', 'parent_keyid', 'row2', 0, '~') AS t(keyid text, parent_keyid text, level int, branch text);
|
||||
keyid | parent_keyid | level | branch
|
||||
-------+--------------+-------+---------------------
|
||||
@ -211,7 +211,7 @@ SELECT * FROM connectby('connectby_text', 'keyid', 'parent_keyid', 'row2', 0, '~
|
||||
row9 | row5 | 2 | row2~row5~row9
|
||||
(6 rows)
|
||||
|
||||
-- without branch
|
||||
-- without branch, without orderby
|
||||
SELECT * FROM connectby('connectby_text', 'keyid', 'parent_keyid', 'row2', 0) AS t(keyid text, parent_keyid text, level int);
|
||||
keyid | parent_keyid | level
|
||||
-------+--------------+-------
|
||||
@ -223,6 +223,30 @@ SELECT * FROM connectby('connectby_text', 'keyid', 'parent_keyid', 'row2', 0) AS
|
||||
row9 | row5 | 2
|
||||
(6 rows)
|
||||
|
||||
-- with branch, with orderby
|
||||
SELECT * FROM connectby('connectby_text', 'keyid', 'parent_keyid', 'pos', 'row2', 0, '~') AS t(keyid text, parent_keyid text, level int, branch text, pos int) ORDER BY t.pos;
|
||||
keyid | parent_keyid | level | branch | pos
|
||||
-------+--------------+-------+---------------------+-----
|
||||
row2 | | 0 | row2 | 1
|
||||
row5 | row2 | 1 | row2~row5 | 2
|
||||
row9 | row5 | 2 | row2~row5~row9 | 3
|
||||
row4 | row2 | 1 | row2~row4 | 4
|
||||
row6 | row4 | 2 | row2~row4~row6 | 5
|
||||
row8 | row6 | 3 | row2~row4~row6~row8 | 6
|
||||
(6 rows)
|
||||
|
||||
-- without branch, with orderby
|
||||
SELECT * FROM connectby('connectby_text', 'keyid', 'parent_keyid', 'pos', 'row2', 0) AS t(keyid text, parent_keyid text, level int, pos int) ORDER BY t.pos;
|
||||
keyid | parent_keyid | level | pos
|
||||
-------+--------------+-------+-----
|
||||
row2 | | 0 | 1
|
||||
row5 | row2 | 1 | 2
|
||||
row9 | row5 | 2 | 3
|
||||
row4 | row2 | 1 | 4
|
||||
row6 | row4 | 2 | 5
|
||||
row8 | row6 | 3 | 6
|
||||
(6 rows)
|
||||
|
||||
-- test connectby with int based hierarchy
|
||||
CREATE TABLE connectby_int(keyid int, parent_keyid int);
|
||||
\copy connectby_int from 'data/connectby_int.data'
|
||||
|
Reference in New Issue
Block a user