I've revised the patch to make Array.getArray() return a primitive array even when using the binary transfer format. I had to add extra code to force a statement to do a describe query before executing (previously it would only do this if the org.postgresql.forcebinary system property was set), as the QueryExecutorImpl needs the Field objects to be populated when sendBind is called, or the query results will be sent back in Text format. The PrimitivesTest unit test my patch adds verifies that a column is being returned in the correct (text or binary) format. I think this fixes an outstanding bug; I believe binary transfers will only be used if the system property is set, and the binaryTransfer JDBCUrl parameter is currently useless.