agora inbox for pljava-dev@postgresql.org
help / color / mirror / Atom feedSubject: [Pljava-dev] CREATE FUNCTION docs inconsistent with implementation
Date: Tue, 15 Aug 2006 00:49:48 +0200
Message-ID: <44E0FE0C.9030101@tada.se> (raw)
In-Reply-To: <44D920B7.4020509@goldencode.com>
References: <44D920B7.4020509@goldencode.com>
Eric Faulhaber wrote:
> In case anyone else has been having trouble with this, hopefully this
> will save you some time...
>
> The "Function mapping" (long-form) CREATE FUNCTION sample from the Wiki
> seems to be out of sync with the backing implementation:
>
> CREATE FUNCTION getsysprop(VARCHAR)
> RETURNS VARCHAR
> AS 'java.lang.String java.lang.System.getProperty(java.lang.String)'
> LANGUAGE java;
>
> When getsysprop is run as is, the Java class name is interpreted as
> 'java.lang.Stringjava.lang.System' and the return type as 'null', as in:
>
> DEBUG: className = 'java.lang.Stringjava.lang.System', methodName =
> 'getProperty', parameters = 'java.lang.String', returnType = 'null'
> DEBUG: Loading class java.lang.Stringjava.lang.System
> ERROR: java.lang.ClassNotFoundException: java.lang.Stringjava.lang.System
>
Ouch. This is a bug. I'll have to look into that.
> The parseFunction function (line 387 in src/C/pljava/Functions.c from
> the 1.3.0 source download) looks for '=' between the return type and
> class name. Consequently, the CREATE FUNCTION statement must be:
>
> CREATE FUNCTION getsysprop(VARCHAR)
> RETURNS VARCHAR
> AS 'java.lang.String=java.lang.System.getProperty(java.lang.String)'
> LANGUAGE java;
>
> Is the '=' delimiter expected to be a permanent syntax here, or is the
> intention that the implementation eventually will match the docs?
>
The '=' is only used internally and should not be used in the CREATE FUNCTION declaration.
PL/Java will strip of every white space in the string very early on in the parse process
since they are all insignificant. Well, all but the one between the return type and the
function name. That particular white space is replaced by the '=' sign. The code at line 387
comes into play after that.
Regards,
Thomas Hallgren
view thread (2+ messages)
Message-ID: <44E0FE0C.9030101@tada.se>
Permalink: ../44E0FE0C.9030101@tada.se/
Also on: postgresql.org/message-id/44E0FE0C.9030101@tada.se
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pljava-dev@postgresql.org
Subject: Re: [Pljava-dev] CREATE FUNCTION docs inconsistent with implementation
In-Reply-To: <44E0FE0C.9030101@tada.se>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox