bad choice of the word in sentence

Started by PG Bug reporting formalmost 3 years ago5 messagesdocs
Jump to latest
#1PG Bug reporting form
noreply@postgresql.org

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 ..."

#2Bruce Momjian
bruce@momjian.us
In reply to: PG Bug reporting form (#1)
Re: bad choice of the word in sentence

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.

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: Bruce Momjian (#2)
Re: bad choice of the word in sentence

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

#4Bruce Momjian
bruce@momjian.us
In reply to: Tom Lane (#3)
Re: bad choice of the word in sentence

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.

#5Tom Lane
tgl@sss.pgh.pa.us
In reply to: Bruce Momjian (#4)
Re: bad choice of the word in sentence

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