From: | Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com> |
---|---|
To: | "jacktby(at)gmail(dot)com" <jacktby(at)gmail(dot)com>, pgsql-general <pgsql-general(at)lists(dot)postgresql(dot)org> |
Subject: | Re: what's hsitoric MVCC Snapshot? |
Date: | 2023-03-05 16:00:38 |
Message-ID: | f217a125-798f-ac2e-df83-349093cd47ff@aklaver.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On 3/5/23 07:58, Adrian Klaver wrote:
> On 3/5/23 06:49, jacktby(at)gmail(dot)com wrote:
>> Here are the comments in src/include/utils/snapshot.h.
>> /*
>> * For normal MVCC snapshot this contains the all xact IDs that are in
>> * progress, unless the snapshot was taken during recovery in which case
>> * it's empty. For historic MVCC snapshots, the meaning is inverted, i.e.
>> * it contains *committed* transactions between xmin and xmax.
>> *
>> * note: all ids in xip[] satisfy xmin <= xip[i] < xmax
>> */
>> TransactionId *xip;
>> I can't understand the historic MVCC snapshots? can you give me
>> a scenario
>> to describe this?
>
> From the same file:
>
>
> /*
> * A tuple is visible iff it follows the rules of SNAPSHOT_MVCC, but
> * supports being called in timetravel context (for decoding catalog
> * contents in the context of logical decoding).
> */
> SNAPSHOT_HISTORIC_MVCC,
Also:
typedef struct SnapshotData *Snapshot;
#define InvalidSnapshot ((Snapshot) NULL)
/*
* Struct representing all kind of possible snapshots.
*
* There are several different kinds of snapshots:
* * Normal MVCC snapshots
* * MVCC snapshots taken during recovery (in Hot-Standby mode)
* * Historic MVCC snapshots used during logical decoding
* * snapshots passed to HeapTupleSatisfiesDirty()
* * snapshots passed to HeapTupleSatisfiesNonVacuumable()
* * snapshots used for SatisfiesAny, Toast, Self where no members are
* accessed.
*
* TODO: It's probably a good idea to split this struct using a NodeTag
* similar to how parser and executor nodes are handled, with one type for
* each different kind of snapshot to avoid overloading the meaning of
* individual fields.
*/
>
>> ------------------------------------------------------------------------
>> jacktby(at)gmail(dot)com
>
--
Adrian Klaver
adrian(dot)klaver(at)aklaver(dot)com
From | Date | Subject | |
---|---|---|---|
Next Message | Louis Tian | 2023-03-06 00:18:14 | Row Level Security Policy Name in Error Message |
Previous Message | Adrian Klaver | 2023-03-05 15:58:47 | Re: what's hsitoric MVCC Snapshot? |