meine letzten Experimente mit CTE ergaben, dass die Anwendung (zumindest bei PG) sehr sehr sehr eng gesteckt ist - insb. bei rekursiven CTE.
Recht “naiv” dachte ich zu Anfang das Denkbare - dass man in der CTE eine beliebige Query definieren kann - und bei der Rekursion diese halt irgendwo sich selbst referenzieren darf.
Doch Pustekuchen …
muss in einer (rekursiven) CTE ein UNION ALL verwendet werden …
darf die CTE selbst nicht in einer SUB-QUERY auftauchen
vermute ich weitere Einschränkungen denen ich wegen der Resignation nicht begegnet bin
also viel Spielraum - rekursive Probleme zu optimieren - bleibt da nicht.
Es hat mich ja schon gewundert, dass man ueberhaupt RECURSIVE angeben muss, damit PG bemerkt, dass es sich um ein rekursives CTE handelt.
Weiss zufaellig jemand ob dies in Zukunft flexibler werden wird?
FEHLER: recursive query “sub” does not have the form non-recursive-term UNION [ALL] recursive-term
LINE 1: with recursive sub as (
FEHLER: recursive reference to query “sub” must not appear within a subquery
LINE 7: where id_obj in (select id_obj from sub)
^
halt doch einfach mal die klappe wenn du keine ahnung hast!