Re: Potential issue in ecpg-informix decimal converting functions

Daniel Gustafsson <daniel@yesql.se>

From: Daniel Gustafsson <daniel@yesql.se>
To: a.imamov@postgrespro.ru
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2024-02-23T10:44:24Z
Lists: pgsql-hackers
> On 22 Feb 2024, at 17:54, a.imamov@postgrespro.ru wrote:

> PGTYPESnumeric_to_int() and PGTYPESnumeric_to_long()
> functions return only 0 or -1. So ECPG_INFORMIX_NUM_OVERFLOW can never
> be returned.

Indeed, this looks like an oversight.

> I think dectoint(), dectolong() and PGTYPESnumeric_to_int() functions
> should be a little bit different like in proposing patch.
> What do you think?

-        Convert a variable to type decimal to an integer.
+        Convert a variable of type decimal to an integer.
While related, this should be committed and backpatched regardless.

+       int                     errnum = 0;
Stylistic nit, we typically don't initialize a variable which cannot be
accessed before being set.

Overall the patch looks sane, please register it for the next commitfest to
make it's not missed.

--
Daniel Gustafsson




Commits

  1. doc: Document error handling in PGTYPESnumeric_to_long

  2. ecpg: Fix return code for overflow in numeric conversion