Commit 33a4b35e authored by unknown's avatar unknown
Browse files

A fix (bug #6878: Crash with engine=memory).


heap/hp_create.c:
  A fix (bug #6878: Crash with engine=memory).
  Record length should be >= sizeof(byte*).
parent 38487139
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -41,6 +41,13 @@ int heap_create(const char *name, uint keys, HP_KEYDEF *keydef,
  {
    HP_KEYDEF *keyinfo;
    DBUG_PRINT("info",("Initializing new table"));
    
    /*
      We have to store sometimes byte* del_link in records,
      so the record length should be at least sizeof(byte*)
    */
    set_if_bigger(reclength, sizeof (byte*));
    
    for (i= key_segs= max_length= 0, keyinfo= keydef; i < keys; i++, keyinfo++)
    {
      bzero((char*) &keyinfo->block,sizeof(keyinfo->block));
+9 −0
Original line number Diff line number Diff line
@@ -240,3 +240,12 @@ SELECT * FROM t1;
pseudo	date
ZoomZip	1101106546
DROP TABLE t1;
create table t1(a char(2)) engine=memory;
insert into t1 values (NULL), (NULL);
delete from t1 where a is null;
insert into t1 values ('2'), ('3');
select * from t1;
a
3
2
drop table t1;
+10 −0
Original line number Diff line number Diff line
@@ -185,3 +185,13 @@ DELETE FROM t1 WHERE date<1101106546;
SELECT * FROM t1;
DROP TABLE t1;

#
# Bug #6878: a problem with small length records
#

create table t1(a char(2)) engine=memory;
insert into t1 values (NULL), (NULL);
delete from t1 where a is null;
insert into t1 values ('2'), ('3');
select * from t1;
drop table t1;