[Pljava-dev] Upcoming features

Thomas Hallgren thhal at mailblocks.com
Sun Jul 4 22:41:01 UTC 2004


PostgreSQL now has feature freeze for version 7.5. This goes for Pl/Java 
as well. I plan to release a version 1.1 of Pl/Java with some new 
functionality. The code is in CVS already. Here are the highlights of 
what I have planned.

Configuration of the JVM.
PostgreSQL now have support for custom variable classes. In essence, 
this means that any PostgreSQL module can add configuration variables to 
the postgresql.conf file and also use the SQL command SET to reconfigure 
stuff in runtime. So far, I've added three such variables.

pljava.classpath
The classpath that will be used by the JVM. It will be merged with the 
classpath defined by the CLASSPATH environment variable such that the 
classes defined in the pljava.classpath will be placed first.

pljava.debug
If set, Pl/Java goes into loop where each turn sleeps for one second. 
The loop can be broken by attaching a debugger (such as gdb) and set the 
C variable pljavaDebug to 0. This mechanism is inteded for those who 
want to debug the C code in Pl/Java or when Pl/Java is used in 
conjunction with gcj (in which case gdb can be used as java debugger as 
well).

pljava.vmoptions
Each option in this string is passed on to the JVM. Suitable for 
controlling min/max heap, Java debugging, etc.

GCJ support.
Pl/Java can now run using GCJ (see http://gcc.gnu.org/java). Since each 
connection in PostgreSQL is a process of its own and hence spawn a JVM 
of its own, the use of GCJ can be a significant improvement when it 
comes to resource consumption and start up times. When Pl/Java is 
compiled for GCJ, the pljava.jar is no longer needed. Everything is 
linked with the shared object. GCJ 3.4 is required to make everything 
work OK.

GCJ has currently only been tested on Linux.

Transactional support.
A new java class, called a Session is introduced. You get hold of the 
session using the static method Server.getSession(). A session can hold 
attributes and the attributes are under transaction control, i.e. all 
changes made to a session will remain if a transaction commits 
successfully. If the transaction aborts, all changes since the last 
commit will be lost.

Kind regards,

Thomas Hallgren




More information about the Pljava-dev mailing list