Subject: Confused by example in 13.2.2

From: Dmitry Igrishin <[email-masked]>
Date: Sun, 2 Aug 2015 22:02:29 +0300

Hello,

I'm confused a bit by example in 13.2.2:
"For example, even a read only transaction at this level may see a
control record updated to show that a batch has been completed but
not see one of the detail records which is logically part of the batch
because it read an earlier revision of the control record."
Could anyone clarify this example? And what is "control record"?
Thanks.

-- 
// Dmitry.

---

From: Kevin Grittner <[email-masked]>
Date: Mon, 3 Aug 2015 01:35:50 +0000 (UTC)

> I'm confused a bit by example in 13.2.2:

In current docs that is the "Repeatable Read Isolation Level"
section.

> Could anyone clarify this example? And what is "control record"?

Yeah, that sentence doesn't really have enough context. There was
discussion around this example in the Wiki:

https://wiki.postgresql.org/wiki/SSI#Deposit_Report

... and with that fresh in everyone's memory it seemed to make
sense at the time. Would this change make it clear to you?:

"For example, you might have a workload involving batches, with a
control table having a record to describe the state of each batch
and another table with the detail; a read only transaction at this
isolation level could see a control record updated to show that a
batch has been completed but not see one of the detail records
which is logically part of the batch because the transaction
inserting the detail read an earlier version of the control
record."

Hopefully the example from the Wiki makes it clear. There has been
some discussion about whether to link to the Wiki or bring an
example like that into the documentation; but we usually don't
link to Wiki pages and the example is somewhat long to include
in-line in the documentation. Any thoughts on the best solution to
that?

--
Kevin Grittner
EDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

-- 
Sent via pgsql-docs mailing list ([email-masked])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-docs

---

From: Dmitry Igrishin <[email-masked]>
Date: Mon, 3 Aug 2015 13:45:05 +0300

> https://wiki.postgresql.org/wiki/SSI#Deposit_Report

Thank you for the link!

> inserting the detail read an earlier version of the control
Yes, it's clearer, but the following yet more clear to me:
"For example, let you have table Receipt with batches and table Control
with a single record pointing to the batch being processed currently.
Let the transaction T1 inserts a records into Receipt. At about the same
time
transaction T2 updates the Control to start working with a new batch and
commits. Next, the read only transaction T3 at this isolation level could
see
an updated by T2 record from Control but not see some records from Receipt
which are part of the some batch, because the uncommitted transaction T1
has used earlier version of record from Control upon inserts."

> in-line in the documentation. Any thoughts on the best solution to
I've tried to adopt the example from Wiki above.

Thanks!

-- 
// Dmitry.

---

From: Alvaro Herrera <[email-masked]>
Date: Mon, 3 Aug 2015 15:37:29 -0300

> in-line in the documentation. Any thoughts on the best solution to

Yeah, the problem is that the wiki page may evolve and make the
"hardcoded" reference nonsensical.  I think a rewording similar to what
Dmitry proposed downthread is good: it illustrates the concept without
need for any external material.

-- 
Álvaro Herrera                http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services