On Sat, 2019-08-03 at 19:14 -0400, Tom Lane wrote: > It seems to me that it'd be sufficient to do the annotation by > inserting wrapper functions, like the errparam() you suggest above. > If we just had errparam() choosing whether to return "..." instead of > its argument string, we'd have what we need, without messing with > the format language.
I'm having trouble getting the ergonomics to work out here so that it can generate both a redacted and an unredacted message. If errparam() is a normal argument to errmsg(), then errparam() will be evaluated first. Will it return the redacted version, the unredacted version, or a special type that holds both? If I try to use macros to force multiple evaluation (to get one redacted and one unredacted string), then it seems like that would happen for all arguments (not just errparam arguments), which would be bad. Suggestions? Regards, Jeff Davis