mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 02:51:44 +01:00
ndb: bug#7340 fix
This commit is contained in:
parent
5b0e3b132c
commit
f57153fe81
4 changed files with 38 additions and 5 deletions
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
||||
{
|
||||
|
|
|
@ -528,7 +528,9 @@ NdbOperation::setValue( const NdbColumnImpl* tAttrInfo,
|
|||
CHARSET_INFO* cs = tAttrInfo->m_cs;
|
||||
// invalid data can crash kernel
|
||||
if (cs != NULL &&
|
||||
(*cs->cset->well_formed_len)(cs,
|
||||
// fast fix bug#7340
|
||||
tAttrInfo->m_type != NdbDictionary::Column::Text &&
|
||||
(*cs->cset->well_formed_len)(cs,
|
||||
aValue,
|
||||
aValue + sizeInBytes,
|
||||
sizeInBytes) != sizeInBytes) {
|
||||
|
|
Loading…
Add table
Reference in a new issue