XLOG_NO_TRAN and XLogRecord.xl_xid

Поиск
Список
Период
Сортировка
От Florian G. Pflug
Тема XLOG_NO_TRAN and XLogRecord.xl_xid
Дата
Msg-id 45DDB901.6080309@phlo.org
обсуждение исходный текст
Ответы Re: XLOG_NO_TRAN and XLogRecord.xl_xid
Список pgsql-hackers
Hi

After futher reading I fear I have to bother you with another question ;-)
There is a flag XLOG_NO_TRAN passed via the info parameter to XLogInsert.

Now, for example the following comment in clog.c
/* * Write a TRUNCATE xlog record * * We must flush the xlog record to disk before returning --- see notes * in
TruncateCLOG().* * Note: xlog record is marked as outside transaction control, since we * want it to be redone whether
theinvoking transaction commits or not. */
 
static void
WriteTruncateXlogRec(int pageno)
...

seems to imply that (some?) wal redoe records only actually get redone
if the transaction that caused them eventually comitted. But given the
way postgres MVCC works that doesn't make sense to me, and I also can't
find any code that would actually skip xlog entries.

On a related note - Looking at e.g. heap_xlog_insert, it seems that
the orginal page (before the crash), and the one reconstructed via
heap_xlog_insert are "only" functionally equivalent, but not the same
byte-wise? At least this is what doing
HeapTupleHeaderSetCmin(htup, FirstCommandId);
seems to imply - surely the original command id could have been higher, no?

greetings, Florian Pflug



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Markus Schiltknecht
Дата:
Сообщение: Re: SCMS question
Следующее
От: Heikki Linnakangas
Дата:
Сообщение: Re: XLOG_NO_TRAN and XLogRecord.xl_xid