Re: java.sql.DatabaseMetaData.getProcedures and overloaded functions - Mailing list pgsql-jdbc

From Thor Michael Støre
Subject Re: java.sql.DatabaseMetaData.getProcedures and overloaded functions
Date
Msg-id 1293806627.4629.42.camel@localhost
Whole thread Raw
In response to Re: java.sql.DatabaseMetaData.getProcedures and overloaded functions  (Kris Jurka <books@ejurka.com>)
Responses Re: java.sql.DatabaseMetaData.getProcedures and overloaded functions
List pgsql-jdbc
On Thu, 2010-12-30 at 22:24 -0500, Kris Jurka wrote:
>
> On Thu, 30 Dec 2010, Thor Michael St?re wrote:
>
> > Is my understanding correct in that JDBC doesn't actually provide a
> > proper way of inspecting overloaded stored procedures, and so to get
> > that information reliably you should query the PostgreSQL system
> > catalogs? At least when I try to use the java.sql.DatabaseMetaData
> > getProcedures and getProcedureColumns methods on overloaded procedures I
> > see them repeated without any explicit distinction between them, except
> > of course that getProcedureColumns gives different datatypes for each
> > procedure.
> >
>
> Hmm, the JDBC4 spec has added an additional column to the getProcedures
> return value called SPECIFIC_NAME which might be for differentiating
> between overloaded functions.

Right, it says it should "uniquely" identify the function within the
schema, which as far as I can tell means that for overloaded functions
it would have to list up the input argument types. (Or at least the
other only unique way to identify a function I can think of is the OID,
which I can't believe one would want there.)
Given:

CREATE FUNCTION myfunction(in integer,in varchar, out timestamp)
RETURNS ...

It could perhaps return "myfunction(integer,varchar)". That would
incidentally be something that identified a specific function for an
ALTER/DROP FUNCTION command.

> It's not clear whether the function is
> supposed to be callable by that specific name or not.  It's also awkard to
> use because you can't pass the SPECIFIC_NAME from getProcedures to
> getProcedureColumns, so you'd have to do your own filtering of that
> ResultSet.

True. In my case however I just need to find all the functions that
matches a given name and their respective parameter types, so come to
think of it getProcedureColumns alone would be sufficient if it gave a
proper result for SPECIFIC_NAME that I could use just to map it on.

Thanks,
Thor Michael Støre



pgsql-jdbc by date:

Previous
From: Kris Jurka
Date:
Subject: Re: java.sql.DatabaseMetaData.getProcedures and overloaded functions
Next
From: Thomas Kellerer
Date:
Subject: Re: java.sql.DatabaseMetaData.getProcedures and overloaded functions