? Pgjdbc.iml ? PostgreSQL JDB driver.ipr ? PostgreSQL JDB driver.iws ? mychanges.patch ? out Index: org/postgresql/jdbc2/AbstractJdbc2DatabaseMetaData.java =================================================================== RCS file: /cvsroot/jdbc/pgjdbc/org/postgresql/jdbc2/AbstractJdbc2DatabaseMetaData.java,v retrieving revision 1.44 diff -c -r1.44 AbstractJdbc2DatabaseMetaData.java *** org/postgresql/jdbc2/AbstractJdbc2DatabaseMetaData.java 8 Jan 2008 06:56:28 -0000 1.44 --- org/postgresql/jdbc2/AbstractJdbc2DatabaseMetaData.java 7 Apr 2008 10:53:12 -0000 *************** *** 3633,3639 **** Field f[] = new Field[18]; Vector v = new Vector(); // The new ResultSet tuple stuff ! f[0] = new Field("TYPE_NAME", Oid.VARCHAR); f[1] = new Field("DATA_TYPE", Oid.INT2); f[2] = new Field("PRECISION", Oid.INT4); --- 3633,3640 ---- Field f[] = new Field[18]; Vector v = new Vector(); // The new ResultSet tuple stuff ! TypeInfoCache typeInfoCache = new TypeInfoCache(connection); ! f[0] = new Field("TYPE_NAME", Oid.VARCHAR); f[1] = new Field("DATA_TYPE", Oid.INT2); f[2] = new Field("PRECISION", Oid.INT4); *************** *** 3714,3719 **** --- 3715,3725 ---- tuple1[11] = bt; v.addElement(tuple1); } + else if (typeInfoCache.requiresQuoting(typeOid)) + { + tuple[3] = connection.encodeString("'"); + tuple[4] = connection.encodeString("'"); + } } rs.close(); Index: org/postgresql/jdbc2/TypeInfoCache.java =================================================================== RCS file: /cvsroot/jdbc/pgjdbc/org/postgresql/jdbc2/TypeInfoCache.java,v retrieving revision 1.12 diff -c -r1.12 TypeInfoCache.java *** org/postgresql/jdbc2/TypeInfoCache.java 8 Jan 2008 06:56:29 -0000 1.12 --- org/postgresql/jdbc2/TypeInfoCache.java 7 Apr 2008 10:53:13 -0000 *************** *** 564,567 **** --- 564,582 ---- } } + public boolean requiresQuoting(int oid) throws SQLException { + String pgType = getPGType(oid); + int sqlType = getSQLType(pgType); + switch (sqlType) { + case Types.CHAR: + case Types.VARCHAR: + case Types.DATE: + case Types.TIME: + case Types.TIMESTAMP: + return true; + default: + return false; + } + } + }