Обсуждение: Re: Simple bug in JDBC interface

Поиск
Список
Период
Сортировка

Re: Simple bug in JDBC interface

От
Bruce Momjian
Дата:
Peter, can you please comment on this?


> 
> Sorry if I'm e-mailing the wrong person.
> 
> This is to do with loading "exotic types" through JDBC.
> 
> It has to do with how it tries to load the class: (perhaps under old
> hierarchy?)
>     postgresql.geometric.PGpoint
> when in fact it SHOULD be loading
>     ORG.postgresql.geometric.PGpoint
>      ^^^
> 
> ///// EXAMPLE:
> 
> import java.io.*;
> import java.sql.*;
> 
> /* 
> This error:
> 
> Failed to create object for point java.lang.ClassNotFoundException:
> postgresql.geometric.PGpoint
>         at java.lang.Throwable.fillInStackTrace(Native Method)
>         at java.lang.Throwable.<init>(Throwable.java:82)
>         at java.lang.Exception.<init>(Exception.java:33)
>         at java.sql.SQLException.<init>(SQLException.java:98)
>         at
> org.postgresql.util.PSQLException.<init>(PSQLException.java:53)
>         at org.postgresql.Connection.getObject(Connection.java:624)
>         at org.postgresql.jdbc2.ResultSet.getObject(ResultSet.java:741)
>         at PostgresTest.<init>(PostgresTest.java:23)
>         at PostgresTest.main(PostgresTest.java:31)
> 
> 
> in psql:
> 
> testdb=# \d users
>  minid     | char(15) |
>  status    | char(3)  |
>  location  | point    |
> */
> 
> public class PostgresTest {
> 
>         public PostgresTest() 
>                 throws Exception
>         {
>                 Class.forName("org.postgresql.Driver");
>                 Connection c =
> DriverManager.getConnection("jdbc:postgresql://beryl:5432/testdb",
> "postgres", "");
>                 Statement s = c.createStatement();
>                 BufferedReader r = new BufferedReader(new
> InputStreamReader(System.in));        
>                 // while (true) {
>                         // System.out.print("Enter query: ");
>                         // System.out.flush();
>                         String query;
>                         //query = r.readLine();
>                         query = "select * from users";
>                         ResultSet res = s.executeQuery(query);
>                         if (res != null) {
>                                 while (res.next()) {
>                                         System.out.println("" +
> res.getString(1) + " " + res.getString(2) + " " + res.getObject(3));
>                                 }
>                         }
>                 //}
>         }
> 
>         public static void main(String args[]) {
>                 try {
>                         PostgresTest pt = new PostgresTest();
>                 } catch (Exception e) {
>                         e.printStackTrace();
>                 }
>         }
> 
> }
> 


--  Bruce Momjian                        |  http://www.op.net/~candle 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,
Pennsylvania19026
 


Re: Re: Simple bug in JDBC interface

От
Peter Mount
Дата:
On Fri, 2 Jun 2000, Bruce Momjian wrote:

> Peter, can you please comment on this?

I'll check. It may be that org. is being missed off somewhere (although
when I did a grep to check that all references to postgresql were prefixed
with org. I didn't find any).

PS: On another subject, I've found the errant DataSource class, but I'm
having problems with cvs (postgresql.org doesn't like my password).

I'll check on this as soon as I get cvs working.

Peter

> > Sorry if I'm e-mailing the wrong person.
> > 
> > This is to do with loading "exotic types" through JDBC.
> > 
> > It has to do with how it tries to load the class: (perhaps under old
> > hierarchy?)
> >     postgresql.geometric.PGpoint
> > when in fact it SHOULD be loading
> >     ORG.postgresql.geometric.PGpoint
> >      ^^^
> > 
> > ///// EXAMPLE:
> > 
> > import java.io.*;
> > import java.sql.*;
> > 
> > /* 
> > This error:
> > 
> > Failed to create object for point java.lang.ClassNotFoundException:
> > postgresql.geometric.PGpoint
> >         at java.lang.Throwable.fillInStackTrace(Native Method)
> >         at java.lang.Throwable.<init>(Throwable.java:82)
> >         at java.lang.Exception.<init>(Exception.java:33)
> >         at java.sql.SQLException.<init>(SQLException.java:98)
> >         at
> > org.postgresql.util.PSQLException.<init>(PSQLException.java:53)
> >         at org.postgresql.Connection.getObject(Connection.java:624)
> >         at org.postgresql.jdbc2.ResultSet.getObject(ResultSet.java:741)
> >         at PostgresTest.<init>(PostgresTest.java:23)
> >         at PostgresTest.main(PostgresTest.java:31)
> > 
> > 
> > in psql:
> > 
> > testdb=# \d users
> >  minid     | char(15) |
> >  status    | char(3)  |
> >  location  | point    |
> > */
> > 
> > public class PostgresTest {
> > 
> >         public PostgresTest() 
> >                 throws Exception
> >         {
> >                 Class.forName("org.postgresql.Driver");
> >                 Connection c =
> > DriverManager.getConnection("jdbc:postgresql://beryl:5432/testdb",
> > "postgres", "");
> >                 Statement s = c.createStatement();
> >                 BufferedReader r = new BufferedReader(new
> > InputStreamReader(System.in));        
> >                 // while (true) {
> >                         // System.out.print("Enter query: ");
> >                         // System.out.flush();
> >                         String query;
> >                         //query = r.readLine();
> >                         query = "select * from users";
> >                         ResultSet res = s.executeQuery(query);
> >                         if (res != null) {
> >                                 while (res.next()) {
> >                                         System.out.println("" +
> > res.getString(1) + " " + res.getString(2) + " " + res.getObject(3));
> >                                 }
> >                         }
> >                 //}
> >         }
> > 
> >         public static void main(String args[]) {
> >                 try {
> >                         PostgresTest pt = new PostgresTest();
> >                 } catch (Exception e) {
> >                         e.printStackTrace();
> >                 }
> >         }
> > 
> > }
> > 
> 
> 
> -- 
>   Bruce Momjian                        |  http://www.op.net/~candle
>   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
> 

--      Peter T Mount peter@retep.org.uk     Main Homepage: http://www.retep.org.uk
PostgreSQL JDBC Faq: http://www.retep.org.uk/postgresJava PDF Generator: http://www.retep.org.uk/pdf