Commit deaad934 authored by Dave Cramer's avatar Dave Cramer

Patch from Cormac Twomey

fixes getIndexInfo throwing NullPointerException
fixes getIndexInfo improper results when multiple key indexs are used
parent 0786c61c
...@@ -13,7 +13,7 @@ import org.postgresql.util.PSQLException; ...@@ -13,7 +13,7 @@ import org.postgresql.util.PSQLException;
/* /*
* This class provides information about the database as a whole. * This class provides information about the database as a whole.
* *
* $Id: DatabaseMetaData.java,v 1.41 2002/01/18 17:21:51 davec Exp $ * $Id: DatabaseMetaData.java,v 1.42 2002/02/22 02:40:09 davec Exp $
* *
* <p>Many of the methods here return lists of information in ResultSets. You * <p>Many of the methods here return lists of information in ResultSets. You
* can use the normal ResultSet methods such as getString and getInt to * can use the normal ResultSet methods such as getString and getInt to
...@@ -2791,13 +2791,14 @@ public class DatabaseMetaData implements java.sql.DatabaseMetaData ...@@ -2791,13 +2791,14 @@ public class DatabaseMetaData implements java.sql.DatabaseMetaData
{ {
columnOrdinals[o++] = Integer.parseInt(stok.nextToken()); columnOrdinals[o++] = Integer.parseInt(stok.nextToken());
} }
java.sql.ResultSet columnNameRS = connection.ExecSQL("select a.attname FROM pg_attribute a WHERE a.attrelid = " + r.getInt(9));
for (int i = 0; i < columnOrdinals.length; i++) for (int i = 0; i < columnOrdinals.length; i++)
{ {
byte [] [] tuple = new byte [13] []; byte [] [] tuple = new byte [13] [];
tuple[0] = "".getBytes(); tuple[0] = "".getBytes();
tuple[1] = "".getBytes(); tuple[1] = "".getBytes();
tuple[2] = r.getBytes(1); tuple[2] = r.getBytes(1);
tuple[3] = r.getBoolean(2) ? "f".getBytes() : "t".getBytes(); tuple[3] = r.getBoolean(2) ? "false".getBytes() : "true".getBytes();
tuple[4] = null; tuple[4] = null;
tuple[5] = r.getBytes(3); tuple[5] = r.getBytes(3);
tuple[6] = r.getBoolean(4) ? tuple[6] = r.getBoolean(4) ?
...@@ -2806,9 +2807,14 @@ public class DatabaseMetaData implements java.sql.DatabaseMetaData ...@@ -2806,9 +2807,14 @@ public class DatabaseMetaData implements java.sql.DatabaseMetaData
Integer.toString(tableIndexHashed).getBytes() : Integer.toString(tableIndexHashed).getBytes() :
Integer.toString(tableIndexOther).getBytes(); Integer.toString(tableIndexOther).getBytes();
tuple[7] = Integer.toString(i + 1).getBytes(); tuple[7] = Integer.toString(i + 1).getBytes();
java.sql.ResultSet columnNameRS = connection.ExecSQL("select a.attname FROM pg_attribute a WHERE (a.attnum = " + columnOrdinals[i] + ") AND (a.attrelid = " + r.getInt(9) + ")"); if (columnNameRS.next())
columnNameRS.next(); {
tuple[8] = columnNameRS.getBytes(1); tuple[8] = columnNameRS.getBytes(1);
}
else
{
tuple[8] = "".getBytes();
}
tuple[9] = null; // sort sequence ??? tuple[9] = null; // sort sequence ???
tuple[10] = r.getBytes(7); // inexact tuple[10] = r.getBytes(7); // inexact
tuple[11] = r.getBytes(8); tuple[11] = r.getBytes(8);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment