Hi,

You were right!!
Apparently the DBD::mysql bug has not been fixed for years :(
I replaced the DBD::mysql module with DBD::MariaDB and amavis works fine with the float values read from SQL.

Thanks a lot for the tip! It was perfect.

Regards,
  Károly

2022-02-19 18:31 időpontban [email protected] ezt írta:
On Saturday 19 February 2022 18:16:43 Mészáros Károly wrote:
Hi,

In the following software environment I have problems with spam tagging and
spam threshold values:
FreeBSD13.0
amavisd-new-2.12.2,
perl5 (revision 5 version 34 subversion 0),
10.5.15-MariaDB (postfix 3.6.3,1; clamav 0.104.2,1; p5-DBD-mysql 4.050_1)

amavisd-new working with SQL as suggested by README
(https://www.ijs.si/software/amavisd/README.sql-mysql.txt)

It founds the spam policy by sql query, but the spam tag levels are always
0.
spam_tag_level=>"0", spam_tag2_level=>"0", spam_tag3_level=>"0",
spam_kill_level=>"0",

I wrote a "check" perl script that reads the policy table values. Here the
float values are displayed correctly (3.000 , 6.900, etc).
However, the amavisd-new log shows spam_tag_level=>"0", so I suspect a
faulty value conversion for amavisd (and not due to p5-DBD-mysql, Mariadb or
perl).

As a workaround, I changed the float type (spam_tag_level, spam_tag2_level, tag3 and kill_level) in the database to varchar and -for now- it seems fine.
A bit bizarre, perhaps, but it (apparently) works.

I've been looking for a solution for weeks now, in articles and mailing
lists, without success.
Does anyone have any suggestions? Is it a bug?

Best regards,
K

Hello Károly! In past there was a bug in DBD::mysql code which mangled
values fetched from floating point database columns and reported they to
applications as value 0. I'm not sure if it issue was fixed, it is some
years old.

But your description really looks like that floating point issue. One of
the solution was to change DBD::mysql perl module to DBD::MariaDB which
did not have that floating point issue.

Reply via email to