jdbc / getTables bug?
От | Laurette Cisneros |
---|---|
Тема | jdbc / getTables bug? |
Дата | |
Msg-id | 5.1.0.14.0.20010618114835.00a22a00@mail.office.nextbus.com обсуждение исходный текст |
Список | pgsql-jdbc |
Is anyone aware of a problem in the jdbc driver for the getTables() function when a view is present? I'm getting a null pointer exception: Exception caught. java.lang.NullPointerException java.lang.NullPointerException at org.postgresql.jdbc2.DatabaseMetaData.getTables(DatabaseMetaData.java:1707) at mettst.doDatabaseMetaData(mettst.java:20) at mettst.<init>(mettst.java:73) at mettst.main(mettst.java:126) I'm using Postgresql version 7.1 and 7.1.2 and this occurs in both. This exception only occurs if a view is present. Here's the complete java code to reproduce this (this problem was encountered when I ran the metadata example that came with the jdbc dirver code was run against my database. I narrowed down a test for this problem using this example). Any ideas? Thanks. ---------------------------- 8< -----------------------------8< ----------------------------- import java.io.*; import java.sql.*; import java.text.*; /** * Test jdbc view bug * To use it, simply have a database created. It will create some work tables * and run tests on them. */ public class mettst { Connection db; // The connection to the database Statement st; // Our statement to run queries with DatabaseMetaData dbmd; // This defines the structure of the database public void doDatabaseMetaData() throws SQLException { displayResult(dbmd.getTables(null,null,null,null)); } public void init() throws SQLException { System.out.println("Creating tables and view"); cleanup(); st.executeUpdate("create table x " + "(col1 text);"); st.executeUpdate("create view vx as " + "select col1 " + "from x;"); } public void cleanup() throws SQLException { System.out.println("Cleaning up..."); try { st.executeUpdate("drop table x;"); } catch(Exception ex) { // ignore any errors here } try { st.executeUpdate("drop view vx;"); } catch(Exception ex) { // ignore any errors here } } public mettst() throws ClassNotFoundException, FileNotFoundException, IOException, SQLException { String url = "jdbc:postgresql://derby:5432/mettst"; String usr = "user1"; String pwd = ""; // Load the driver Class.forName("org.postgresql.Driver"); // Connect to database System.out.println("Connecting to Database URL = " + url); db = DriverManager.getConnection(url, usr, pwd); System.out.println("getMetaData()"); dbmd = db.getMetaData(); st = db.createStatement(); // This prints the backend's version System.out.println("Connected to "+dbmd.getDatabaseProductName()+" "+dbmd.getDatabaseProductVersion()); init(); System.out.println("Now the test..."); // Now the test doDatabaseMetaData(); System.out.println("\nNow closing the connection"); st.close(); db.close(); cleanup(); } /** * This displays a result set. * Note: it closes the result once complete. */ public void displayResult(ResultSet rs) throws SQLException { System.out.println("Dispay ResultSet"); ResultSetMetaData rsmd = rs.getMetaData(); int count=0; // Print the result column names int cols = rsmd.getColumnCount(); for(int i=1;i<=cols;i++) System.out.print(rsmd.getColumnLabel(i)+(i<cols?"\t":"\n")); // now the results while(rs.next()) { count++; for(int i=1;i<=cols;i++) { Object o = rs.getObject(i); if(rs.wasNull()) System.out.print("{null}"+(i<cols?"\t":"\n")); else System.out.print(o.toString()+(i<cols?"\t":"\n")); } } System.out.println("Result returned "+count+" rows."); // finally close the result set rs.close(); } public static void main(String args[]) { System.out.println("PostgreSQL metdata tester v6.4 rev 1\n"); // This line outputs debug information to stderr. To enable this, simply // add a parameter to the command line if(args.length>0) DriverManager.setLogStream(System.err); // Now run the tests try { mettst test = new mettst(); } catch(Exception ex) { System.err.println("Exception caught.\n"+ex); ex.printStackTrace(); } } } Laurette Cisneros NextBus Information Systems laurette@nextbus.com (510) 420-3137 Why wait? www.nextbus.com
В списке pgsql-jdbc по дате отправления: