Re: What needs to be done? - Mailing list pgsql-jdbc

From Barry Lind
Subject Re: What needs to be done?
Date
Msg-id 3B68B80D.9080506@xythos.com
Whole thread Raw
In response to What needs to be done?  (Rene Pijlman <rpijlman@wanadoo.nl>)
Responses Re: Re: What needs to be done?  (Ricardo Maia <rmaia@criticalsoftware.com>)
Re: Re: What needs to be done?  (Gunnar Rønning <gunnar@polygnosis.com>)
List pgsql-jdbc
I actually think the response for 'oid' is correct.  It reports the oid
as java type integer (which is the real datatype of the value stored).
A column of type oid can be used for may different things.  It can be
used for blobs, but not all columns of type oid are used for blobs.
Another use of a column of type oid is to store foreign keys from one
table to another.  Since all tables have a builtin column named 'oid' of
type oid, it is very convenient to use this value in foreign keys on
other tables.  Assuming that oid = blob would break those applications.

I hope everyone that uses postgresql and jdbc understands that BLOB
support is one area with many problems, some of which can be fixed in
the JDBC code, but others that will require better support in the
underlying database.

thanks,
--Barry

Ricardo Maia wrote:

> For example when I call the method:
>
> DatabaseMetaData.getTypeInfo()
>
> I whould expect to see the SQL Type BLOB mapped as an oid.
>
> see attach
>
> Ricardo Maia
>
>
> On Wednesday 01 August 2001 23:29, Rene Pijlman wrote:
>
>>On Wed, 1 Aug 2001 22:49:40 +0100, Ricardo Maia wrote:
>>
>>>The problem is that, as the PostgreSQL JDBC driver doesn't
>>>follow JDBC Standard I had to write some specific code for
>>>use it with PostgreSQL DB.
>>>
>>So what exactly are the deviations from the standard that you
>>encountered?
>>
>>Regards,
>>René Pijlman
>>
>>---------------------------(end of broadcast)---------------------------
>>TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org
>>
>>
>>------------------------------------------------------------------------
>>
>>package databasetest;
>>
>>import java.sql.*;
>>
>>public class GetTypesInfo {
>>
>>  public static void main(String args[ ]) {
>>
>>    String url = "jdbc:postgresql://127.0.0.1/test";
>>
>>    Connection con;
>>
>>    DatabaseMetaData dbmd;
>>
>>    try {
>>      Class.forName("org.postgresql.Driver");
>>    } catch(java.lang.ClassNotFoundException e) {
>>      System.err.print("ClassNotFoundException: ");
>>      System.err.println(e.getMessage());
>>    }
>>
>>    try {
>>      con = DriverManager.getConnection(url,"bobby", "tareco");
>>
>>      dbmd = con.getMetaData();
>>
>>      ResultSet rs = dbmd.getTypeInfo();
>>
>>      while (rs.next()) {
>>
>>        String typeName = rs.getString("TYPE_NAME");
>>
>>        short dataType = rs.getShort("DATA_TYPE");
>>
>>        String createParams = rs.getString("CREATE_PARAMS");
>>
>>        int nullable = rs.getInt("NULLABLE");
>>
>>        boolean caseSensitive = rs.getBoolean("CASE_SENSITIVE");
>>
>>        if(dataType != java.sql.Types.OTHER)
>>        {
>>          System.out.println("DBMS type " + typeName + ":");
>>          System.out.println("     java.sql.Types:  "  + typeName(dataType));
>>          System.out.print("     parameters used to create: ");
>>          System.out.println(createParams);
>>          System.out.println("     nullable?:  "  + nullable);
>>          System.out.print("     case sensitive?:  ");
>>          System.out.println(caseSensitive);
>>          System.out.println("");
>>        }
>>      }
>>
>>      con.close();
>>    } catch(SQLException ex) {
>>      System.err.println("SQLException: " + ex.getMessage());
>>    }
>>  }
>>
>>
>>  public static String typeName(int i)
>>  {
>>    switch(i){
>>      case java.sql.Types.ARRAY: return "ARRAY";
>>      case java.sql.Types.BIGINT: return "BIGINT";
>>      case java.sql.Types.BINARY: return "BINARY";
>>      case java.sql.Types.BIT: return "BIT";
>>      case java.sql.Types.BLOB: return "BLOB";
>>      case java.sql.Types.CHAR: return "CHAR";
>>      case java.sql.Types.CLOB: return "CLOB";
>>      case java.sql.Types.DATE: return "DATE";
>>      case java.sql.Types.DECIMAL: return "DECIMAL";
>>      case java.sql.Types.DISTINCT: return "DISTINCT";
>>      case java.sql.Types.DOUBLE: return "DOUBLE";
>>      case java.sql.Types.FLOAT: return "FLOAT";
>>      case java.sql.Types.INTEGER: return "INTEGER";
>>      case java.sql.Types.JAVA_OBJECT: return "JAVA_OBJECT";
>>      case java.sql.Types.LONGVARBINARY: return "LONGVARBINARY";
>>      case java.sql.Types.LONGVARCHAR: return "LONGVARCHAR";
>>      case java.sql.Types.NULL: return "NULL";
>>      case java.sql.Types.NUMERIC: return "NUMERIC";
>>      case java.sql.Types.OTHER: return "OTHER";
>>      case java.sql.Types.REAL: return "REAL";
>>      case java.sql.Types.REF: return "REF";
>>      case java.sql.Types.SMALLINT: return "SMALLINT";
>>      case java.sql.Types.STRUCT: return "STRUCT";
>>      case java.sql.Types.TIME: return "TIME";
>>      case java.sql.Types.TIMESTAMP: return "TIMESTAMP";
>>      case java.sql.Types.TINYINT: return "TINYINT";
>>      case java.sql.Types.VARBINARY: return "VARBINARY";
>>      case java.sql.Types.VARCHAR: return "VARCHAR";
>>      default: return "";
>>    }
>>  }
>>}
>>
>>
>>------------------------------------------------------------------------
>>
>>
>>---------------------------(end of broadcast)---------------------------
>>TIP 5: Have you checked our extensive FAQ?
>>
>>http://www.postgresql.org/users-lounge/docs/faq.html
>>
>> GetTypesInfo.java
>>
>> Content-Type:
>>
>> text/x-java
>> Content-Encoding:
>>
>> base64
>>
>>
>> ------------------------------------------------------------------------
>> Part 1.3
>>
>> Content-Type:
>>
>> text/plain
>> Content-Encoding:
>>
>> binary
>>
>>



pgsql-jdbc by date:

Previous
From: Barry Lind
Date:
Subject: Re: What needs to be done?
Next
From: Barry Lind
Date:
Subject: Re: What needs to be done?