Re: BayesStore MariaDB on EL9

Bill Cole <[email protected]>
Newsgroups gmane.mail.spam.spamassassin.general
Message-ID <[email protected]>
On 2024-06-18 at 14:58:15 UTC-0400 (Tue, 18 Jun 2024 20:58:15 +0200)
Gerald Vogt <[email protected]>
is rumored to have said:

> Hi,
>
> for a test, I have increased the column length of token to binary(32) 
> and used a test file to import containing a single token.
>
> This time it went through. However, as I suspected, the token length 
> is not 5 byte. Token line from backup:
>
> t	1	0	1718024618	027121926a
>
> Hex representation of content in database:
>
> MariaDB [spamassassin]> select hex(token) from bayes_token\G
> *************************** 1. row ***************************
> hex(token): 
> 027121C2926A0000000000000000000000000000000000000000000000000000
> 1 row in set (0.000 sec)
>
> Compared:
>
> Original 02 71 21    92 6a
> Database 02 71 21 C2 92 6A
>
> C2 92 is the UTF-8 encoding of U+0092, thus basically the token is 
> written in UTF-8 into the database.

That's odd... What is the character set of the database?

> Running sa-learn with DBI_TRACE=2 I can also see that it looks like it 
> actually has the UTF-8 encoding already in there during parameter 
> binding:
>
> Binding parameters: INSERT INTO bayes_token
>                (id, token, spam_count, ham_count, atime)
>                VALUES ('43','^Bq!<U+0092>j','1','0','1718024618')
>                ON DUPLICATE KEY UPDATE spam_count = 
> GREATEST(spam_count + '1', 0),
>                                        ham_count = GREATEST(ham_count 
> + '0', 0),
>                                        atime = GREATEST(atime, 
> '1718024618')
>
> Thus, I would say it's not an issue with the database.
>
> Any idea?
>
> Running spamassassin-3.4.6-5.el9.x86_64 on AlmaLinux 9.4.

First: upgrade to 4.0.1

There were substantial changes in how encoding was handled between 3.4.6 
and 4.0, and there is a substantial likelihood that any problem with 
encoding would not occur in 4.0 or later.

I don't know exactly what the cause of the problem is (i.e. why is SA 
trying to write UTF-8 to the database?) but I'm quite sure that an 
official fix for 3.4.x will never happen.



>
> Thanks,
>
> Gerald
>
> On 18.06.24 17:09, Gerald Vogt wrote:
>> Hi!
>>
>> I am trying to use a mariadb database as bayesstore, but it fails to 
>> load tokens. Whenever it tries to insert something into bayes_token 
>> it fails with an error
>>
>> dbg: bayes: _put_token: SQL error: Data too long for column 'token' 
>> at row 1
>>
>> The table has been created as mentioned in
>>
>> https://github.com/apache/spamassassin/blob/trunk/sql/bayes_mysql.sql
>>
>> but the 5 byte binary isn't big enough. I have tried with sa-learn 
>> --restore as well as learning some spam mails. bayes_token remains 
>> empty.
>>
>> MariaDB [spamassassin]> show create table bayes_token\G
>> *************************** 1. row ***************************
>>         Table: bayes_token
>> Create Table: CREATE TABLE `bayes_token` (
>>    `id` int(11) NOT NULL DEFAULT 0,
>>    `token` binary(5) NOT NULL,
>>    `spam_count` int(11) NOT NULL DEFAULT 0,
>>    `ham_count` int(11) NOT NULL DEFAULT 0,
>>    `atime` int(11) NOT NULL DEFAULT 0,
>>    PRIMARY KEY (`id`,`token`),
>>    KEY `bayes_token_idx1` (`id`,`atime`)
>> ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
>> 1 row in set (0.000 sec)
>>
>> Any idea what goes wrong here?
>>
>> Thanks,
>>
>> Gerald
>>
>>


-- 
Bill Cole
[email protected] or [email protected]
(AKA @[email protected] and many *@billmail.scconsult.com 
addresses)
Not Currently Available For Hire
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.