Re: BUG #12053: Strange behavior for numeric types with unspecified precision-scale - Mailing list pgsql-bugs

From Tom Lane
Subject Re: BUG #12053: Strange behavior for numeric types with unspecified precision-scale
Date
Msg-id 15613.1417121313@sss.pgh.pa.us
Whole thread Raw
In response to BUG #12053: Strange behavior for numeric types with unspecified precision-scale  (tommaso.sala@cla-it.eu)
Responses Re: BUG #12053: Strange behavior for numeric types with unspecified precision-scale
List pgsql-bugs
Tommaso Sala <tommaso.sala@cla-it.eu> writes:
> We found that it is probably a bug in the data adapter (supplied by Devart
> http://www.devart.com/).

> But, once that weird value is written in DB by Devart adapter, there must
> be some kind of strange behavior also in Postgres.
> In fact, reading that value causes strange results:

> postgres=# select "WEIRD_FIELD" from "TABLE";
>  WEIRD_FIELD
> ----------------
>            0.00
> (1 row)


> postgres=# select "WEIRD_FIELD" + 0.01 from "TABLE";
>  ?column?
> ----------
>      0.01
> (1 row)


> postgres=# select "WEIRD_FIELD" * 2 from "TABLE";
>  ?column?
> ----------
>      0.00
> (1 row)


> postgres=# select "WEIRD_FIELD" + 0.001 from "TABLE";
>  ?column?
> ----------
>     0.002
> (1 row)


> postgres=# select 1 / "WEIRD_FIELD" from "TABLE";
>        ?column?
> -----------------------
>  1000.0000000000000000
> (1 row)


> postgres=# select TO_CHAR("WEIRD_FIELD", 'FM99999999D99999999') from
> "TABLE";
>  to_char
> ---------
>  .001
> (1 row)

> It's always 0.001 but if selected or multiplicated it becomes 0.00.

That's pretty weird, but it's hard to debug without access to
Devart's adapter.  Can you trace what the adapter is doing when
it inserts this value?  (log_statement = all would help.)

An idea that comes to mind is that maybe Devart is using binary
parameters and transmitting a value that isn't 100% legal; but
that's only a guess at this stage.  (It does look like numeric_recv
is pretty trusting about the input weight and dscale fields;
I'm not sure if a bad dscale would explain these symptoms, but
it seems possible.)

            regards, tom lane

pgsql-bugs by date:

Previous
From: Maxim Boguk
Date:
Subject: Re: BUG #12071: Stat collector went crasy (50MB/s constant writes)
Next
From: Tommaso Sala
Date:
Subject: Re: BUG #12053: Strange behavior for numeric types with unspecified precision-scale