Re: Binary transfer not working - Mailing list pgsql-jdbc
From | Dave Cramer |
---|---|
Subject | Re: Binary transfer not working |
Date | |
Msg-id | CADK3HHLo9LWZJycbeMTQipeaWj8ugogoV6bTEQaZUpoEv8243w@mail.gmail.com Whole thread Raw |
In response to | Binary transfer not working (Alex Ignatov <alexign@gmail.com>) |
List | pgsql-jdbc |
Alex,
You are not doing anything wrong. Turns out forceBinaryTransfer doesn't work because:
public void setPrepareThreshold(int newThreshold) throws SQLException {
checkClosed();
if (newThreshold < 0) {
forceBinaryTransfers = true;
newThreshold = 1;
}
else
forceBinaryTransfers = false;
this.m_prepareThreshold = newThreshold;
}
I'm trying to figure out if we should ever reset forceBinaryTransfers
I removed the line in italics above in the snapshot https://oss.sonatype.org/content/repositories/snapshots/org/postgresql/postgresql/9.4-1201-jdbc41-SNAPSHOT/
Let me know if that works
On 6 April 2015 at 10:38, Alex Ignatov <alexign@gmail.com> wrote:
Hello!
Im testing jdbc binary transfer mode but i can't make it works as it should.
Network packet dump always shows me that for example "dtrntran" TIMESTAMP column is transfering in text and not in binary representation as it should.
Debug log shows me that binary mode is on, but regardless org.postgresql.forceBinary=false/true it is always text.
What am i doing wrong?
jdbc version - postgresql-9.4-1201.jdbc4.jar
postgresql version - 9.4.1
This is my test code. javac vm arguments is -Dorg.postgresql.forceBinary=true
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
import java.sql.Statement;
import java.sql.Timestamp;
public class TestMe {
private static java.sql.Timestamp getCurrentTimeStamp() {
java.util.Date today = new java.util.Date();
return new java.sql.Timestamp(today.getTime());
}
public static void main(String[] args) throws SQLException {
String url = "jdbc:postgresql://thunder:5432/test";
Connection conn = null;
org.postgresql.Driver.setLogLevel(org.postgresql.Driver.DEBUG);
Properties connectionProps = new Properties();
connectionProps.put("user", "***");
connectionProps.put("password", "***");
connectionProps.put("loglevel", "2");
conn = DriverManager.getConnection(url, connectionProps);
select(conn);
}
private static void select(Connection conn) {
try {
PreparedStatement fs = conn.prepareStatement("SELECT dtrntran FROM trn order by itrnnum limit 1");
ResultSet rs = fs.executeQuery();
for (int i = 0; i < 1; i++) {
rs.next();
}
rs.close();
System.out.println("org.postgresql.forceBinary= "
+ Boolean.getBoolean("org.postgresql.forceBinary"));
} catch (SQLException e) {
}
}
}
pgsql-jdbc by date: