Hi all, i'm trying to combine the new Window functions in Fb3 with recursive CTEs to get a _defined_ ordering of the recursive child records in the result set.
Since we don't have "DEPTH FIRST BY <ordering_columns>" or "BREADTH FIRST BY <ordering_columns>" clauses in recursive CTEs yet, i'm trying to work around this by using the new RANK() function. (honestly, i didn't even know those DEPTH/BREADTH clauses exist in the SQL "standard" - thanks, Vlad! ;-) ) A simple example: CREATE TABLE T1 (ID INTEGER,ID_PARENT INTEGER,NAME CHAR(32)); INSERT INTO T1 (ID, ID_PARENT, NAME) VALUES (0, -1, 'Parent'); INSERT INTO T1 (ID, ID_PARENT, NAME) VALUES (1, 0, 'Child2'); INSERT INTO T1 (ID, ID_PARENT, NAME) VALUES (2, 0, 'Child1'); The target: a recursive CTE that will return Parent - Child1 - Child2 and not Parent - Child2 - Child1 (or anything else, in different order). The following CTE would get me started, i thought... with recursive rcte as( select id,id_parent,name,0 as lvl, 0 as rnk from t1 where id_parent<0 union all select ch.id,ch.id_parent,ch.name,pa.lvl+1, rank() over(partition by ch.id_parent order by ch.name) from t1 ch join rcte pa on (ch.id_parent=pa.id)) select * from rcte ...but it leads to an endless loop/recursion (using latest Fb3 beta) :-( Options: a) [ ] file it as a bug - this _should_ work! b) [ ] window functions are not supposed to work in the "child select" part of recursive CTEs (they work fine in the "anchor" query, though - but that only gets executed once...) c) [ ] wait until "DEPTH|BREADTH FIRST BY <col>" is implemented d) [ ] you're doing it all wrong, try this instead: (...) e) [ ] (...) Your opinion, a) .. e) ? (i'm VERY interested in the "(...)" part of option d) as well as everything in option e) :-) ) cheers, Frank ------------------------------------------------------------------------------ All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity, and more. Splunk takes this data and makes sense of it. IT sense. And common sense. http://p.sf.net/sfu/splunk-novd2d Firebird-Devel mailing list, web interface at https://lists.sourceforge.net/lists/listinfo/firebird-devel