> > > + /* > > + * Here, we cannot deparsing cast_expr directly, since > > + * transformTypeSafeCast may have folded it into a simple > > + * constant or NULL. Instead, we use source_expr and > > + * default_expr to reconstruct the CAST DEFAULT clause. > > + */ > > > > I am wondering how other places handle expression deparsing; do they > > hold the original expression along with the transformed expression? >
In my initial implementation of this, I modified CoalesceExpr to ensure that the default clause was evaluated if and only if the initial expression failed. > rebased, many variable names have been renamed, comments adjusted. The new SAFE option on user defined cast functions looks good to me. I am concerned that adding _safe overhead to all cast functions will be received poorly, but if it is poorly received then reverting isn't that hard. I'm going to re-review the whole patch set, but I wanted to say that I like the main points of the changes so far.
