From: | Dave Cramer <davecramer(at)postgres(dot)rocks> |
---|---|
To: | Edoardo Panfili <edoardopa(at)gmail(dot)com> |
Cc: | pgsql-general(at)lists(dot)postgresql(dot)org, "Peter J(dot) Holzer" <hjp-pgsql(at)hjp(dot)at> |
Subject: | Re: The same prepared query yield "-1" the first six times and then "-1.0" |
Date: | 2023-08-21 19:37:37 |
Message-ID: | CADK3HH+2vG+-7Umic+v0kdTmQ-N8AejsX6C62Z1e03+Fu6kvFg@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On Mon, 21 Aug 2023 at 14:42, Edoardo Panfili <edoardopa(at)gmail(dot)com> wrote:
>
>
> > Il giorno 21 ago 2023, alle ore 20:13, Peter J. Holzer <hjp-pgsql(at)hjp(dot)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(at)testdb LOG: execute
> <unnamed>: SET extra_float_digits = 3
> >> 2023-08-21 11:51:50.634 CEST [1511] user(at)testdb LOG: execute
> <unnamed>: SET application_name = 'PostgreSQL JDBC Driver'
> >> 2023-08-21 11:51:50.644 CEST [1511] user(at)testdb LOG: execute
> <unnamed>: SELECT dim1 FROM number WHERE name='first'
> >> 2023-08-21 11:51:50.648 CEST [1511] user(at)testdb LOG: execute
> <unnamed>: SELECT dim1 FROM number WHERE name='first'
> >> 2023-08-21 11:51:50.649 CEST [1511] user(at)testdb LOG: execute
> <unnamed>: SELECT dim1 FROM number WHERE name='first'
> >> 2023-08-21 11:51:50.650 CEST [1511] user(at)testdb LOG: execute
> <unnamed>: SELECT dim1 FROM number WHERE name='first'
> >> 2023-08-21 11:51:50.651 CEST [1511] user(at)testdb LOG: execute S_1:
> SELECT dim1 FROM number WHERE name='first'
> >> 2023-08-21 11:51:50.651 CEST [1511] user(at)testdb LOG: execute S_1:
> SELECT dim1 FROM number WHERE name='first'
> >> 2023-08-21 11:51:50.653 CEST [1511] user(at)testdb LOG: execute S_1:
> SELECT dim1 FROM number WHERE name='first'
> >> 2023-08-21 11:51:50.653 CEST [1511] user(at)testdb LOG: execute S_1:
> SELECT dim1 FROM number WHERE name='first'
> >> 2023-08-21 11:51:50.654 CEST [1511] user(at)testdb LOG: execute S_1:
> SELECT dim1 FROM number WHERE name='first'
> >> 2023-08-21 11:51:50.656 CEST [1511] user(at)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.
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, Or remove double from
binary transfer.
Regards,
Dave
From | Date | Subject | |
---|---|---|---|
Next Message | Ron | 2023-08-21 20:00:31 | Re: The same prepared query yield "-1" the first six times and then "-1.0" |
Previous Message | Dave Cramer | 2023-08-21 19:32:45 | Re: The same prepared query yield "-1" the first six times and then "-1.0" |