[ 
http://issues.apache.org/jira/browse/DERBY-183?page=comments#action_12442313 ] 
            
Bryan Pendleton commented on DERBY-183:
---------------------------------------

I believe that RoutineAliasInfo.getParameterNames()[n] will return the empty 
string.

It's a bit hard to figure this out directly, because I couldn't figure out how 
that method
would get called from, say, an SQL statement.

However, I looked at this indirectly by running dblook against a database which 
had
some functions with unnamed parameters, and the output of dblook was as follows:

CREATE FUNCTION "APP"."NONAME1" ( INTEGER, INTEGER) RETURNS INTEGER LANGUAGE 
JAVA PARAMETER STYLE JAVA READS SQL DATA CALLED ON NULL INPUT EXTERNAL NAME 
'java.lang.Math.max' ;

CREATE FUNCTION "APP"."NONAME2" (P1 INTEGER, INTEGER) RETURNS INTEGER LANGUAGE 
JAVA PARAMETER STYLE JAVA READS SQL DATA CALLED ON NULL INPUT EXTERNAL NAME 
'java.lang.Math.max' ;

By examining how RoutineAliasInfo.toString works, it seems that if the 
parameterNames
array held NULL for the unnamed parameters, then dblook would have generated:

CREATE FUNCTION "APP"."NONAME1" (NULL INTEGER,NULL INTEGER) RETURNS INTEGER 
LANGUAGE JAVA PARAMETER STYLE JAVA READS SQL DATA CALLED ON NULL INPUT EXTERNAL 
NAME 'java.lang.Math.max' ;

CREATE FUNCTION "APP"."NONAME2" (P1 INTEGER,NULL INTEGER) RETURNS INTEGER 
LANGUAGE JAVA PARAMETER STYLE JAVA READS SQL DATA CALLED ON NULL INPUT EXTERNAL 
NAME 'java.lang.Math.max' ;

So therefore I think that the parameterNames array contains empty strings, not 
null values,
for unnamed parameters.

I'll add a comment to this effect in the RoutineAliasInfo class.

> Parameter names required in CREATE FUNCTION
> -------------------------------------------
>
>                 Key: DERBY-183
>                 URL: http://issues.apache.org/jira/browse/DERBY-183
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.0.2.0
>            Reporter: Jack Klebanoff
>         Assigned To: James F. Adams
>            Priority: Minor
>         Attachments: Derby183.patch.txt, Derby183.patch2.txt, 
> Derby183.patch3.txt
>
>
> A statement like
>   create function s2.f2( char(8), integer) returns int
>   language java parameter style java  external name 'myclass.mymethod'
> fails with the message
>   ERROR 42X01: Syntax error: Encountered "char" at line 1, column 24
> However
>   create function s2.f2( p1 char(8), p2 integer) returns int
>   language java parameter style java  external name 'myclass.mymethod'
> is accepted.
> The Derby documentation (at 
> http://incubator.apache.org/derby/manuals/reference/sqlj27.html#CREATE+PROCEDURE+Statement),
>  the SQL2003 standard, and DB2 all agree that the parameter name is optional.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to