[Pljava-dev] CREATE FUNCTION docs inconsistent with implementation

Eric Faulhaber ecf at goldencode.com
Tue Aug 8 23:39:35 UTC 2006


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

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?

Thanks,
Eric Faulhaber




More information about the Pljava-dev mailing list