Loading mysql-test/r/ndb_blob.result +18 −0 Original line number Diff line number Diff line Loading @@ -467,3 +467,21 @@ a b 1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 2 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB drop table t1; create table t1 ( id int(11) unsigned primary key NOT NULL auto_increment, msg text NOT NULL ) engine=ndbcluster default charset=utf8; insert into t1 (msg) values( 'Tries to validate (8 byte length + inline bytes) as UTF8 :( Fast fix: removed validation for Text. It is not yet indexable so bad data will not crash kernel. Proper fix: Set inline bytes to multiple of mbmaxlen and validate it (after the 8 byte length).'); select * from t1; id msg 1 Tries to validate (8 byte length + inline bytes) as UTF8 :( Fast fix: removed validation for Text. It is not yet indexable so bad data will not crash kernel. Proper fix: Set inline bytes to multiple of mbmaxlen and validate it (after the 8 byte length). drop table t1; mysql-test/t/ndb_blob.test +14 −0 Original line number Diff line number Diff line Loading @@ -389,3 +389,17 @@ set autocommit=1; alter table t1 engine=myisam; select * from t1 order by a; drop table t1; # -- bug #7340 -- create table t1 ( id int(11) unsigned primary key NOT NULL auto_increment, msg text NOT NULL ) engine=ndbcluster default charset=utf8; insert into t1 (msg) values( 'Tries to validate (8 byte length + inline bytes) as UTF8 :( Fast fix: removed validation for Text. It is not yet indexable so bad data will not crash kernel. Proper fix: Set inline bytes to multiple of mbmaxlen and validate it (after the 8 byte length).'); select * from t1; drop table t1; ndb/src/ndbapi/NdbConnection.cpp +3 −4 Original line number Diff line number Diff line Loading @@ -361,11 +361,10 @@ NdbConnection::execute(ExecType aTypeOfExec, if (executeNoBlobs(tExecType, abortOption, forceSend) == -1) ret = -1; #ifndef VM_TRACE // can happen in complex abort cases theFirstOpInList = theLastOpInList = NULL; #else #ifdef ndb_api_crash_on_complex_blob_abort assert(theFirstOpInList == NULL && theLastOpInList == NULL); #else theFirstOpInList = theLastOpInList = NULL; #endif { Loading ndb/src/ndbapi/NdbOperationDefine.cpp +3 −1 Original line number Diff line number Diff line Loading @@ -528,6 +528,8 @@ NdbOperation::setValue( const NdbColumnImpl* tAttrInfo, CHARSET_INFO* cs = tAttrInfo->m_cs; // invalid data can crash kernel if (cs != NULL && // fast fix bug#7340 tAttrInfo->m_type != NdbDictionary::Column::Text && (*cs->cset->well_formed_len)(cs, aValue, aValue + sizeInBytes, Loading Loading
mysql-test/r/ndb_blob.result +18 −0 Original line number Diff line number Diff line Loading @@ -467,3 +467,21 @@ a b 1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 2 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB drop table t1; create table t1 ( id int(11) unsigned primary key NOT NULL auto_increment, msg text NOT NULL ) engine=ndbcluster default charset=utf8; insert into t1 (msg) values( 'Tries to validate (8 byte length + inline bytes) as UTF8 :( Fast fix: removed validation for Text. It is not yet indexable so bad data will not crash kernel. Proper fix: Set inline bytes to multiple of mbmaxlen and validate it (after the 8 byte length).'); select * from t1; id msg 1 Tries to validate (8 byte length + inline bytes) as UTF8 :( Fast fix: removed validation for Text. It is not yet indexable so bad data will not crash kernel. Proper fix: Set inline bytes to multiple of mbmaxlen and validate it (after the 8 byte length). drop table t1;
mysql-test/t/ndb_blob.test +14 −0 Original line number Diff line number Diff line Loading @@ -389,3 +389,17 @@ set autocommit=1; alter table t1 engine=myisam; select * from t1 order by a; drop table t1; # -- bug #7340 -- create table t1 ( id int(11) unsigned primary key NOT NULL auto_increment, msg text NOT NULL ) engine=ndbcluster default charset=utf8; insert into t1 (msg) values( 'Tries to validate (8 byte length + inline bytes) as UTF8 :( Fast fix: removed validation for Text. It is not yet indexable so bad data will not crash kernel. Proper fix: Set inline bytes to multiple of mbmaxlen and validate it (after the 8 byte length).'); select * from t1; drop table t1;
ndb/src/ndbapi/NdbConnection.cpp +3 −4 Original line number Diff line number Diff line Loading @@ -361,11 +361,10 @@ NdbConnection::execute(ExecType aTypeOfExec, if (executeNoBlobs(tExecType, abortOption, forceSend) == -1) ret = -1; #ifndef VM_TRACE // can happen in complex abort cases theFirstOpInList = theLastOpInList = NULL; #else #ifdef ndb_api_crash_on_complex_blob_abort assert(theFirstOpInList == NULL && theLastOpInList == NULL); #else theFirstOpInList = theLastOpInList = NULL; #endif { Loading
ndb/src/ndbapi/NdbOperationDefine.cpp +3 −1 Original line number Diff line number Diff line Loading @@ -528,6 +528,8 @@ NdbOperation::setValue( const NdbColumnImpl* tAttrInfo, CHARSET_INFO* cs = tAttrInfo->m_cs; // invalid data can crash kernel if (cs != NULL && // fast fix bug#7340 tAttrInfo->m_type != NdbDictionary::Column::Text && (*cs->cset->well_formed_len)(cs, aValue, aValue + sizeInBytes, Loading