5 messages in org.postgresql.pgsql-jdbcDiffrence between 8.0.3 and 8.1.3
FromSent OnAttachments
Yann PICHOTJul 3, 2006 8:19 am 
Kris JurkaJul 3, 2006 8:42 am 
Yann PICHOTJul 4, 2006 11:56 pm 
Kris JurkaJul 5, 2006 12:31 pm 
Yann PICHOTJul 6, 2006 6:16 am 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:Diffrence between 8.0.3 and 8.1.3Actions...
From:Yann PICHOT (ypic@gmail.com)
Date:Jul 3, 2006 8:19:12 am
List:org.postgresql.pgsql-jdbc

Hi,

I use this JDBC Driver : JDBC driver build number : 8.1.407-JDBC3 Server version : test do on 8.0.3 (linux), 8.1.3 (linux) and 8.1.2 (windows)

I have problem with the method getColumnDisplaySize in ResultSetMetaData class.

I have this java program:

import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties;

public class Test { public static void main(String[] args) { try { Properties props = new Properties(); Statement stmt = null;

Class.forName("org.postgresql.Driver"); props.put("user","xxxxx"); props.put("password","xxxxx"); Connection conn = DriverManager.getConnection("jdbc:postgresql://myhost/mydatabase", props);

try { String SQLselect = "SELECT col1, cast(' ' as varchar(3)) as mycol FROM mytable"; stmt = conn.createStatement(); ResultSet res = stmt.executeQuery(SQLselect); ResultSetMetaData resMD = res.getMetaData(); System.out.println(resMD.getColumnDisplaySize(2)); res.close(); stmt.close(); } catch ( Exception e ) { System.out.println("Error 1 : " + e.getMessage()); e.printStackTrace(); } finally { conn.close(); } } catch ( Exception e) { System.out.println("Error 2 : " + e.getMessage()); e.printStackTrace(); } } }

When i connect to 8.0.3 database the methode getColumnDisplaySize return 3, a good value When i connect to 8.1.2 or 8.1.3 database the methode getColumnDisplaySize return -5, a bad value.

I saw the source of the JDBC Driver and i saw the difference is in data read on socket in the method receiveFields in QueryExecutorImpl class. When i connect to 8.0.3 database, on this line of the method : ... int typeModifier = pgStream.ReceiveIntegerR(4); ... typeModifier is set to 7.

When i conenct to 8.1.2 or 8.1.3, typeModifier is set to -1

Is it normal ? Someone can explain this ?

Regards,