I am filing this issue in light of some oopsies we did in production, because it's not very obvious when a value is a CTE versus a subquery and that these look basically the same and can be easily mixed up. If this is combined with reusing the query in multiple places, e.g. let x = someQuery; y <- from x vs x <- with someQuery; y <- from x, it can be really easy to accidentally cause a multiplicative blowup of the size of the output query without noticing that it's a subquery instead of a CTE.
I am not sure what the solution to this is, but it's an API footgun.
cc @ellie-hg @parsonsmatt
I am filing this issue in light of some oopsies we did in production, because it's not very obvious when a value is a CTE versus a subquery and that these look basically the same and can be easily mixed up. If this is combined with reusing the query in multiple places, e.g.
let x = someQuery; y <- from xvsx <- with someQuery; y <- from x, it can be really easy to accidentally cause a multiplicative blowup of the size of the output query without noticing that it's a subquery instead of a CTE.I am not sure what the solution to this is, but it's an API footgun.
cc @ellie-hg @parsonsmatt