PostgreSQL 18 support
Hi,
v18 beta1 is already out, so I started testing extensions against PostgreSQL 18. Citus 13.1.0 is failing with these errors (after updating configure for v18). Can you please take a look? Thanks!
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 -Wmissing-variable-declarations -fno-strict-aliasing -fwrapv -fexcess-precision=standard -Wno-format-truncation -Wno-stringop-truncation -g -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 -std=gnu99 -Wall -Wextra -Wno-unused-parameter -Wno-sign-compare -Wno-missing-field-initializers -Wno-clobbered -Wno-declaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wmissing-declarations -Wmissing-prototypes -Wshadow -Werror=vla -Werror=implicit-int -Werror=implicit-function-declaration -Werror=return-type -fstack-clash-protection -I '/home/devrim/belgeler/Devrim/Projects/repo/pgrpms/rpm/redhat/main/non-common/citus/main/citus-13.1.0/src/include' -I'../../../src/include' -I/usr/pgsql-18/include -I/home/devrim/belgeler/Devrim/Projects/repo/pgrpms/rpm/redhat/main/non-common/citus/main/citus-13.1.0/vendor/safestringlib/include -I. -I./ -I/usr/pgsql-18/include/server -I/usr/pgsql-18/include/internal -D_GNU_SOURCE -I/usr/include/libxml2 -DWITH_GZFILEOP -I/usr/include -c -o write_state_management.o write_state_management.c
columnar_metadata.c: In function ‘SaveStripeSkipList’:
columnar_metadata.c:648:114: error: ‘struct TupleDescData’ has no member named ‘attrs’
648 | &tupleDescriptor->attrs[columnIndex]));
| ^~
columnar_metadata.c:651:114: error: ‘struct TupleDescData’ has no member named ‘attrs’
651 | &tupleDescriptor->attrs[columnIndex]));
| ^~
columnar_metadata.c: In function ‘ReadStripeSkipList’:
columnar_metadata.c:806:72: error: ‘struct TupleDescData’ has no member named ‘attrs’
806 | ByteaToDatum(minValue, &tupleDescriptor->attrs[columnIndex]);
| ^~
columnar_metadata.c:808:72: error: ‘struct TupleDescData’ has no member named ‘attrs’
808 | ByteaToDatum(maxValue, &tupleDescriptor->attrs[columnIndex]);
| ^~
columnar_metadata.c: In function ‘UpdateStripeMetadataRow’:
columnar_metadata.c:1426:9: error: implicit declaration of function ‘heap_inplace_update’; did you mean ‘heap_inplace_unlock’? [-Wimplicit-function-declaration]
1426 | heap_inplace_update(columnarStripes, modifiedTuple);
| ^~~~~~~~~~~~~~~~~~~
| heap_inplace_unlock
columnar_metadata.c: In function ‘create_estate_for_relation’:
columnar_metadata.c:1733:9: error: too few arguments to function ‘ExecInitRangeTable’; expected 4, have 3
1733 | ExecInitRangeTable(estate, list_make1(rte), perminfos);
| ^~~~~~~~~~~~~~~~~~
In file included from columnar_metadata.c:42:
/usr/pgsql-18/include/server/executor/executor.h:713:13: note: declared here
713 | extern void ExecInitRangeTable(EState *estate, List *rangeTable, List *permInfos,
| ^~~~~~~~~~~~~~~~~~
make[1]: *** [<builtin>: columnar_metadata.o] Error 1
make[1]: *** Waiting for unfinished jobs....
columnar_tableam.c: In function ‘NeededColumnsList’:
columnar_tableam.c:1015:28: error: ‘struct TupleDescData’ has no member named ‘attrs’
1015 | if (tupdesc->attrs[i].attisdropped)
| ^~
columnar_tableam.c: In function ‘columnar_vacuum_rel’:
columnar_tableam.c:1127:49: error: passing argument 8 of ‘vac_update_relstats’ makes integer from pointer without a cast [-Wint-conversion]
1127 | &frozenxid_updated, &minmulti_updated, false);
| ^~~~~~~~~~~~~~~~~~
| |
| _Bool *
In file included from columnar_tableam.c:30:
/usr/pgsql-18/include/server/commands/vacuum.h:356:77: note: expected ‘MultiXactId’ {aka ‘unsigned int’} but argument is of type ‘_Bool *’
356 | MultiXactId minmulti,
| ~~~~~~~~~~~~^~~~~~~~
columnar_tableam.c:1124:9: error: too few arguments to function ‘vac_update_relstats’; expected 11, have 10
1124 | vac_update_relstats(rel, new_rel_pages, new_live_tuples,
| ^~~~~~~~~~~~~~~~~~~
/usr/pgsql-18/include/server/commands/vacuum.h:349:13: note: declared here
349 | extern void vac_update_relstats(Relation relation,
| ^~~~~~~~~~~~~~~~~~~
columnar_tableam.c:1190:9: error: too few arguments to function ‘pgstat_report_vacuum’; expected 5, have 4
1190 | pgstat_report_vacuum(RelationGetRelid(rel),
| ^~~~~~~~~~~~~~~~~~~~
In file included from columnar_tableam.c:6:
/usr/pgsql-18/include/server/pgstat.h:661:13: note: declared here
661 | extern void pgstat_report_vacuum(Oid tableoid, bool shared,
| ^~~~~~~~~~~~~~~~~~~~
columnar_tableam.c: In function ‘LogRelationStats’:
columnar_tableam.c:1228:51: error: ‘struct TupleDescData’ has no member named ‘attrs’
1228 | bool attrDropped = tupdesc->attrs[column].attisdropped;
| ^~
columnar_tableam.c: At top level:
columnar_tableam.c:2567:10: error: ‘TableAmRoutine’ has no member named ‘scan_bitmap_next_block’; did you mean ‘scan_bitmap_next_tuple’?
2567 | .scan_bitmap_next_block = NULL,
| ^~~~~~~~~~~~~~~~~~~~~~
| scan_bitmap_next_tuple
columnar_tableam.c:2568:35: warning: initialized field overwritten [-Woverride-init]
2568 | .scan_bitmap_next_tuple = NULL,
| ^~~~
columnar_tableam.c:2568:35: note: (near initialization for ‘columnar_am_methods.scan_bitmap_next_tuple’)
columnar_tableam.c: In function ‘detoast_values’:
columnar_tableam.c:2606:44: error: ‘struct TupleDescData’ has no member named ‘attrs’
2606 | if (!isnull[i] && tupleDesc->attrs[i].attlen == -1 &&
| ^~
make[1]: *** [<builtin>: columnar_tableam.o] Error 1
columnar_customscan.c:151:32: warning: no previous declaration for ‘ColumnarScanPathMethods’ [-Wmissing-variable-declarations]
151 | const struct CustomPathMethods ColumnarScanPathMethods = {
| ^~~~~~~~~~~~~~~~~~~~~~~
columnar_customscan.c:157:32: warning: no previous declaration for ‘ColumnarScanScanMethods’ [-Wmissing-variable-declarations]
157 | const struct CustomScanMethods ColumnarScanScanMethods = {
| ^~~~~~~~~~~~~~~~~~~~~~~
columnar_customscan.c:162:32: warning: no previous declaration for ‘ColumnarScanExecuteMethods’ [-Wmissing-variable-declarations]
162 | const struct CustomExecMethods ColumnarScanExecuteMethods = {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
columnar_customscan.c: In function ‘EvalParamsMutator’:
columnar_customscan.c:1775:40: error: implicit declaration of function ‘ExecInitExprWithParams’ [-Wimplicit-function-declaration]
1775 | ExprState *exprState = ExecInitExprWithParams((Expr *) node,
| ^~~~~~~~~~~~~~~~~~~~~~
columnar_customscan.c:1775:40: error: initialization of ‘ExprState *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
columnar_customscan.c:1777:30: error: implicit declaration of function ‘ExecEvalExpr’ [-Wimplicit-function-declaration]
1777 | Datum pval = ExecEvalExpr(exprState, econtext, &isnull);
| ^~~~~~~~~~~~
columnar_customscan.c: In function ‘ColumnarScan_BeginCustomScan’:
columnar_customscan.c:1803:9: error: implicit declaration of function ‘ExecAssignExprContext’ [-Wimplicit-function-declaration]
1803 | ExecAssignExprContext(estate, &cscanstate->ss.ps);
| ^~~~~~~~~~~~~~~~~~~~~
columnar_customscan.c:1807:9: error: implicit declaration of function ‘ResetExprContext’ [-Wimplicit-function-declaration]
1807 | ResetExprContext(columnarScanState->css_RuntimeContext);
| ^~~~~~~~~~~~~~~~
columnar_customscan.c: In function ‘ColumnarScan_ExecCustomScan’:
columnar_customscan.c:1919:16: error: implicit declaration of function ‘ExecScan’ [-Wimplicit-function-declaration]
1919 | return ExecScan(&node->ss,
| ^~~~~~~~
columnar_customscan.c:1920:42: error: ‘ExecScanAccessMtd’ undeclared (first use in this function)
1920 | (ExecScanAccessMtd) ColumnarScanNext,
| ^~~~~~~~~~~~~~~~~
columnar_customscan.c:1920:42: note: each undeclared identifier is reported only once for each function it appears in
columnar_customscan.c:1920:60: error: expected ‘)’ before ‘ColumnarScanNext’
1920 | (ExecScanAccessMtd) ColumnarScanNext,
| ^~~~~~~~~~~~~~~~~
| )
columnar_customscan.c:1919:24: note: to match this ‘(’
1919 | return ExecScan(&node->ss,
| ^
columnar_customscan.c: In function ‘ColumnarScan_ExplainCustomScan’:
columnar_customscan.c:1987:9: error: implicit declaration of function ‘ExplainPropertyText’ [-Wimplicit-function-declaration]
1987 | ExplainPropertyText("Columnar Projected Columns",
| ^~~~~~~~~~~~~~~~~~~
columnar_customscan.c:2003:25: error: implicit declaration of function ‘ExplainPropertyInteger’ [-Wimplicit-function-declaration]
2003 | ExplainPropertyInteger(
| ^~~~~~~~~~~~~~~~~~~~~~
columnar_customscan.c: At top level:
columnar_customscan.c:1910:1: warning: ‘ColumnarScanRecheck’ defined but not used [-Wunused-function]
1910 | ColumnarScanRecheck(ColumnarScanState *node, TupleTableSlot *slot)
| ^~~~~~~~~~~~~~~~~~~
columnar_customscan.c:1864:1: warning: ‘ColumnarScanNext’ defined but not used [-Wunused-function]
1864 | ColumnarScanNext(ColumnarScanState *columnarScanState)
| ^~~~~~~~~~~~~~~~
make[1]: *** [<builtin>: columnar_customscan.o] Error 1
We’re actively working on this. We’ve successfully built against 18beta1, and we’re now focused on resolving the regression test failures.
PR for build: https://github.com/citusdata/citus/pull/7981
Issue page related to regress test: https://github.com/citusdata/citus/issues/7992
18beta2 support added to main branch.
Closing this issue for now, but it can be reopened if needed.
I have to keep this open until you folks release a tarball/release with v18 support.
Just a heads-up: PostgreSQL 18 RC1 will be out this Thursday (4 September). GA is currently planned at 25 September
is this released?