Re: pljava revisited - Mailing list pgsql-hackers

From Andrew Dunstan
Subject Re: pljava revisited
Date
Msg-id 3FD74869.2020902@dunslane.net
Whole thread Raw
In response to pljava revisited  ("Thomas Hallgren" <thhal@mailblocks.com>)
Responses Re: pljava revisited
List pgsql-hackers
Thomas Hallgren wrote:

>Hi,
>I'm working on a new pl/java prototype that I hope will become production
>quality some time in the future. Before my project gets to far, I'd like to
>gather some input from other users. I've taken a slightly different approach
>than what seems to be the case for other attempts that I've managed to dig
>up. Here's some highlights in my approach:
>
>1. A new Java VM is spawned for each connection. I know that this will give
>a performance hit when a new connection is created. The alternative however,
>implies that all calls becomes inter-process calls which I think is a much
>worse scenario. Especially since most modern environments today has some
>kind of connection pooling. Another reason is that the connections
>represents sessions and those sessions gets a very natural isolation using
>separate VM's. A third reason is that the "current connection" would become
>unavailable in a remote process (see #5).
>

Maybe on-demand might be better - if the particular backend doesn't need 
it why incur the overhead?

>
>2. There's no actual Java code in the body of a function. Simply a reference
>to a static method. My reasoning is that when writing (and debugging) java,
>you want to use your favorite IDE. Mixing Java with SQL just gets messy.
>


Perhaps an example or two might help me understand better how this would 
work.

>
>3. As opposed to the Tcl, Python, and Perl, that for obvious reasons uses
>strings, my pl/java will use native types wherever possible. A flag can be
>added to the function definition if real objects are preferred instead of
>primitives (motivated by the fact that the primitives cannot reflect NULL
>values).
>
>4. The code is actually written using JNI and C++ but without any templates,
>no &-style object references, no operator overloads, external class
>libraries etc. I use C++ simply to get better quality, readability and
>structure on the code.
>

Other pl* (perl, python, tcl) languages have vanilla C glue code. Might 
be better to stick to this. If you aren't using advanced C++ features 
that shouldn't be too hard - well structured C can be just as readable 
as well structured C++. At the very lowest level, about the only things 
C++ buys you are the ability to declare variables in arbitrary places, 
and // style comments.

>
>5. I plan to write a JDBC layer using JNI on top of the SPI calls to enable
>JDBC functionality on the current connection. Some things will be limited
>(begin/commit etc. will not be possible to do here for instance).
>

Again. examples would help me understand better.

Is there a web page for your project?


cheers

andrew



pgsql-hackers by date:

Previous
From: Andreas Pflug
Date:
Subject: Re: [pgadmin-support] Cannot add an column of type serial
Next
From: Jan Wieck
Date:
Subject: Re: ERROR: Index pg_toast_8443892_index is not a btree