RE: [Bug Fix]ECPG: cancellation of significant digits on ECPG

Higuchi, Daisuke <higuchi.daisuke@jp.fujitsu.com>

From: "Higuchi, Daisuke" <higuchi.daisuke@jp.fujitsu.com>
To: 'Tom Lane' <tgl@sss.pgh.pa.us>
Cc: 'Dmitry Dolgov' <9erthalion6@gmail.com>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2018-11-14T00:53:48Z
Lists: pgsql-hackers
From: Tom Lane [mailto:tgl@sss.pgh.pa.us] 
>I took a quick look at this. 
Thank you for review. 

>So I think that we ought to unconditionally make the sqlda value's digit 
>buffer look just like the one we're copying, even when ndigits = 0, 
>which just requires removing the tests on ndigits.

I agree with you. Seeing this thread[1], 'if (ndigits = 0)' was introduced only to avoid memcpy() crash. I do not know this solution was best or not, but no crash occurs in the current version. So, I also think 'if (ndigits = 0)' should be removed.

>In short, the attached.
Thank you for updating. This patch looks good to me. 

[1]
https://www.postgresql.org/message-id/4EC825F3.5080504%40cybertec.at

Regards,
Daisuke Higuchi




Commits

  1. Second try at fixing numeric data passed through an ECPG SQLDA.

  2. Fix incorrect results for numeric data passed through an ECPG SQLDA.