Achilleas Mantzios <a.mantzios@xxxxxxxxxxxxxxxxxxxx> writes: > the trick is to have "application_name=" with no value. This causes the > server to not set application_name initially. No, that sets it to an empty string, while application_name='' sets it to two single quotes, according to the testing I did. In either case, that value will be reported to the client as the active value during connection start. Then the subsequent SET causes a new report, but (since v14) only if the value being set is different. > Please check the scenario > Client C1 connects to S1, sets application_name. BEGINS, COMMITS, the > server gets freed to server the next client. > Client C2 connects to the same S1, sets application_name, and gets no > report back. So it stays with application_name empty. Then this breaks > the application. > How could pgbouncer prevent this from happening ? pgbouncer would have to regurgitate the latest ParameterStatus messages to the new client (during its faked-up initial connection handshake) to ensure everything's synchronized correctly. If for some reason it's not doing that, that would be a pretty serious bug if you ask me, since clients might be relying on hearing the truth about settings like client_encoding. Since the whole point of pgbouncer is that the backend doesn't know a new client has been slotted in, it's not clear to me how or why the backend should solve this. regards, tom lane