Re: Abitity to identify the current iteration in a recursive SELECT (feature request)
sulfinu@gmail.com
From: sulfinu@gmail.com
To: Greg Sabino Mullane <htamfids@gmail.com>
Cc: pgsql-sql@lists.postgresql.org
Date: 2024-12-19T09:16:47Z
Lists: pgsql-sql
Please read among your lines. În mie., 18 dec. 2024 la 16:07, Greg Sabino Mullane <htamfids@gmail.com> a scris: > Do you mean something like "... WHERE pg_magic_iteration_number < 10"? > Looking at the source code, I don't see a trivial way to accomplish that. > Oh, I disagree, just told you that the iteration number is readily available in the field computed by the SEARCH BREADTH FIRST clause. > Maintaining the count as a column in your select is still the canonical > way. As someone who writes a lot of recursive CTEs (especially each > December!), I'm not sure how useful this feature would be, as the number of > loops is rarely the criteria for ending the iterations. > I never said I use the iteration number to end the process, I need it to pick the right table to be joined. If the iteration number was stored in a *working table* column, I would be forced to perform a LATERAL join, which recomputes the *same joined table* again and again for every row in the working table. > > Certainly the best solution is to use pl/pgsql, which gets you iterative > loops, lots of introspection and ways to break out of the loop, and even > true recursion. > Thought about it, of course, but I'm pretty sure that plain JOINs are quicker than linear search loops written in pl/pgsql (remember I need to intersect an dynamic number of arrays) .