tada / pljava

PL/Java is a free add-on module that brings Java™ Stored Procedures, Triggers, Functions, Aggregates, Operators, Types, etc., to the PostgreSQL™ backend.
http://tada.github.io/pljava/
Other
238 stars 77 forks source link

I meet a compile error while compiling PL/Java using maven #493

Open shenjianrong opened 6 days ago

shenjianrong commented 6 days ago

I meet a compile error as following while compiling PL/Java using "mvn clean install" command, how to resolve this problem?

/home/sjr/pljava-master/pljava-so/src/main/c/Backend.c:26:27: 致命错误:utils/timeout.h:没有那个文件或目录

include <utils/timeout.h>

                       ^

编译中断。 In file included from /home/sjr/pljava-master/pljava-so/src/main/include/pljava/DualState.h:18:0, from /home/sjr/pljava-master/pljava-so/src/main/c/DualState.c:21: /home/sjr/pljava-master/pljava-so/src/main/include/pljava/pljava.h:40:33: 致命错误:access/htup_details.h:没有那个文件或目录

include <access/htup_details.h>

                             ^

编译中断。 In file included from /home/sjr/pljava-master/pljava-so/src/main/include/pljava/JNICalls.h:18:0, from /home/sjr/pljava-master/pljava-so/src/main/include/pljava/PgObject.h:16, from /home/sjr/pljava-master/pljava-so/src/main/include/pljava/type/Type.h:16, from /home/sjr/pljava-master/pljava-so/src/main/include/pljava/Function.h:16, from /home/sjr/pljava-master/pljava-so/src/main/include/pljava/Backend.h:17, from /home/sjr/pljava-master/pljava-so/src/main/c/Exception.c:18: /home/sjr/pljava-master/pljava-so/src/main/include/pljava/pljava.h:40:33: 致命错误:access/htup_details.h:没有那个文件或目录

include <access/htup_details.h>

                             ^

编译中断。

jcflack commented 3 days ago

It may be helpful if you can post the output of the pg_config command (the same one found on the search path by the Maven build).

One of the paths output by pg_config will be INCLUDEDIR_SERVER. Can you check on that path for the existence of utils/timeout.h and access/htup_details.h files?

shenjianrong commented 3 days ago

Thanks for your replying. The pg_config command is: BINDIR = /usr/bin DOCDIR = /usr/share/doc/pgsql HTMLDIR = /usr/share/doc/pgsql INCLUDEDIR = /usr/include PKGINCLUDEDIR = /usr/include/pgsql INCLUDEDIR-SERVER = /usr/include/pgsql/server ...... VERSION = PostgreSQL 15.7

My computer’s OS is CentOS 7, I can’t find the install package of PostgreSQL 16.

The following pictures are files in /usr/include/pgsql/server/access and /usr/include/pgsql/server/utils directory. access utils I have tried PL/Java version 1.6.6 and 1.6.7. When I try the PL/Java version 1.6.2 to 1.6.5, another compile error occur like following picture. PLJava1 6 5_error

jcflack commented 3 days ago

If pg_config reports version 15.7, you should definitely have access/htup_details.h and utils/timeout.h. It appears that somehow the PostgreSQL development package installed on your system may be incomplete, or somehow does not correspond to the reported version.

I cannot say how to remedy that, but this should give you something to investigate.

PL/Java's release notes indicate that PostgreSQL 15 support was added in PL/Java 1.6.5. So I am not surprised that another compilation error is encountered with 1.6.2 through 1.6.4. I am surprised about an error with 1.6.5, but again, I don't have a complete understanding of exactly what parts of what versions of PostgreSQL are installed on your system.

shenjianrong commented 2 days ago

sudo yum install -y postgresql15-server I have installed postgresql 15 on another computer using above command. The pg_config output is:

[root@localhost bin]# ./pg_config BINDIR = /usr/pgsql-15/bin DOCDIR = /usr/pgsql-15/doc HTMLDIR = /usr/pgsql-15/doc/html INCLUDEDIR = /usr/pgsql-15/include PKGINCLUDEDIR = /usr/pgsql-15/include INCLUDEDIR-SERVER = /usr/pgsql-15/include/server

Why I can't find the /usr/pgsql-15/include directory?

jcflack commented 2 days ago

Does the repository you are installing from have a package postgresql15-server-devel?

If it does not, the development files for both client and server may have been combined into a package simply called postgresql15-devel.

shenjianrong commented 2 days ago

[root@localhost bin]# sudo yum install postgresql15-devel 已加载插件:fastestmirror, langpacks Loading mirror speeds from cached hostfile