pgsql: Change ThisTimeLineID from a global variable to a local variable
От | Robert Haas |
---|---|
Тема | pgsql: Change ThisTimeLineID from a global variable to a local variable |
Дата | |
Msg-id | E1mj2VM-0000XK-Hn@gemulon.postgresql.org обсуждение исходный текст |
Ответы |
Re: pgsql: Change ThisTimeLineID from a global variable to a local variable
|
Список | pgsql-committers |
Change ThisTimeLineID from a global variable to a local variable. StartupXLOG() still has ThisTimeLineID as a local variable, but the remaining code in xlog.c now needs to the relevant TimeLineID by some other means. Mostly, this means that we now pass it as a function parameter to a bunch of functions where we didn't previously. However, a few cases require special handling: - In functions that might be called by outside callers who wouldn't necessarily know what timeline to specify, we get the timeline ID from shared memory. XLogCtl->ThisTimeLineID can be used in most cases since recovery is known to have completed by the time those functions are called. In xlog_redo(), we can use XLogCtl->replayEndTLI. - XLogFileClose() needs to know the TLI of the open logfile. Do that with a new global variable openLogTLI. While someone could argue that this is just trading one global variable for another, the new one has a far more narrow purposes and is referenced in just a few places. - read_backup_label() now returns the TLI that it obtains by parsing the backup_label file. Previously, ReadRecord() could be called to parse the checkpoint record without ThisTimeLineID having been initialized. Now, the timeline is passed down, and I didn't want to pass an uninitialized variable; this change lets us avoid that. The old coding didn't seem to have any practical consequences that we need to worry about, but this is cleaner. - In BootstrapXLOG(), it's just a constant. Patch by me, reviewed and tested by Michael Paquier, Amul Sul, and Álvaro Herrera. Discussion: https://postgr.es/m/CA+TgmobfAAqhfWa1kaFBBFvX+5CjM=7TE=n4r4Q1o2bjbGYBpA@mail.gmail.com Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/4a92a1c3d1c361ffb031ed05bf65b801241d7cdd Modified Files -------------- src/backend/access/transam/xlog.c | 340 +++++++++++++++++++++----------------- src/include/access/xlog.h | 2 +- 2 files changed, 192 insertions(+), 150 deletions(-)
В списке pgsql-committers по дате отправления: