Merge bk-internal.mysql.com:/home/bk/mysql-5.1-engines
into chilla.local:/home/mydev/mysql-5.1-bug26782
This commit is contained in:
commit
32da2907f8
@ -280,6 +280,21 @@ a
|
|||||||
1
|
1
|
||||||
1
|
1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
c1 CHAR(3),
|
||||||
|
c2 INTEGER,
|
||||||
|
KEY USING BTREE(c1),
|
||||||
|
KEY USING BTREE(c2)
|
||||||
|
) ENGINE= MEMORY;
|
||||||
|
INSERT INTO t1 VALUES ('ABC',0), ('A',0), ('B',0), ('C',0);
|
||||||
|
UPDATE t1 SET c2= c2 + 1 WHERE c1 = 'A';
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1 c2
|
||||||
|
ABC 0
|
||||||
|
A 1
|
||||||
|
B 0
|
||||||
|
C 0
|
||||||
|
DROP TABLE t1;
|
||||||
End of 4.1 tests
|
End of 4.1 tests
|
||||||
CREATE TABLE t1(val INT, KEY USING BTREE(val)) ENGINE=memory;
|
CREATE TABLE t1(val INT, KEY USING BTREE(val)) ENGINE=memory;
|
||||||
INSERT INTO t1 VALUES(0);
|
INSERT INTO t1 VALUES(0);
|
||||||
|
@ -182,6 +182,20 @@ delete from t1 where a >= 2;
|
|||||||
select a from t1 order by a;
|
select a from t1 order by a;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#26996 - Update of a Field in a Memory Table ends with wrong result
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
c1 CHAR(3),
|
||||||
|
c2 INTEGER,
|
||||||
|
KEY USING BTREE(c1),
|
||||||
|
KEY USING BTREE(c2)
|
||||||
|
) ENGINE= MEMORY;
|
||||||
|
INSERT INTO t1 VALUES ('ABC',0), ('A',0), ('B',0), ('C',0);
|
||||||
|
UPDATE t1 SET c2= c2 + 1 WHERE c1 = 'A';
|
||||||
|
SELECT * FROM t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
--echo End of 4.1 tests
|
--echo End of 4.1 tests
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -105,7 +105,6 @@ int hp_rb_write_key(HP_INFO *info, HP_KEYDEF *keyinfo, const byte *record,
|
|||||||
heap_rb_param custom_arg;
|
heap_rb_param custom_arg;
|
||||||
uint old_allocated;
|
uint old_allocated;
|
||||||
|
|
||||||
info->last_pos= NULL; /* For heap_rnext/heap_rprev */
|
|
||||||
custom_arg.keyseg= keyinfo->seg;
|
custom_arg.keyseg= keyinfo->seg;
|
||||||
custom_arg.key_length= hp_rb_make_key(keyinfo, info->recbuf, record, recpos);
|
custom_arg.key_length= hp_rb_make_key(keyinfo, info->recbuf, record, recpos);
|
||||||
if (keyinfo->flag & HA_NOSAME)
|
if (keyinfo->flag & HA_NOSAME)
|
||||||
|
@ -632,6 +632,9 @@ bool ha_myisam::check_if_locking_is_allowed(uint sql_command,
|
|||||||
|
|
||||||
int ha_myisam::open(const char *name, int mode, uint test_if_locked)
|
int ha_myisam::open(const char *name, int mode, uint test_if_locked)
|
||||||
{
|
{
|
||||||
|
MI_KEYDEF *keyinfo;
|
||||||
|
MI_COLUMNDEF *recinfo= 0;
|
||||||
|
uint recs;
|
||||||
uint i;
|
uint i;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -654,6 +657,26 @@ int ha_myisam::open(const char *name, int mode, uint test_if_locked)
|
|||||||
|
|
||||||
if (!(file=mi_open(name, mode, test_if_locked | HA_OPEN_FROM_SQL_LAYER)))
|
if (!(file=mi_open(name, mode, test_if_locked | HA_OPEN_FROM_SQL_LAYER)))
|
||||||
return (my_errno ? my_errno : -1);
|
return (my_errno ? my_errno : -1);
|
||||||
|
if (!table->s->tmp_table) /* No need to perform a check for tmp table */
|
||||||
|
{
|
||||||
|
if ((my_errno= table2myisam(table, &keyinfo, &recinfo, &recs)))
|
||||||
|
{
|
||||||
|
/* purecov: begin inspected */
|
||||||
|
DBUG_PRINT("error", ("Failed to convert TABLE object to MyISAM "
|
||||||
|
"key and column definition"));
|
||||||
|
goto err;
|
||||||
|
/* purecov: end */
|
||||||
|
}
|
||||||
|
if (check_definition(keyinfo, recinfo, table->s->keys, recs,
|
||||||
|
file->s->keyinfo, file->s->rec,
|
||||||
|
file->s->base.keys, file->s->base.fields, true))
|
||||||
|
{
|
||||||
|
/* purecov: begin inspected */
|
||||||
|
my_errno= HA_ERR_CRASHED;
|
||||||
|
goto err;
|
||||||
|
/* purecov: end */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (test_if_locked & (HA_OPEN_IGNORE_IF_LOCKED | HA_OPEN_TMP_TABLE))
|
if (test_if_locked & (HA_OPEN_IGNORE_IF_LOCKED | HA_OPEN_TMP_TABLE))
|
||||||
VOID(mi_extra(file, HA_EXTRA_NO_WAIT_LOCK, 0));
|
VOID(mi_extra(file, HA_EXTRA_NO_WAIT_LOCK, 0));
|
||||||
@ -674,7 +697,18 @@ int ha_myisam::open(const char *name, int mode, uint test_if_locked)
|
|||||||
(struct st_mysql_ftparser *)parser->plugin->info;
|
(struct st_mysql_ftparser *)parser->plugin->info;
|
||||||
table->key_info[i].block_size= file->s->keyinfo[i].block_length;
|
table->key_info[i].block_size= file->s->keyinfo[i].block_length;
|
||||||
}
|
}
|
||||||
return (0);
|
my_errno= 0;
|
||||||
|
goto end;
|
||||||
|
err:
|
||||||
|
this->close();
|
||||||
|
end:
|
||||||
|
/*
|
||||||
|
Both recinfo and keydef are allocated by my_multi_malloc(), thus only
|
||||||
|
recinfo must be freed.
|
||||||
|
*/
|
||||||
|
if (recinfo)
|
||||||
|
my_free((gptr) recinfo, MYF(0));
|
||||||
|
return my_errno;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ha_myisam::close(void)
|
int ha_myisam::close(void)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user