While reading this code, I noticed that function expr_allowed_in_node()
has a very strange API: it doesn't have any return convention at all
other than "if we didn't modify errdetail_str then all is good". I was
tempted to add an "Assert(*errdetail_msg == NULL)" at the start of it,
just to make sure that it is not called if a message is already set.
I think it would be much saner to inline the few lines of that function
in its sole caller, as in the attached.
--
Álvaro Herrera Breisgau, Deutschland — https://www.EnterpriseDB.com/
"E pur si muove" (Galileo Galilei)