Package: spamassassin Version: 3.2.3-1 Followup-For: Bug #443076 Okay, some more details on this particular problem. It's not a bug per se, but it does tend to fill up your logs a bit with needless information.
The warning that is generated is something like this: --- Dec 12 00:00:30 king spamd[19601]: WARNING: nonstandard use of \\ in a string literal Dec 12 00:00:30 king spamd[19601]: LINE 1: select put_tokens(86, '{"\\\\000\\\\174\\\\301\\\\367\\\\030... Dec 12 00:00:30 king spamd[19601]: ^ Dec 12 00:00:30 king spamd[19601]: HINT: Use the escape string syntax for backslashes, e.g., E'\\'. --- The file which needs to be patched is: --- /usr/share/perl5/Mail/SpamAssassin/BayesStore/PgSQL.pm and the patch is attached to this report. Now the biggest problem is that I'm not sure this can be pushed out if people are using anything older than PostgreSQL 8.2. But I wanted to document this here since I've been dealing with it for quite some time now and I'm sure other people have been also. -- System Information: Debian Release: lenny/sid APT prefers testing APT policy: (700, 'testing'), (600, 'unstable'), (1, 'experimental') Architecture: i386 (i686) Kernel: Linux 2.6.23.8 (SMP w/4 CPU cores) Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/bash Versions of packages spamassassin depends on: ii libarchive-tar-perl 1.36-1 Archive::Tar - manipulate tar file ii libdigest-sha1-perl 2.11-2 NIST SHA-1 message digest algorith ii libhtml-parser-perl 3.56-1 A collection of modules that parse ii libio-zlib-perl 1.04-1 IO:: style interface to Compress:: ii libnet-dns-perl 0.60-1 Perform DNS queries from a Perl sc ii libsocket6-perl 0.19-1 Perl extensions for IPv6 ii libsys-hostname-long-perl 1.4-1 Figure out the long (fully-qualifi ii libwww-perl 5.805-1 WWW client/server library for Perl ii perl 5.8.8-12 Larry Wall's Practical Extraction Versions of packages spamassassin recommends: ii gcc 4:4.2.1-6 The GNU C compiler ii gnupg 1.4.6-2 GNU privacy guard - a free PGP rep ii libc6-dev 2.7-3 GNU C Library: Development Librari pn libmail-spf-query-perl <none> (no description available) pn libsys-syslog-perl <none> (no description available) ii make 3.81-3 The GNU version of the "make" util pn re2c <none> (no description available) ii spamc 3.2.3-1 Client for SpamAssassin spam filte -- debconf information excluded
--- PgSQL.pm~ Fri Sep 29 15:06:38 2006 +++ PgSQL.pm Thu Jan 18 15:53:59 2007 @@ -730,5 +730,5 @@ my $tokenarray = join(",", map { '"' . _quote_bytea($_) . '"' } sort @{$tokens}); - my $sth = $self->{_dbh}->prepare("select touch_tokens($self->{_userid}, '{$tokenarray}', $atime)"); + my $sth = $self->{_dbh}->prepare("select touch_tokens($self->{_userid}, E'{$tokenarray}', $atime)"); unless (defined($sth)) { @@ -934,5 +934,5 @@ my $escaped_token = _quote_bytea($token); - my $sth = $self->{_dbh}->prepare("select put_tokens($self->{_userid},'{$escaped_token}', + my $sth = $self->{_dbh}->prepare("select put_tokens($self->{_userid}, E'{$escaped_token}', $spam_count,$ham_count,$atime)"); @@ -998,5 +998,5 @@ my $tokenarray = join(",", map { '"' . _quote_bytea($_) . '"' } sort keys %{$tokens}); - my $sth = $self->{_dbh}->prepare("select put_tokens($self->{_userid}, '{$tokenarray}', + my $sth = $self->{_dbh}->prepare("select put_tokens($self->{_userid}, E'{$tokenarray}', $spam_count, $ham_count, $atime)"); @@ -1038,12 +1038,5 @@ sub _quote_bytea { my ($str) = @_; - my $buf = ""; - foreach my $char (split(//,$str)) { - my $oct = sprintf ("%lo", ord($char)); - if (length( $oct ) < 2 ) { $oct = '0' . $oct; } - if (length( $oct ) < 3 ) { $oct = '0' . $oct; } - $buf .= '\\\\\\\\' . $oct; - } - return $buf; + return join('', map {'\\\\\\\\'.sprintf("%03o",ord($_))} split(//,$str)); }