diff options
author | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2013-03-22 13:02:59 +0200 |
---|---|---|
committer | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2013-03-25 19:44:11 +0200 |
commit | d298b50a3b469c088bb40a4d36d38111b4cd574d (patch) | |
tree | bbb327e9d755e00abf0b74478a58e3f8667624b6 /src/bin/pg_basebackup/pg_receivexlog.c | |
parent | ea988ee8c8b191615e730f930bcde6144a598688 (diff) | |
download | postgresql-d298b50a3b469c088bb40a4d36d38111b4cd574d.tar.gz postgresql-d298b50a3b469c088bb40a4d36d38111b4cd574d.zip |
Make pg_basebackup work with pre-9.3 servers, and add server version check.
A new 'starttli' field was added to the response of BASE_BACKUP command.
Make pg_basebackup tolerate the case that it's missing, so that it still
works with older servers.
Add an explicit check for the server version, so that you get a nicer error
message if you try to use it with a pre-9.1 server.
The streaming protocol message format changed in 9.3, so -X stream still won't
work with pre-9.3 servers. I added a version check to ReceiveXLogStream()
earlier, but write that slightly differently, so that in 9.4, it will still
work with a 9.3 server. (In 9.4, the error message needs to be adjusted to
"9.3 or above", though). Also, if the version check fails, don't retry.
Diffstat (limited to 'src/bin/pg_basebackup/pg_receivexlog.c')
-rw-r--r-- | src/bin/pg_basebackup/pg_receivexlog.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/bin/pg_basebackup/pg_receivexlog.c b/src/bin/pg_basebackup/pg_receivexlog.c index e68f8ea7079..e4da799d1fd 100644 --- a/src/bin/pg_basebackup/pg_receivexlog.c +++ b/src/bin/pg_basebackup/pg_receivexlog.c @@ -229,6 +229,16 @@ StreamLog(void) /* Error message already written in GetConnection() */ return; + if (!CheckServerVersionForStreaming(conn)) + { + /* + * Error message already written in CheckServerVersionForStreaming(). + * There's no hope of recovering from a version mismatch, so don't + * retry. + */ + disconnect_and_exit(1); + } + /* * Run IDENTIFY_SYSTEM so we can get the timeline and current xlog * position. |