PostgreSQL中的CTE是递归的吗?

PostgreSQL中的CTE是递归的吗?,postgresql,recursion,common-table-expression,Postgresql,Recursion,Common Table Expression,我想知道postgresql中的递归查询,例如下面的查询是否是尾部递归的 WITH RECURSIVE category_tree(id, name, path) AS ( SELECT id, name, ARRAY[id] FROM categories WHERE parent_id IS NULL UNION ALL SELECT categories.id, categories.name, path || categories.id FROM category

我想知道postgresql中的递归查询,例如下面的查询是否是尾部递归的

WITH RECURSIVE category_tree(id, name, path) AS (
  SELECT id, name, ARRAY[id]
  FROM categories
  WHERE parent_id IS NULL
  UNION ALL
  SELECT categories.id, categories.name, path || categories.id
  FROM category_tree
  JOIN categories ON categories.parent_id=category_tree.id
  WHERE NOT categories.id = ANY(path)
)
SELECT * 
FROM category_tree 
ORDER BY path;

你到底想知道什么?术语递归背后的实际过程,如中所述,实际上是迭代。是的,我想你可以在某种意义上定义它…为什么?你问这个问题的根本原因是什么?你想知道关于停止行为的知识吗?