Dominique Devienne <ddevienne@xxxxxxxxx> writes: > On Tue, Jan 16, 2024 at 10:59 PM Tom Lane <tgl@xxxxxxxxxxxxx> wrote: >> The problem is that now you have a switch somewhere (whether a GUC >> or something else, still a switch) that fundamentally changes the >> transactional semantics seen by applications. Run an application >> in the wrong mode and you have a broken app. Worse, there is an >> awful lot of client-side code that now has to cope with both >> behaviors. We thought that would be okay ... well, it wasn't. >> It was a mess. It would be a bigger mess now if we were to try it >> again, because there would be even more broken client code. > OK. That speaks against making it the default for sure. > But what if the client-code explicitly opts-in to that mode/switch? It wasn't default in 7.3, either. The key point here is that "the client code" isn't monolithic: there are frequently 3 or 4 layers involved, all maintained by different sets of people. If any one of them chooses to flip the switch, all of them have to cope with the results (possibly without even having observed the change). Like I said, it was a mess. Perhaps we could have got away with changing this back around 1997. By the time we tried (7.3 was released in 2002), it was already too late because of the amount of client-side code that needed to change and couldn't change in a timely fashion. Twenty years later, that situation has to be many times worse. > Basically implicit-statement-level-rollback is the norm, AFAIK, and > PostgreSQL is the exception here. I'm well aware of that. It doesn't matter. regards, tom lane