Monday, April 10, 2006

PL/Java 1.2.0 compilation error on PG8.0.0 or 8.0.1

According to the PL/Java release page, PL/Java 1.2.0 still has full support for 8.0.x.

However, PL/Java 1.2.0 can't be compiled with 8.0.0 or 8.0.1, because a number of arguments of DefineCustomIntVariable() has been changed between 8.0.1 and 8.0.2. So I got a following error on 8.0.1. PL/Java 1.2.0 can be compiled only on 8.0.2 or later.

Should it be fixed in future release?

gcc -c -Wno-long-long -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -fno-strict-aliasing -g -fpic -I"/usr/java/j2sdk1.4.2_04/include" -I"/usr/java/j2sdk1.4.2_04/include/linux" -DPKGLIBDIR=\"/home/snaga/pgsql801/lib\" -I/home/snaga/PostgresForest/installer/build/pljava-1.2.0/src/C/include -I/home/snaga/PostgresForest/installer/build/pljava-1.2.0/build/jni -DPGSQL_MAJOR_VER=8 -DPGSQL_MINOR_VER=0 -I/home/snaga/pgsql801/include/server -I/home/snaga/pgsql801/include/internal -D_GNU_SOURCE /home/snaga/PostgresForest/installer/build/pljava-1.2.0/src/C/pljava/Backend.c -o Backend.o
/home/snaga/PostgresForest/installer/build/pljava-1.2.0/src/C/pljava/Backend.c: In function `initializeJavaVM':
/home/snaga/PostgresForest/installer/build/pljava-1.2.0/src/C/pljava/Backend.c:567: warning: passing arg 6 of `DefineCustomIntVariable' makes pointer from integer without a cast
/home/snaga/PostgresForest/installer/build/pljava-1.2.0/src/C/pljava/Backend.c:567: warning: passing arg 7 of `DefineCustomIntVariable' makes pointer from integer without a cast
/home/snaga/PostgresForest/installer/build/pljava-1.2.0/src/C/pljava/Backend.c:567: too many arguments to function `DefineCustomIntVariable'
make[1]: *** [Backend.o] Error 1
make[1]: Leaving directory `/home/snaga/PostgresForest/installer/build/pljava-1.2.0/build/objs'
make: *** [c_all] Error 2


Tom Lane said...

I can't see any reason to spend time "fixing" PLJava to compile against PG 8.0.0 or 8.0.1. Anyone still using either subrelease is in serious need of a clue anyway...

Satoshi Nagayasu said...

I got confused by the 1.2.0 release announcement.

The PL/Java 1.2.0 release is primarily targeted at the new PostgreSQL 8.1 but full support for 8.0.x is maintained.

It says "full support for 8.0.x".

Finally, I found the readme mentions that PG 8.0.3 or later is prerequired.

I understand fixing pl/java for the 8.0.0 or 8.0.1 is wasting time. But difference between 1.2.0 announcement and readme may make people confused who believe the compatibilities in single major release (such as 8.0.x).

I think the announcement should be fixed.