Here's a curious thing that happens with this patch. If you have log_duration set so that parameters are logged during the bind phase, and then an error occurs during the execution phase but you don't have log_parameters_on_error set true, the second error will log the parameters nonetheless ... because they were saved in the ParamListInfo struct by the errdetail_params() call in the check_log_durations block during bind.
I'm not sure this is a terrible problem, but does anybody think we *not* save params->paramValuesStr across a log_duration when log_parameters_on_error is not set? (I think this is somewhat equivalent to the "was_logged" case in check_log_duration itself.) -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services