Commit a845e882 authored by unknown's avatar unknown
Browse files

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


heap/hp_open.c:
  A fix (bug #6878: Crash with engine=memory).
  Record length should be >= sizeof(byte*).
parent 352ad815
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -41,6 +41,13 @@ HP_INFO *heap_open(const char *name, int mode, uint keys, HP_KEYDEF *keydef,
  {
    DBUG_PRINT("info",("Initializing new table"));
    implicit_emptied= 1;

    /*
      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 ; i < keys ; i++)
    {
      key_segs+= keydef[i].keysegs;
+9 −0
Original line number Diff line number Diff line
@@ -227,3 +227,12 @@ SELECT MAX(job_title_id) FROM job_titles;
MAX(job_title_id)
NULL
DROP TABLE job_titles;
create table t1(a char(2)) type=heap;
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;
+11 −0
Original line number Diff line number Diff line
@@ -161,3 +161,14 @@ CREATE TABLE `job_titles` (
SELECT MAX(job_title_id) FROM job_titles;

DROP TABLE job_titles;

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

create table t1(a char(2)) type=heap;
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;