Обсуждение: pgsql: pg_rewind: Allow writing recovery configuration

Поиск
Список
Период
Сортировка

pgsql: pg_rewind: Allow writing recovery configuration

От
Alvaro Herrera
Дата:
pg_rewind: Allow writing recovery configuration

This is provided with a new switch --write-recovery-conf and reuses the
pg_basebackup code.

Author: Paul Guo, Jimmy Yih, Ashwin Agrawal
Reviewed-by: Alexey Kondratov, Michaël Paquier, Álvaro Herrera
Discussion: https://postgr.es/m/CAEET0ZEffUkXc48pg2iqARQgGRYDiiVxDu+yYek_bTwJF+q=Uw@mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/927474ce1a2498ddb617c6113a88ca61fbba161d

Modified Files
--------------
doc/src/sgml/ref/pg_rewind.sgml | 13 +++++++++++++
src/bin/pg_rewind/Makefile      |  2 +-
src/bin/pg_rewind/libpq_fetch.c |  3 +--
src/bin/pg_rewind/pg_rewind.c   | 35 ++++++++++++++++++++++++++++++++++-
src/bin/pg_rewind/pg_rewind.h   |  9 +++++++--
5 files changed, 56 insertions(+), 6 deletions(-)


Re: pgsql: pg_rewind: Allow writing recovery configuration

От
Andres Freund
Дата:
Hi,

On 2019-09-30 17:11:09 +0000, Alvaro Herrera wrote:
> pg_rewind: Allow writing recovery configuration
> 
> This is provided with a new switch --write-recovery-conf and reuses the
> pg_basebackup code.
> 
> Author: Paul Guo, Jimmy Yih, Ashwin Agrawal
> Reviewed-by: Alexey Kondratov, Michaël Paquier, Álvaro Herrera
> Discussion: https://postgr.es/m/CAEET0ZEffUkXc48pg2iqARQgGRYDiiVxDu+yYek_bTwJF+q=Uw@mail.gmail.com

This currently fails on windows under mingw:
https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=jacana&dt=2019-09-30%2018%3A00%3A36

Sep 30 14:11:02 ccache x86_64-w64-mingw32-gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement
-Werror=vla-Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv
-fexcess-precision=standard-Wno-format-truncation -g -O2 pg_rewind.o parsexlog.o xlogreader.o datapagemap.o timeline.o
fetch.ofile_ops.o copy_fetch.o libpq_fetch.o filemap.o win32ver.o -L../../../src/port -L../../../src/common
-L../../../src/common-lpgcommon -L../../../src/port -lpgport -L../../../src/interfaces/libpq -lpq
-L../../../src/fe_utils-lpgfeutils  -Wl,--allow-multiple-definition -Wl,--disable-auto-import -L/c/prog/3p64/lib
-L/c/prog/3p64/lib-L/c/prog/3p64/openssl-win64/lib/VC -Wl,--as-needed   -lpgcommon -lpgport -lintl -lxslt -lxml2 -lz
-lws2_32-lm  -lws2_32 -o pg_rewind.exe
 
Sep 30 14:11:02 ../../../src/fe_utils/libpgfeutils.a(recovery_gen.o): In function `GenerateRecoveryConfig':
Sep 30 14:11:02 c:/mingw/msys/1.0/home/pgrunner/bf/root/HEAD/pgsql.build/../pgsql/src/fe_utils/recovery_gen.c:33:
undefinedreference to `createPQExpBuffer'
 
Sep 30 14:11:02 c:/mingw/msys/1.0/home/pgrunner/bf/root/HEAD/pgsql.build/../pgsql/src/fe_utils/recovery_gen.c:44:
undefinedreference to `PQserverVersion'
 

I assume the issue is that the specified link order is:
LDFLAGS_INTERNAL += $(libpq_pgport) -L$(top_builddir)/src/fe_utils -lpgfeutils
but pgfeutils introduces a dependency on symbols from libpq that weren't
needed at the time libpq was linked. Therefore they aren't included
inthe resulting library.

I'll reorder them.

Greetings,

Andres Freund



Re: pgsql: pg_rewind: Allow writing recovery configuration

От
Alvaro Herrera
Дата:
On 2019-Sep-30, Andres Freund wrote:

> This currently fails on windows under mingw:
> https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=jacana&dt=2019-09-30%2018%3A00%3A36
> 
> Sep 30 14:11:02 ccache x86_64-w64-mingw32-gcc -Wall -Wmissing-prototypes -Wpointer-arith
-Wdeclaration-after-statement-Werror=vla -Wendif-labels -Wmissing-format-attribute -Wformat-security
-fno-strict-aliasing-fwrapv -fexcess-precision=standard -Wno-format-truncation -g -O2 pg_rewind.o parsexlog.o
xlogreader.odatapagemap.o timeline.o fetch.o file_ops.o copy_fetch.o libpq_fetch.o filemap.o win32ver.o
-L../../../src/port-L../../../src/common -L../../../src/common -lpgcommon -L../../../src/port -lpgport
-L../../../src/interfaces/libpq-lpq -L../../../src/fe_utils -lpgfeutils  -Wl,--allow-multiple-definition
-Wl,--disable-auto-import-L/c/prog/3p64/lib  -L/c/prog/3p64/lib -L/c/prog/3p64/openssl-win64/lib/VC -Wl,--as-needed
-lpgcommon-lpgport -lintl -lxslt -lxml2 -lz -lws2_32 -lm  -lws2_32 -o pg_rewind.exe
 
> Sep 30 14:11:02 ../../../src/fe_utils/libpgfeutils.a(recovery_gen.o): In function `GenerateRecoveryConfig':
> Sep 30 14:11:02 c:/mingw/msys/1.0/home/pgrunner/bf/root/HEAD/pgsql.build/../pgsql/src/fe_utils/recovery_gen.c:33:
undefinedreference to `createPQExpBuffer'
 
> Sep 30 14:11:02 c:/mingw/msys/1.0/home/pgrunner/bf/root/HEAD/pgsql.build/../pgsql/src/fe_utils/recovery_gen.c:44:
undefinedreference to `PQserverVersion'
 
> 
> I assume the issue is that the specified link order is:
> LDFLAGS_INTERNAL += $(libpq_pgport) -L$(top_builddir)/src/fe_utils -lpgfeutils
> but pgfeutils introduces a dependency on symbols from libpq that weren't
> needed at the time libpq was linked. Therefore they aren't included
> inthe resulting library.

Hmm, that's weird but understandable.  Thanks for researching.

> I'll reorder them.

Thanks.

-- 
Álvaro Herrera                https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services



Re: pgsql: pg_rewind: Allow writing recovery configuration

От
Andres Freund
Дата:
Hi,

On 2019-09-30 16:27:27 -0300, Alvaro Herrera wrote:
> On 2019-Sep-30, Andres Freund wrote:
> > I'll reorder them.

Pushed.

Greetings,

Andres Freund