Who adds the "start transaction" and "commit" to the intended SQL statement in "autocommit" mode?

From: Bryn Llewellyn <bryn(at)yugabyte(dot)com>
To: pgsql-general list <pgsql-general(at)lists(dot)postgresql(dot)org>
Subject: Who adds the "start transaction" and "commit" to the intended SQL statement in "autocommit" mode?
Date: 2023-02-18 23:49:26
Message-ID: 954ABE4C-C17B-4269-ACAD-DE47E696515E@yugabyte.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

I’ve searched in vain for an account of how "autocommit" mode actually works. (I tried the built-in search feature within the PG docs. And I tried Google.)

It seems clear enough that turning "autocommit" mode "on" or "off" is done by using a client-env-specific command like "\set" is psql, or "SET" in ECPG (Embedded SQL in C) or "self.session.set_session(autocommit=...)" in Python. And that the mode is a property of the current session.

But it's not clear who actually implements the opening "start transaction" and the closing "commit" around every submitted SQL statement when autocommit is "on".

Is this done in client-side code (maybe implying three round trips per intended SQL statement)? Or is it done server-side?

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Julien Rouhaud 2023-02-19 00:35:27 Re: Who adds the "start transaction" and "commit" to the intended SQL statement in "autocommit" mode?
Previous Message Tatsuo Ishii 2023-02-18 23:16:42 Re: Does Postgres 14 have a query cache?