Thread: bad choice of the word in sentence
The following documentation comment has been logged on the website: Page: https://www.postgresql.org/docs/15/transaction-iso.html Description: https://www.postgresql.org/docs/current/transaction-iso.html#XACT-READ-COMMITTED Quote: "<...>When a transaction uses this isolation level, a SELECT query (without a FOR UPDATE/SHARE clause) sees only data committed before the query began; it never sees either uncommitted data or changes committed during query execution by concurrent transactions. <...>" "... changes committed during ..." Don't you think this is bad choice of the word, especially while speaking about "commiting transactions" in very same sentence? Wouldn't it be better to say something like <...> it never sees either uncommitted data or changes produced during query execution by concurrent transactions. <...> I mean, with read committed isolation level SELECT clearly can see changes from concurrent transactions, if these transactions COMMITED. In fact, you can read about that in few lines later: "<...>Also note that two successive SELECT commands can see different data, even though they are within a single transaction, if other transactions commit changes after the first SELECT starts and before the second SELECT starts. <...>" The sentences seem to contradict each other because of " it never sees ... changes committed during ..."
On Thu, Jun 22, 2023 at 06:38:37PM +0000, PG Doc comments form wrote: > The following documentation comment has been logged on the website: > > Page: https://www.postgresql.org/docs/15/transaction-iso.html > Description: > > https://www.postgresql.org/docs/current/transaction-iso.html#XACT-READ-COMMITTED > > Quote: > "<...>When a transaction uses this isolation level, a SELECT query (without > a FOR UPDATE/SHARE clause) sees only data committed before the query began; > it never sees either uncommitted data or changes committed during query > execution by concurrent transactions. <...>" > > "... changes committed during ..." > > Don't you think this is bad choice of the word, especially while speaking > about "commiting transactions" in very same sentence? > > Wouldn't it be better to say something like > <...> it never sees either uncommitted data or changes produced during query > execution by concurrent transactions. <...> No, the issue is only for committed transactions, not aborted ones. > I mean, with read committed isolation level SELECT clearly can see changes > from concurrent transactions, if these transactions COMMITED. No, it does not see any changes from concurrent transaction commits that happen after the query starts, which is the point of the sentence. > In fact, you can read about that in few lines later: > "<...>Also note that two successive SELECT commands can see different data, > even though they are within a single transaction, if other transactions > commit changes after the first SELECT starts and before the second SELECT > starts. <...>" > > The sentences seem to contradict each other because of " it never sees ... > changes committed during ..." -- Bruce Momjian <bruce@momjian.us> https://momjian.us EDB https://enterprisedb.com Only you can decide what is important to you.
Bruce Momjian <bruce@momjian.us> writes: > On Thu, Jun 22, 2023 at 06:38:37PM +0000, PG Doc comments form wrote: >> Quote: >> "<...>When a transaction uses this isolation level, a SELECT query (without >> a FOR UPDATE/SHARE clause) sees only data committed before the query began; >> it never sees either uncommitted data or changes committed during query >> execution by concurrent transactions. <...>" >> Don't you think this is bad choice of the word, especially while speaking >> about "commiting transactions" in very same sentence? > No, the issue is only for committed transactions, not aborted ones. I think this sentence is formally correct, but it is not very hard to misparse. Maybe a bit of re-ordering would help? Like ... it never sees either uncommitted data or changes committed by concurrent transactions during the query's execution. regards, tom lane
On Fri, Jun 23, 2023 at 09:16:39PM -0400, Tom Lane wrote: > Bruce Momjian <bruce@momjian.us> writes: > > On Thu, Jun 22, 2023 at 06:38:37PM +0000, PG Doc comments form wrote: > >> Quote: > >> "<...>When a transaction uses this isolation level, a SELECT query (without > >> a FOR UPDATE/SHARE clause) sees only data committed before the query began; > >> it never sees either uncommitted data or changes committed during query > >> execution by concurrent transactions. <...>" > > >> Don't you think this is bad choice of the word, especially while speaking > >> about "commiting transactions" in very same sentence? > > > No, the issue is only for committed transactions, not aborted ones. > > I think this sentence is formally correct, but it is not very hard to > misparse. Maybe a bit of re-ordering would help? Like > > ... it never sees either uncommitted data or changes committed by > concurrent transactions during the query's execution. Sure. -- Bruce Momjian <bruce@momjian.us> https://momjian.us EDB https://enterprisedb.com Only you can decide what is important to you.
Bruce Momjian <bruce@momjian.us> writes: > On Fri, Jun 23, 2023 at 09:16:39PM -0400, Tom Lane wrote: >> I think this sentence is formally correct, but it is not very hard to >> misparse. Maybe a bit of re-ordering would help? Like >> ... it never sees either uncommitted data or changes committed by >> concurrent transactions during the query's execution. > Sure. Done that way. regards, tom lane