Thread: Patch for broken JDBC's getColumn()

Patch for broken JDBC's getColumn()

From
Jeroen van Vianen
Date:
Hi,

Attached is a patch for JDBC's getColumn() function that was broken /
flawed in the following ways:

1. Only returned columns that had a default value defined, rather than all
columns in a table
2. Used 2 * N + 1 queries to find out attributes, comments and typenames
for N columns.

By using some outer join syntax it is possible to retrieve all necessary
information in just one SQL statement. This means this version is only
suitable for PostgreSQL >= 7.1. Don't know whether that's a problem.

I've tested this function with current sources and 7.1.3 and patched both
jdbc1 and jdbc2. I haven't compiled nor tested the jdbc1 version though, as
I have no JDK 1.1 available.

Note the discussion in http://fts.postgresql.org/db/mw/msg.html?mid=1029626
regarding differences in obtaining comments on database object in 7.1 and
7.2. I was unable to use the following syntax (or similar ones):

select
     ...,
     description
from
     ...
     left outer join col_description(a.attrelid, a.attnum) description
order by
     c.relname, a.attnum;

(the error was parse error at or near '(') so I had to paste the actual
code for the col_description function into the left outer join. Maybe
someone who is more knowledgable about outer joins might provide me with a
better SQL statement.

Please review.

Regards,


Jeroen

Attachment

Re: Patch for broken JDBC's getColumn()

From
Rene Pijlman
Date:
On Tue, 28 Aug 2001 23:32:43 +0200, you wrote:
>Attached is a patch for JDBC's getColumn() function that was broken /
>flawed in the following ways:
>
>1. Only returned columns that had a default value defined, rather than
>all columns in a table

Aha, so that's it! I noticed it returned a funny subset of all
my columns, but I couldn't figure out exactly what columns were
excluded.

Thanks for the fix. I haven't checked your patch, but I believe
you :-)

Regards,
René Pijlman <rene@lab.applinet.nl>

Re: [PATCHES] Patch for broken JDBC's getColumn()

From
Barry Lind
Date:
The java part of this patch looks OK to me.  I don't know the internal
postgres table structures well enough to have any meaningfull comments
on the SQL statement.

As for this only supporting 7.1 and higher, that is OK IMHO.  We have
only really tried beginning with the 7.2 release to maintain full
backward compatibility.  Thus with 7.2 we should fully support running
against a 7.1 or 7.2 server, further back than this will work for many
things, but not everything.

thanks,
--Barry



Jeroen van Vianen wrote:
> Hi,
>
> Attached is a patch for JDBC's getColumn() function that was broken /
> flawed in the following ways:
>
> 1. Only returned columns that had a default value defined, rather than
> all columns in a table
> 2. Used 2 * N + 1 queries to find out attributes, comments and typenames
> for N columns.
>
> By using some outer join syntax it is possible to retrieve all necessary
> information in just one SQL statement. This means this version is only
> suitable for PostgreSQL >= 7.1. Don't know whether that's a problem.
>
> I've tested this function with current sources and 7.1.3 and patched
> both jdbc1 and jdbc2. I haven't compiled nor tested the jdbc1 version
> though, as I have no JDK 1.1 available.
>
> Note the discussion in
> http://fts.postgresql.org/db/mw/msg.html?mid=1029626 regarding
> differences in obtaining comments on database object in 7.1 and 7.2. I
> was unable to use the following syntax (or similar ones):
>
> select
>     ...,
>     description
> from
>     ...
>     left outer join col_description(a.attrelid, a.attnum) description
> order by
>     c.relname, a.attnum;
>
> (the error was parse error at or near '(') so I had to paste the actual
> code for the col_description function into the left outer join. Maybe
> someone who is more knowledgable about outer joins might provide me with
> a better SQL statement.
>
> Please review.
>
> Regards,
>
>
> Jeroen
>
>
> ------------------------------------------------------------------------
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
> subscribe-nomail command to majordomo@postgresql.org so that your
> message can get through to the mailing list cleanly
>
> DatabaseMetaData.diff.gz
>
> Content-Type:
>
> application/octet-stream
> Content-Encoding:
>
> base64
>
>
> ------------------------------------------------------------------------
> Part 1.3
>
> Content-Type:
>
> text/plain
> Content-Encoding:
>
> binary
>
>