hot standby - merged up to CVS HEAD

From: Robert Haas <robertmhaas(at)gmail(dot)com>
To: pgsql-hackers(at)postgresql(dot)org
Subject: hot standby - merged up to CVS HEAD
Date: 2009-07-15 01:12:16
Message-ID: 603c8f070907141812i4e6e8762s826d9b39e34e45a9@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

For reasons that can only be described as masochistic, I took it upon
myself to merge the Hot Standby patch up to CVS HEAD during my
vacation last week. Here's what I did:

1. Downloaded norecoveryprocs-1.patch from
http://archives.postgresql.org/message-id/49A64D73.6090302@enterprisedb.com
2. Found the commit in my git clone to which it applied (for some
reason, I wasn't able to locate the commit mentioned in Heiki's git
diff output).
3. Incrementally merged in the changes from my master branch,
resolving conflicts as I went.
4. Fixed all the whitespace errors about which git diff --check
complained (there were many of these).
5. Made a quick copy-editing pass over the docs and fixed a few
obvious errors (stray words, missing punctuation).
6. Went through the comments and replaced a few replaced references to
8.4 with references to 8.5 where appropriate.
7. Published it here:
http://git.postgresql.org/gitweb?p=postgresql-rhaas.git;a=shortlog;h=refs/heads/hs

I have tested that this version of the patch:

1. Compiles and passes regression tests.
2. Works for the simplest possible test cases (select * from table on
standby, insert one row on master, checkpoint, select * from table on
standby again).

I don't expect this to be reviewed for CommitFest 2009-07. For one
thing, I'm submitting it an hour-plus after the deadline; for another
thing, it needs a lot more testing than the above; for a third thing,
I haven't addressed any of the substantive issues with the patch that
Heikki mentioned here:

http://archives.postgresql.org/message-id/4A4DBF8F.8040007@enterprisedb.com

I would have liked to reach some of those issues, but I ran out of
time, and I don't understand the history of the development of this
patch well enough to separate the "crud" to which Heikki refers from
the non-crud (yet, anyway). However, I'm hopeful that the work I've
done so far will be helpful to someone else in taking this forward,
and I thought it made sense to publish this now, before turning my
full attention to the CommitFest, in case someone else was
contemplating doing something similar.

A few other comments based on a preliminary reading of this patch:

- pg_last_recovered_xact_timestamp is documented to return "a default
value" when recovery is not in progress; the default value seems to be
2000-01-01 00:00:00 UTC, but the actual displayed value depends on the
time zone. I think this is bogus; it should return NULL instead of
this "default value".
- Why do some of the functions in xlog.c have apparently totally
superfluous inner blocks?
- The documentation states that the fact that a pause request made
while waiting for a WAL file does not take effect until that WAL file
arrives, and that this is not a bug. Why not?
- It appears that this code has been added (almost, but not quite,
verbatim) to the top of most (but I think not quite all) of the *_redo
functions. Can/should this be centralized in StartupXLOG where
rm_redo is invoked?
- ProcArrayRemove() contains a commented-out hunk that should
presumably go away, unless of course it shouldn't be commented out.
- ProcArrayInitRecoveryEnvironment() does nothing except call
PublishStartupProcessInformation(), and therefore seems quite
unnecessary.

...Robert

Attachment Content-Type Size
hs.patch text/x-diff 263.8 KB

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Robert Haas 2009-07-15 01:14:13 Re: CommitFest 2009-07 is Now Closed
Previous Message Tatsuo Ishii 2009-07-15 00:55:35 Re: CommitFest 2009-07 is Now Closed