Hello,
I've spent a bunch of time looking at this series and here's my take on
the second one. (The testing patch is unchanged from Sami's). The
third patch (for PARAM_EXTERNs) should be a mostly trivial rebase on top
of these two.
I realized that the whole in_expr production in gram.y is pointless, and
the whole private struct that was added was unnecessary. A much simpler
solution is to remove in_expr, expand its use in a_expr to the two
possibilities, and with that we can remove the need for a new struct.
I also added a recursive call in IsSquashableExpression to itself. The
check for stack depth can be done without throwing an error. I tested
this by adding stack bloat in that function. I also renamed it to
IsSquashableConstant. This changes one of the tests, because a cast
sequence like 42::int::bigint::int is considered squashable.
Other than that, the changes are cosmetic.
Barring objections, I'll push this soon, then look at rebasing 0003 on
top, which I expect to be an easy job.
--
Álvaro Herrera PostgreSQL Developer — https://www.EnterpriseDB.com/