Обсуждение: Fix for broken JDBC's getColumn() (take 2)
Hi, Per the recent discussion there's been some code changes in JDBC's DatabaseMetaData.getColumn(). I proposed a patch that would change the number of queries to find out all columns in a table from 2 * N + 1 to 1 (N being the number of columns reported) by using some outer joins. I also fixed the fact that getColumns() only returned columns that had a default defined. OTOH, I did not use to change the code required for obtaining a column's remarks (by using col_description() for 7.2 and requested by Tom Lane). Finally, I have found a way to get all the column details in a single query *and* use col_description() for 7.2 servers. A patch is attached. It overrules René Pijlman's fix for this that was committed just today, but still used N + 1 queries (sorry René ;-) ) I also fixed the return values for TABLE_CAT and TABLE_SCHEM from "" to null, to be more standard compliant (and requested in René's mail found at http://fts.postgresql.org/db/mw/msg.html?mid=1034253). As always, the JDBC1 version has not been tested as I have no JDK 1.1 available. Please review, Jeroen
Вложения
Hi, What's the status of this patch I sent a week ago? Thanks, Jeroen > -----Original Message----- > From: Jeroen van Vianen [mailto:jeroen.van.vianen@satama.com] > Sent: Monday, September 10, 2001 20:01 > To: pgsql-jdbc@postgresql.org; pgsql-patches@postgresql.org > Subject: [JDBC] Fix for broken JDBC's getColumn() (take 2) > > > Hi, > > Per the recent discussion there's been some code changes in JDBC's > DatabaseMetaData.getColumn(). I proposed a patch that would > change the > number of queries to find out all columns in a table from 2 * > N + 1 to 1 (N > being the number of columns reported) by using some outer > joins. I also > fixed the fact that getColumns() only returned columns that > had a default > defined. OTOH, I did not use to change the code required for > obtaining a > column's remarks (by using col_description() for 7.2 and > requested by Tom > Lane). > > Finally, I have found a way to get all the column details in > a single query > *and* use col_description() for 7.2 servers. A patch is attached. It > overrules René Pijlman's fix for this that was committed just > today, but > still used N + 1 queries (sorry René ;-) ) > > I also fixed the return values for TABLE_CAT and TABLE_SCHEM > from "" to > null, to be more standard compliant (and requested in René's > mail found at > http://fts.postgresql.org/db/mw/msg.html?mid=1034253). > > As always, the JDBC1 version has not been tested as I have no JDK 1.1 > available. > > Please review, > > > Jeroen > >
Your patch has been added to the PostgreSQL unapplied patches list at:
http://candle.pha.pa.us/cgi-bin/pgpatches
I will try to apply it within the next 48 hours.
> Hi,
>
> Per the recent discussion there's been some code changes in JDBC's
> DatabaseMetaData.getColumn(). I proposed a patch that would change the
> number of queries to find out all columns in a table from 2 * N + 1 to 1 (N
> being the number of columns reported) by using some outer joins. I also
> fixed the fact that getColumns() only returned columns that had a default
> defined. OTOH, I did not use to change the code required for obtaining a
> column's remarks (by using col_description() for 7.2 and requested by Tom
> Lane).
>
> Finally, I have found a way to get all the column details in a single query
> *and* use col_description() for 7.2 servers. A patch is attached. It
> overrules Ren? Pijlman's fix for this that was committed just today, but
> still used N + 1 queries (sorry Ren? ;-) )
>
> I also fixed the return values for TABLE_CAT and TABLE_SCHEM from "" to
> null, to be more standard compliant (and requested in Ren?'s mail found at
> http://fts.postgresql.org/db/mw/msg.html?mid=1034253).
>
> As always, the JDBC1 version has not been tested as I have no JDK 1.1
> available.
>
> Please review,
>
>
> Jeroen
[ Attachment, skipping... ]
>
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Don't 'kill -9' the postmaster
--
Bruce Momjian | http://candle.pha.pa.us
pgman@candle.pha.pa.us | (610) 853-3000
+ If your life is a hard drive, | 830 Blythe Avenue
+ Christ can be your backup. | Drexel Hill, Pennsylvania 19026
Patch applied. Thanks. > Hi, > > Per the recent discussion there's been some code changes in JDBC's > DatabaseMetaData.getColumn(). I proposed a patch that would change the > number of queries to find out all columns in a table from 2 * N + 1 to 1 (N > being the number of columns reported) by using some outer joins. I also > fixed the fact that getColumns() only returned columns that had a default > defined. OTOH, I did not use to change the code required for obtaining a > column's remarks (by using col_description() for 7.2 and requested by Tom > Lane). > > Finally, I have found a way to get all the column details in a single query > *and* use col_description() for 7.2 servers. A patch is attached. It > overrules Ren? Pijlman's fix for this that was committed just today, but > still used N + 1 queries (sorry Ren? ;-) ) > > I also fixed the return values for TABLE_CAT and TABLE_SCHEM from "" to > null, to be more standard compliant (and requested in Ren?'s mail found at > http://fts.postgresql.org/db/mw/msg.html?mid=1034253). > > As always, the JDBC1 version has not been tested as I have no JDK 1.1 > available. > > Please review, > > > Jeroen [ Attachment, skipping... ] > > ---------------------------(end of broadcast)--------------------------- > TIP 4: Don't 'kill -9' the postmaster -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000 + If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania 19026