<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.E-MailFormatvorlage17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page Section1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=DE link=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal><span lang=EN-US>Hi there,<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US>I have been testing the upgrade of our (originally
Debian Based) RT 3.6.5 installation to RT 3.8 and found two bugs in the
process:<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US>First, the script generating the necessary
code to convert the Database from MySQL 4.0 to 4.1 and newer produces corrupt SQL
at least in my case here. It has several occurrences of constructs like this:<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US>                ALTER TABLE Groups MODIFIY
Domain VARBINARY(64) <i>NOT NULL DEFAULT NULL</i>;<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US>Note, that the NOT NULL DEFAULT NULL contradicts
itself, MySQL 5.0.51a (Debian) at least rejects it as a syntax error. When changing
all of the above occurrences in the database to “NULL DEFAULT NULL”
everything works. This seems as the best alternative to me, please correct me
if I am wrong. “NOT NULL” in itself will produce errors, changing
the default away from NULL might have consequences in RT itself.<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US>I do not have a patch here, as I have fixed
the sql.queries script directly with vi.<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US>The second problem I have tested so far only
with the RT Standalone server, I cannot say anything (yet) for other ways to
run RT as I’m still in the process of testing everything.<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US>At least Debian MySQL 5.0.51a does by
default initialize all connections in latin1 mode. So after converting the
Database to correct UTF-8, MySQL does automatically convert any columns known
as UTF-8 into the default connection charset latin1. This leads to all broken
non-ASCII Chars all over the site except the Attachments (where RT itself
appearantly does the conversion handling, as this is a BINARY field).<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US>I was unable to change MySQLs default behavior
using my.cnf – this isn’t sensible anyway, as this could have side
effects with other applications that do make any implicit assumption about the
connection character set.<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US>After some testing I found an easy way (for
MySQL) to actually enforce the usage of UTF-8 as connection charset inside RT
by patching the connection startup in Handle.pm like this:<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US style='font-family:"Courier New"'>---
/home/nehmer/src/rt-3.8.0/lib/RT/Handle.pm  2008-06-14 00:06:41.000000000 +0200<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US style='font-family:"Courier New"'>+++
Handle.pm   2008-07-24 09:33:14.208864208 +0200<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US style='font-family:"Courier New"'>@@ -113,6
+113,11 @@<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US style='font-family:"Courier New"'>        
);<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US style='font-family:"Courier New"'><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US style='font-family:"Courier New"'>    
$self->dbh->{'LongReadLen'} = RT->Config->Get('MaxAttachmentSize');<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US style='font-family:"Courier New"'>+<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US style='font-family:"Courier New"'>+    if (
RT->Config->Get('DatabaseType') eq 'mysql' ) {<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US style='font-family:"Courier New"'>+       
$self->dbh->do("set character set utf8");<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US style='font-family:"Courier New"'>+       
$self->dbh->do("set names utf8");<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US style='font-family:"Courier New"'>+    }<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US style='font-family:"Courier New"'> }<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US style='font-family:"Courier New"'><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US style='font-family:"Courier New"'> =head2
BuildDSN<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US>Here again I am not sure if this is the
best solution (I would have assumed that DBI does this automagically when Perl’s
in UTF-8 mode), but it most certainly does work. So far I could not find another
working solution. Any default character set I define in my.cnf seems to have no
effect at this point, as well as the Locale I use when starting up the
Standalone server (I was testing it with both POSIX and de_DE.UTF8.<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US>I would appreciate some feedback on these
two patches, whether they are ok or if they are additional points I might have
missed. Especially, since so far I have only had time for rudimentary testing.<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US>Apart from that I’d like to say: Good
Work! RT 3.8 looks really promising. Can’t wait for 3.8.1, which we’ll
most probably take into production when it comes out. <o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span
style='font-size:10.0pt;font-family:"Arial","sans-serif"'>Yours,<br>
Torben Nehmer</span><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'><o:p></o:p></span></p>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span
style='font-size:7.5pt;font-family:"Arial","sans-serif"'>-------<br>
Torben Nehmer<br>
Diplom Informatiker (FH)<br>
Business System Developer</span><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'><o:p></o:p></span></p>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span
style='font-size:7.5pt;font-family:"Arial","sans-serif"'>CANCOM Deutschland
GmbH<br>
Messerschmittstr. 20<br>
89343 Scheppach<br>
Germany</span><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'><o:p></o:p></span></p>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span
lang=EN-US style='font-size:7.5pt;font-family:"Arial","sans-serif"'>Tel.: +49
8225 - 996-1118<br>
Fax: +49 8225 - 996-41118<br>
</span><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'><a
href="mailto:torben.nehmer@cancom.de"><span lang=EN-US style='font-size:7.5pt;
font-family:"Arial","sans-serif";color:blue'>torben.nehmer@cancom.de</span></a></span><span
lang=EN-US style='font-size:10.0pt;font-family:"Times New Roman","serif"'><br>
</span><span style='font-size:10.0pt;font-family:"Times New Roman","serif"'><a
href="http://www.cancom.de"><span lang=EN-US style='font-size:7.5pt;font-family:
"Arial","sans-serif";color:blue'>www.cancom.de</span></a></span><span
lang=EN-US style='font-size:12.0pt;font-family:"Times New Roman","serif"'><o:p></o:p></span></p>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span
style='font-size:7.5pt;font-family:"Arial","sans-serif"'>CANCOM Deutschland
GmbH<br>
Sitz der Gesellschaft: Jettingen-Scheppach<br>
HRB 10653 Memmingen<br>
<span style='color:black'>Geschäftsführer: Paul Holdschik, Christian
Linder</span></span><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'><o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:7.5pt;font-family:"Arial","sans-serif"'>Diese
E-Mail und alle mitgesendeten Dateien sind vertraulich und ausschließlich für
den Gebrauch durch den Empfänger bestimmt! <br>
</span><span lang=EN-US style='font-size:7.5pt;font-family:"Arial","sans-serif"'>This
e-mail and any files transmitted with it are confidential intended solely for
the use of the addressee!</span><span lang=EN-US><o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

</div>

</body>

</html>