Обсуждение: 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