我正在为PostgreSQL 9.6安装jdbc2_fdw扩展(已经尝试过PostgreSQL 12,但没有成功(。我使用命令sudo PATH=/usr/lib/postgresql/9.6/bin/:$PATH make USE_PGXS=1
install进行编译和构建。我得到了一堆错误,同样的已经列出。Java、JavaC&postgres版本如下所示。请帮忙。
user@friday:~/Downloads/jdbc/jdbc2_fdw$java--版本openjdk 11.0.9.1 2020-11-04OpenJDK运行时环境(build 11.0.9.1+1-Ubuntu-0ubuntu1.20.04(OpenJDK 64位服务器虚拟机(build 11.0.9.1+1-Ubuntu-0ubuntu1.20.04,混合模式,共享(user@friday:~/Downloads/jdbc/jdbc2_fdw$javac--版本javac 11.0.9.1
Postgres版本
PostgreSQL 9.6.20 on x86_64-pc-linux-gnu(Ubuntu 9.6.20-1.pgdg20.04+1(,由gcc编译(Ubuntu 9.3.0-17ubuntu1~20.04(9.3.0,64位(1行(
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -Wno-format-truncation -Wno-stringop-truncation -g -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -fno-omit-frame-pointer -fPIC -D'PKG_LIB_DIR=/usr/lib/postgresql/9.6/lib' -I/usr/include/postgresql -I. -I./ -I/usr/include/postgresql/9.6/server -I/usr/include/postgresql/internal -Wdate-time -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -I/usr/include/libxml2 -I/usr/include/mit-krb5 -c -o jdbc2_fdw.o jdbc2_fdw.c
jdbc2_fdw.c: In function ‘jdbc2_fdw_handler’:
jdbc2_fdw.c:353:29: warning: assignment to ‘GetForeignPlan_function’ {aka ‘struct ForeignScan * (*)(struct PlannerInfo *, struct RelOptInfo *, unsigned int, struct ForeignPath *, struct List *, struct List *, struct Plan *)’} from incompatible pointer type ‘ForeignScan * (*)(PlannerInfo *, RelOptInfo *, Oid, ForeignPath *, List *, List *)’ {aka ‘struct ForeignScan * (*)(struct PlannerInfo *, struct RelOptInfo *, unsigned int, struct ForeignPath *, struct List *, struct List *)’} [-Wincompatible-pointer-types]
353 | routine->GetForeignPlan = jdbcGetForeignPlan;
| ^
jdbc2_fdw.c: In function ‘jdbcGetForeignRelSize’:
jdbc2_fdw.c:469:38: error: ‘RelOptInfo’ {aka ‘struct RelOptInfo’} has no member named ‘reltargetlist’; did you mean ‘reltarget’?
469 | pull_varattnos((Node *) baserel->reltargetlist, baserel->relid,
| ^~~~~~~~~~~~~
| reltarget
jdbc2_fdw.c:512:16: error: ‘RelOptInfo’ {aka ‘struct RelOptInfo’} has no member named ‘width’
512 | baserel->width = fpinfo->width;
| ^~
jdbc2_fdw.c:529:41: error: ‘RelOptInfo’ {aka ‘struct RelOptInfo’} has no member named ‘width’
529 | (10 * BLCKSZ) / (baserel->width + sizeof(HeapTupleHeaderData));
| ^~
jdbc2_fdw.c: In function ‘jdbcGetForeignPaths’:
jdbc2_fdw.c:553:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
553 | PgFdwRelationInfo *fpinfo = (PgFdwRelationInfo *) baserel->fdw_private;
| ^~~~~~~~~~~~~~~~~
jdbc2_fdw.c:564:42: error: incompatible type for argument 3 of ‘create_foreignscan_path’
564 | fpinfo->rows,
| ~~~~~~^~~~~~
| |
| double
In file included from jdbc2_fdw.c:28:
/usr/include/postgresql/9.6/server/optimizer/pathnode.h:90:21: note: expected ‘PathTarget *’ {aka ‘struct PathTarget *’} but argument is of type ‘double’
90 | extern ForeignPath *create_foreignscan_path(PlannerInfo *root, RelOptInfo *rel,
| ^~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/postgresql/9.6/server/nodes/primnodes.h:21,
from /usr/include/postgresql/9.6/server/nodes/parsenodes.h:25,
from /usr/include/postgresql/9.6/server/foreign/foreign.h:16,
from jdbc2_fdw.h:16,
from jdbc2_fdw.c:15:
/usr/include/postgresql/9.6/server/nodes/pg_list.h:69:19: error: incompatible type for argument 6 of ‘create_foreignscan_path’
69 | #define NIL ((List *) NULL)
| ~^~~~~~~~~~~~~~
| |
| List * {aka struct List *}
jdbc2_fdw.c:567:36: note: in expansion of macro ‘NIL’
567 | NIL, /* no pathkeys */
| ^~~
In file included from jdbc2_fdw.c:28:
/usr/include/postgresql/9.6/server/optimizer/pathnode.h:90:21: note: expected ‘Cost’ {aka ‘double’} but argument is of type ‘List *’ {aka ‘struct List *’}
90 | extern ForeignPath *create_foreignscan_path(PlannerInfo *root, RelOptInfo *rel,
| ^~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/postgresql/9.6/server/nodes/primnodes.h:21,
from /usr/include/postgresql/9.6/server/nodes/parsenodes.h:25,
from /usr/include/postgresql/9.6/server/foreign/foreign.h:16,
from jdbc2_fdw.h:16,
from jdbc2_fdw.c:15:
/usr/include/postgresql/9.6/server/nodes/pg_list.h:69:19: warning: passing argument 8 of ‘create_foreignscan_path’ from incompatible pointer type [-Wincompatible-pointer-types]
69 | #define NIL ((List *) NULL)
| ~^~~~~~~~~~~~~~
| |
| List * {aka struct List *}
jdbc2_fdw.c:569:36: note: in expansion of macro ‘NIL’
569 | NIL); /* no fdw_private list */
| ^~~
In file included from jdbc2_fdw.c:28:
/usr/include/postgresql/9.6/server/optimizer/pathnode.h:90:21: note: expected ‘Relids’ {aka ‘struct Bitmapset *’} but argument is of type ‘List *’ {aka ‘struct List *’}
90 | extern ForeignPath *create_foreignscan_path(PlannerInfo *root, RelOptInfo *rel,
| ^~~~~~~~~~~~~~~~~~~~~~~
jdbc2_fdw.c:563:12: error: too few arguments to function ‘create_foreignscan_path’
563 | path = create_foreignscan_path(root, baserel,
| ^~~~~~~~~~~~~~~~~~~~~~~
In file included from jdbc2_fdw.c:28:
/usr/include/postgresql/9.6/server/optimizer/pathnode.h:90:21: note: declared here
90 | extern ForeignPath *create_foreignscan_path(PlannerInfo *root, RelOptInfo *rel,
| ^~~~~~~~~~~~~~~~~~~~~~~
jdbc2_fdw.c: In function ‘jdbcGetForeignPlan’:
jdbc2_fdw.c:591:5: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
591 | PgFdwRelationInfo *fpinfo = (PgFdwRelationInfo *) baserel->fdw_private;
| ^~~~~~~~~~~~~~~~~
jdbc2_fdw.c:685:13: warning: enumeration value ‘LCS_NONE’ not handled in switch [-Wswitch]
685 | switch (rc->strength)
| ^~~~~~
jdbc2_fdw.c:715:12: error: too few arguments to function ‘make_foreignscan’
715 | return make_foreignscan(tlist,
| ^~~~~~~~~~~~~~~~
In file included from jdbc2_fdw.c:30:
/usr/include/postgresql/9.6/server/optimizer/planmain.h:51:21: note: declared here
51 | extern ForeignScan *make_foreignscan(List *qptlist, List *qpqual,
| ^~~~~~~~~~~~~~~~
jdbc2_fdw.c: In function ‘jdbcBeginForeignScan’:
jdbc2_fdw.c:740:11: warning: unused variable ‘new_query’ [-Wunused-variable]
740 | char *new_query;
| ^~~~~~~~~
jdbc2_fdw.c: In function ‘jdbcIterateForeignScan’:
jdbc2_fdw.c:850:21: warning: variable ‘slot’ set but not used [-Wunused-but-set-variable]
850 | TupleTableSlot *slot;
| ^~~~
jdbc2_fdw.c: In function ‘postgresReScanForeignScan’:
jdbc2_fdw.c:864:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
864 | PgFdwScanState *fsstate = (PgFdwScanState *) node->fdw_state;
| ^~~~~~~~~~~~~~
jdbc2_fdw.c: In function ‘postgresEndForeignScan’:
jdbc2_fdw.c:921:5: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
921 | PgFdwScanState *fsstate = (PgFdwScanState *) node->fdw_state;
| ^~~~~~~~~~~~~~
jdbc2_fdw.c: In function ‘postgresPlanForeignModify’:
jdbc2_fdw.c:1030:42: error: ‘RangeTblEntry’ {aka ‘struct RangeTblEntry’} has no member named ‘modifiedCols’
1030 | Bitmapset *tmpset = bms_copy(rte->modifiedCols);
| ^~
jdbc2_fdw.c: In function ‘estimate_path_cost_size’:
jdbc2_fdw.c:1618:24: error: ‘RelOptInfo’ {aka ‘struct RelOptInfo’} has no member named ‘width’
1618 | width = baserel->width;
| ^~
jdbc2_fdw.c: In function ‘set_transmission_modes’:
jdbc2_fdw.c:1939:16: error: too few arguments to function ‘set_config_option’
1939 | (void) set_config_option("datestyle", "ISO",
| ^~~~~~~~~~~~~~~~~
In file included from jdbc2_fdw.c:36:
/usr/include/postgresql/9.6/server/utils/guc.h:366:12: note: declared here
366 | extern int set_config_option(const char *name, const char *value,
| ^~~~~~~~~~~~~~~~~
jdbc2_fdw.c:1943:16: error: too few arguments to function ‘set_config_option’
1943 | (void) set_config_option("intervalstyle", "postgres",
| ^~~~~~~~~~~~~~~~~
In file included from jdbc2_fdw.c:36:
/usr/include/postgresql/9.6/server/utils/guc.h:366:12: note: declared here
366 | extern int set_config_option(const char *name, const char *value,
| ^~~~~~~~~~~~~~~~~
jdbc2_fdw.c:1947:16: error: too few arguments to function ‘set_config_option’
1947 | (void) set_config_option("extra_float_digits", "3",
| ^~~~~~~~~~~~~~~~~
In file included from jdbc2_fdw.c:36:
/usr/include/postgresql/9.6/server/utils/guc.h:366:12: note: declared here
366 | extern int set_config_option(const char *name, const char *value,
| ^~~~~~~~~~~~~~~~~
jdbc2_fdw.c: In function ‘jdbcGetForeignPlan’:
jdbc2_fdw.c:720:1: warning: control reaches end of non-void function [-Wreturn-type]
720 | }
| ^
At top level:
jdbc2_fdw.c:1839:1: warning: ‘fetch_more_data’ defined but not used [-Wunused-function]
1839 | fetch_more_data(ForeignScanState *node)
| ^~~~~~~~~~~~~~~
jdbc2_fdw.c:1747:1: warning: ‘create_cursor’ defined but not used [-Wunused-function]
1747 | create_cursor(ForeignScanState *node)
| ^~~~~~~~~~~~~
jdbc2_fdw.c:1718:1: warning: ‘ec_member_matches_foreign’ defined but not used [-Wunused-function]
1718 | ec_member_matches_foreign(PlannerInfo *root, RelOptInfo *rel,
| ^~~~~~~~~~~~~~~~~~~~~~~~~
make: *** [<builtin>: jdbc2_fdw.o] Error 1
看起来该软件与PostgreSQL版本不兼容。您应该联系维护人员。如果他们不帮你,你可以付钱给PostgreSQL黑客修改代码。
我不会使用像9.6这样的旧版本。