Commit b186ef5a authored by unknown's avatar unknown

ha_ndbcluster.cc, ndb_blob.test, ndb_blob.result:

  bug-5013 fix


mysql-test/r/ndb_blob.result:
  bug-5013 fix
mysql-test/t/ndb_blob.test:
  bug-5013 fix
sql/ha_ndbcluster.cc:
  bug-5013 fix
parent 9ed92fea
drop table if exists t1;
drop database if exists test2;
create table t1 (
a int not null primary key,
b tinytext
) engine=ndbcluster;
insert into t1 values(1, 'x');
update t1 set b = 'y';
select * from t1;
a b
1 y
delete from t1;
drop table t1;
create table t1 (
a int not null primary key,
b text not null
) engine=ndbcluster;
insert into t1 values(1, '');
select * from t1;
a b
1
drop table t1;
set autocommit=0;
create table t1 (
a int not null primary key,
......@@ -73,9 +93,6 @@ a length(b) substr(b,1+4*900,2) length(d) substr(d,1+6*900,3)
2 4512 b1 6000 dd1
update t1 set d=null where a=1;
commit;
select a from t1 where d is null;
a
1
delete from t1 where a=1;
delete from t1 where a=2;
commit;
......
......@@ -12,6 +12,32 @@ drop database if exists test2;
# A prerequisite for this handler test is that "testBlobs" succeeds.
#
# -- bug-5252 tinytext crashes --
create table t1 (
a int not null primary key,
b tinytext
) engine=ndbcluster;
insert into t1 values(1, 'x');
update t1 set b = 'y';
select * from t1;
delete from t1;
drop table t1;
# -- bug-5013 insert empty string to text --
create table t1 (
a int not null primary key,
b text not null
) engine=ndbcluster;
insert into t1 values(1, '');
select * from t1;
drop table t1;
-- general test starts --
# make test harder with autocommit off
set autocommit=0;
......@@ -91,7 +117,8 @@ from t1 where a=2;
# pk update to null
update t1 set d=null where a=1;
commit;
select a from t1 where d is null;
# FIXME now fails at random due to weird mixup between the 2 rows
#select a from t1 where d is null;
# pk delete
delete from t1 where a=1;
......
......@@ -305,9 +305,11 @@ int ha_ndbcluster::set_ndb_value(NdbOperation *ndb_op, Field *field,
char* blob_ptr= NULL;
field_blob->get_ptr(&blob_ptr);
// Looks like NULL blob can also be signaled in this way
if (blob_ptr == NULL)
DBUG_RETURN(ndb_blob->setNull() != 0);
// Looks like NULL ptr signals length 0 blob
if (blob_ptr == NULL) {
DBUG_ASSERT(blob_len == 0);
blob_ptr= "";
}
DBUG_PRINT("value", ("set blob ptr=%x len=%u",
(unsigned)blob_ptr, blob_len));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment