pg_rewrite icon indicating copy to clipboard operation
pg_rewrite copied to clipboard

PostgreSQL 17 support

Open devrimgunduz opened this issue 5 months ago • 3 comments

Hi,

I am getting these while compiling pg_rewrite 1.1.0 against PostgreSQL 17. Can you please take a look? Thanks! Devrim

gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wimplicit-fallthrough=3 -Wcast-function-type -Wshadow=compatible-local -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -Wno-format-truncation -Wno-stringop-truncation -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -fPIC -fvisibility=hidden -I. -I./ -I/usr/pgsql-17/include/server -I/usr/pgsql-17/include/internal  -D_GNU_SOURCE -I/usr/include/libxml2 -DWITH_GZFILEOP  -I/usr/include  -c -o pg_rewrite.o pg_rewrite.c
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wimplicit-fallthrough=3 -Wcast-function-type -Wshadow=compatible-local -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -Wno-format-truncation -Wno-stringop-truncation -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -fPIC -fvisibility=hidden -I. -I./ -I/usr/pgsql-17/include/server -I/usr/pgsql-17/include/internal  -D_GNU_SOURCE -I/usr/include/libxml2 -DWITH_GZFILEOP  -I/usr/include  -c -o concurrent.o concurrent.c
/usr/bin/clang -Wno-ignored-attributes -fno-strict-aliasing -fwrapv -fexcess-precision=standard -Wno-unused-command-line-argument -Wno-compound-token-split-by-macro -Wno-format-truncation -O2  -I. -I./ -I/usr/pgsql-17/include/server -I/usr/pgsql-17/include/internal  -D_GNU_SOURCE -I/usr/include/libxml2 -DWITH_GZFILEOP  -I/usr/include -flto=thin -emit-llvm -c -o pg_rewrite.bc pg_rewrite.c
/usr/bin/clang -Wno-ignored-attributes -fno-strict-aliasing -fwrapv -fexcess-precision=standard -Wno-unused-command-line-argument -Wno-compound-token-split-by-macro -Wno-format-truncation -O2  -I. -I./ -I/usr/pgsql-17/include/server -I/usr/pgsql-17/include/internal  -D_GNU_SOURCE -I/usr/include/libxml2 -DWITH_GZFILEOP  -I/usr/include -flto=thin -emit-llvm -c -o concurrent.bc concurrent.c
concurrent.c:672:33: error: no member named 'tuple' in 'struct HeapTupleData'
  672 |                                         &change->data.tp.newtuple->tuple : NULL;
      |                                          ~~~~~~~~~~~~~~~~~~~~~~~~  ^
concurrent.c:690:33: error: no member named 'tuple' in 'struct HeapTupleData'
  690 |                                         &change->data.tp.oldtuple->tuple : NULL;
      |                                          ~~~~~~~~~~~~~~~~~~~~~~~~  ^
concurrent.c:692:33: error: no member named 'tuple' in 'struct HeapTupleData'
  692 |                                         &change->data.tp.newtuple->tuple : NULL;
      |                                          ~~~~~~~~~~~~~~~~~~~~~~~~  ^
concurrent.c:708:33: error: no member named 'tuple' in 'struct HeapTupleData'
  708 |                                         &change->data.tp.oldtuple->tuple : NULL;
      |                                          ~~~~~~~~~~~~~~~~~~~~~~~~  ^
4 errors generated.
make[1]: *** [/usr/pgsql-17/lib/pgxs/src/makefiles/../../src/Makefile.global:1085: concurrent.bc] Error 1
make[1]: *** Waiting for unfinished jobs....
concurrent.c: In function ‘plugin_change’:
concurrent.c:672:66: error: ‘HeapTupleData’ has no member named ‘tuple’
  672 |                                         &change->data.tp.newtuple->tuple : NULL;
      |                                                                  ^~
concurrent.c:690:66: error: ‘HeapTupleData’ has no member named ‘tuple’
  690 |                                         &change->data.tp.oldtuple->tuple : NULL;
      |                                                                  ^~
concurrent.c:692:66: error: ‘HeapTupleData’ has no member named ‘tuple’
  692 |                                         &change->data.tp.newtuple->tuple : NULL;
      |                                                                  ^~
concurrent.c:708:66: error: ‘HeapTupleData’ has no member named ‘tuple’
  708 |                                         &change->data.tp.oldtuple->tuple : NULL;
      |                                                                  ^~
make[1]: *** [<builtin>: concurrent.o] Error 1
pg_rewrite.c:1436:60: error: too few arguments to function call, expected 6, have 4
 1436 |         ReplicationSlotCreate(buf->data, true, RS_EPHEMERAL, false);
      |         ~~~~~~~~~~~~~~~~~~~~~                                     ^
/usr/pgsql-17/include/server/replication/slot.h:243:13: note: 'ReplicationSlotCreate' declared here
  243 | extern void ReplicationSlotCreate(const char *name, bool db_specific,
      |             ^                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  244 |                                                                   ReplicationSlotPersistency persistency,
      |                                                                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  245 |                                                                   bool two_phase, bool failover,
      |                                                                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  246 |                                                                   bool synced);
      |                                                                   ~~~~~~~~~~~
pg_rewrite.c:2678:14: error: no member named 'attstattarget' in 'struct FormData_pg_attribute'
 2678 |                 if (attr1->attstattarget != attr2->attstattarget)
      |                     ~~~~~  ^
pg_rewrite.c:2678:38: error: no member named 'attstattarget' in 'struct FormData_pg_attribute'
 2678 |                 if (attr1->attstattarget != attr2->attstattarget)
      |                                             ~~~~~  ^
3 errors generated.
make[1]: *** [/usr/pgsql-17/lib/pgxs/src/makefiles/../../src/Makefile.global:1085: pg_rewrite.bc] Error 1
pg_rewrite.c: In function ‘setup_decoding’:
pg_rewrite.c:1436:9: error: too few arguments to function ‘ReplicationSlotCreate’; expected 6, have 4
 1436 |         ReplicationSlotCreate(buf->data, true, RS_EPHEMERAL, false);
      |         ^~~~~~~~~~~~~~~~~~~~~
In file included from /usr/pgsql-17/include/server/replication/logical.h:15,
                 from pg_rewrite.h:26,
                 from pg_rewrite.c:10:
/usr/pgsql-17/include/server/replication/slot.h:243:13: note: declared here
  243 | extern void ReplicationSlotCreate(const char *name, bool db_specific,
      |             ^~~~~~~~~~~~~~~~~~~~~
pg_rewrite.c: In function ‘equal_dest_descs’:
pg_rewrite.c:2678:28: error: ‘FormData_pg_attribute’ has no member named ‘attstattarget’; did you mean ‘attstorage’?
 2678 |                 if (attr1->attstattarget != attr2->attstattarget)
      |                            ^~~~~~~~~~~~~
      |                            attstorage
pg_rewrite.c:2678:52: error: ‘FormData_pg_attribute’ has no member named ‘attstattarget’; did you mean ‘attstorage’?
 2678 |                 if (attr1->attstattarget != attr2->attstattarget)
      |                                                    ^~~~~~~~~~~~~
      |                                                    attstorage
make[1]: *** [<builtin>: pg_rewrite.o] Error 1

devrimgunduz avatar Jul 30 '25 15:07 devrimgunduz

Interesting, I thought it works with PG 17. I'll check next week. Anyway, version 1.2 should be used in the future - I'll create it next week. You can try master so far.

ahouska avatar Jul 31 '25 07:07 ahouska

It seems like you miss this commit but the branch REL1_1 does contain it.

Nevertheless, version 1.2 is available now. (I'll create a tag short before the release of PG 18.)

ahouska avatar Aug 04 '25 11:08 ahouska

@devrimgunduz FYI, there is now a 1.3 tag that mirrors what I had uploaded to apt.postgresql.org in May, but never pushed anywhere until yesterday. There will be more cleanup and a fresh version soon, better wait for that. (Sorry for the mess.)

df7cb avatar Aug 06 '25 14:08 df7cb