Re: Re: What needs to be done?

Поиск
Список
Период
Сортировка
От Bruce Momjian
Тема Re: Re: What needs to be done?
Дата
Msg-id 200108022220.f72MKWb26129@candle.pha.pa.us
обсуждение исходный текст
Ответ на Re: What needs to be done?  (Barry Lind <barry@xythos.com>)
Ответы Patch for jdbc1 compile
Список pgsql-jdbc
Would someone summarize what items need to be added to the TODO list.

> Ricardo,
>
> There are many other issues with postgres blobs that will not allow you
> to acheive your goal easily.  You are going to need different
> implementations per database type to deal with the differences between
> blob implementations across different databases.  The one big hurdle you
> will have with postgres blobs is the fact that when you delete the row
> containing the blob, it doesn't delete the blob.  You have to issue a
> separate delete blob request.  This is very different than what happens
> in Oracle for example.  This can be automated by adding triggers to the
> table to do this, but by now you are very far from having a single code
> base (at least the code that creates the tables and triggers) that
> supports all of the different databases.
>
> thanks,
> --Barry
>
> Ricardo Maia wrote:
>
> >
> > So how whould I map the BLOB java type in the corresponding SQL type?
> >
> > I want to create a table with a BLOB attribute, but I want that my code can
> > run for PostgreSQL, Oracle and other BD that handles BLOBs.
> >
> > So first I had to map the BLOB in the corresponding BD SQL type and then
> > create the table with an attribute of that SQL type.
> >
> > Ricardo Maia
> >
> > On Thursday 02 August 2001 03:16, Barry Lind wrote:
> >
> >>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
> >>>>
> >>---------------------------(end of broadcast)---------------------------
> >>TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org
> >>
> >
> > ---------------------------(end of broadcast)---------------------------
> > TIP 2: you can get off all lists at once with the unregister command
> >     (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
> >
> >
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/users-lounge/docs/faq.html
>

--
  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

В списке pgsql-jdbc по дате отправления:

Предыдущее
От: "chris markiewicz"
Дата:
Сообщение: errors while getting large objects...
Следующее
От: "Stephen J. Thompson"
Дата:
Сообщение: Re: JDBC and blobs