I wonder if the new field can be named current_err_query because that's what the setter implies.
current_query may give the impression that the field can store normal query (which doesn't cause exception).
The following code implies that only one of internalquery and current_query would be set.
yes, I think so current_query is not a good name too. Maybe query can be good enough - all in ErrorData is related to error
so the name of field can be query, and routine for setting errquery or set_errquery
+ if (estate->cur_error->internalquery) + exec_assign_c_string(estate, var, estate->cur_error->internalquery); + else + exec_assign_c_string(estate, var, estate->cur_error->current_query);