dannote / mod-ndb

Automatically exported from code.google.com/p/mod-ndb
0 stars 0 forks source link

wrong length inserting longvarchar #38

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago

CREATE TABLE typ7 (
  id int not null auto_increment primary key,
  vc01 varchar(2000),
  ts timestamp not null
) engine = ndbcluster ;

use mod_ndb to insert a row (@autoinc, string of length 1003, @time).

The string in the database will have length 235 rather than 1003.  (235 = 00EB; 
1003 = 03EB). 

Original issue reported on code.google.com by john.david.duncan on 6 Sep 2007 at 1:51

GoogleCodeExporter commented 9 years ago
===================================================================
--- MySQL_Field.cc      (revision 400)
+++ MySQL_Field.cc      (working copy)
@@ -322,7 +322,7 @@
         if(s_len > col->getLength()) s_len = col->getLength();
           m.u.val_char = (char *) ap_palloc(p, s_len + 3);
         * m.u.val_char     = (char) (s_len & s_lo);
-        * (m.u.val_char+1) = (char) (s_len & s_hi);
+        * (m.u.val_char+1) = (char) ((s_len & s_hi) >> 8);
         ap_cpystrn(m.u.val_char+2, val, s_len+1);
         m.use_value = use_char; 
         m.col_len = col->getLength() + 2;

Original comment by john.david.duncan on 6 Sep 2007 at 2:45

GoogleCodeExporter commented 9 years ago

Original comment by john.david.duncan on 6 Sep 2007 at 2:10

GoogleCodeExporter commented 9 years ago
Fixed in svn 402.

Original comment by john.david.duncan on 6 Sep 2007 at 2:11