> Il giorno 21 ago 2023, alle ore 21:37, Dave Cramer 
> <davecramer@postgres.rocks> ha scritto:
> 
> 
> 
> On Mon, 21 Aug 2023 at 14:42, Edoardo Panfili <edoard...@gmail.com 
> <mailto:edoard...@gmail.com>> wrote:
>> 
>> 
>> > Il giorno 21 ago 2023, alle ore 20:13, Peter J. Holzer <hjp-pg...@hjp.at 
>> > <mailto:hjp-pg...@hjp.at>> ha scritto:
>> > 
>> > On 2023-08-21 17:27:20 +0200, Edoardo Panfili wrote:
>> >> The attended result was a sequence of ten equal values but this is the 
>> >> actual result:
>> >> p: -1
>> >> p: -1
>> >> p: -1
>> >> p: -1
>> >> p: -1
>> >> p: -1.0
>> >> p: -1.0
>> >> p: -1.0
>> >> p: -1.0
>> >> p: -1.0
>> > [...]
>> >> 2023-08-21 11:51:50.633 CEST [1511] user@testdb LOG: execute <unnamed>: 
>> >> SET extra_float_digits = 3
>> >> 2023-08-21 11:51:50.634 CEST [1511] user@testdb LOG: execute <unnamed>: 
>> >> SET application_name = 'PostgreSQL JDBC Driver'
>> >> 2023-08-21 11:51:50.644 CEST [1511] user@testdb LOG: execute <unnamed>: 
>> >> SELECT dim1 FROM number WHERE name='first'
>> >> 2023-08-21 11:51:50.648 CEST [1511] user@testdb LOG: execute <unnamed>: 
>> >> SELECT dim1 FROM number WHERE name='first'
>> >> 2023-08-21 11:51:50.649 CEST [1511] user@testdb LOG: execute <unnamed>: 
>> >> SELECT dim1 FROM number WHERE name='first'
>> >> 2023-08-21 11:51:50.650 CEST [1511] user@testdb LOG: execute <unnamed>: 
>> >> SELECT dim1 FROM number WHERE name='first'
>> >> 2023-08-21 11:51:50.651 CEST [1511] user@testdb LOG: execute S_1: SELECT 
>> >> dim1 FROM number WHERE name='first'
>> >> 2023-08-21 11:51:50.651 CEST [1511] user@testdb LOG: execute S_1: SELECT 
>> >> dim1 FROM number WHERE name='first'
>> >> 2023-08-21 11:51:50.653 CEST [1511] user@testdb LOG: execute S_1: SELECT 
>> >> dim1 FROM number WHERE name='first'
>> >> 2023-08-21 11:51:50.653 CEST [1511] user@testdb LOG: execute S_1: SELECT 
>> >> dim1 FROM number WHERE name='first'
>> >> 2023-08-21 11:51:50.654 CEST [1511] user@testdb LOG: execute S_1: SELECT 
>> >> dim1 FROM number WHERE name='first'
>> >> 2023-08-21 11:51:50.656 CEST [1511] user@testdb LOG: execute S_1: SELECT 
>> >> dim1 FROM number WHERE name=‘first'
>> > 
>> > Are these outputs from the same run?
>> Yes
>> 
>> > 
>> > I notice that the output from the program switches after 5 queries from
>> > "-1" to "-1-0", but the logged query name switches after 4 queries from
>> > "<unnamed>" to "S_1”.
>> 
>> You’re right.  It seem a JDBC side problem. I am doing some tests using 
>> suggestions from pgsql-jdbc list.
>> 
>> What sounds strange to me is that switching from “mode_X” to  “mode_Y” I 
>> obtain different representation of the same value,
>> 
>> I know the value is semantically the same.. but… in some way I like to see.. 
>> "a perfect postgresql env” (as it absolutely is)
>> 
>> Edoardo
>> 
> 
> I have confirmed that this behaviour is by design either by postgres or the 
> driver. When postgres provides us the data using text mode we see -1 
> 
> (psql)
> select * from number ;
>  name  | dim1
> -------+------
>  first |   -1 
> 
> This is the way the data is presented by the text output function.
And I expected to obtain the same from the JDBC connection 


> In binary mode we see -1.0. This is an artifact of the binary output function.
> 
> If ResultSet.getDouble is used the data is the same ... -1 for both text and 
> binary
> 
> Using getString we see the problem.
> 
> So you have a few options to stop this: Set prepareThreshold to 0 and the 
> driver will not switch to named statements or binary,
Properties props = new Properties();
props.setProperty("prepareThreshold", "0");
Connection conn = DriverManager.getConnection(
        
"jdbc:postgresql://192.168.64.7:5432/testdb?user=user&password=password”, 
props);

Obtains “-1” all the times

> Or remove double from binary transfer.

Thank you
Edoardo

Reply via email to