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 по дате отправления: