Couple of questions: 1. Why does Postgres not throw a parsing error during sqlPrepare for this statement vs at sqlExecute
with t_cte ( c1, ctr ) as ( select 1,0 from tversion union select 2,0 from tversion union all select c1, ctr + 1 from t_cte where c1=1 and ctr < 5 union all select c1, ctr + 1 from t_cte where c1=2 and ctr < 5) select c1, ctr from t_cte 2. Do you intend to remove the requirement to include the recursive keyword - as other vendors allow 3. Is it a documented restriction that you can only have one reference to the CTE .. see above example which fails while this modified version works. The former works in other vendors. with recursive t_cte ( c1, ctr ) as ( select 1,0 from tversion union select 2,0 from tversion union all select c1, ctr + 1 from t_cte where c1=1 and ctr < 5 ) select c1, ctr from t_cte