mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Merge with 3.23 to get fix for halloween problem on Update of InnoDB tables
This commit is contained in:
@ -6,7 +6,7 @@ Contains also create table and other data dictionary operations.
|
|||||||
|
|
||||||
Created 9/17/2000 Heikki Tuuri
|
Created 9/17/2000 Heikki Tuuri
|
||||||
*******************************************************/
|
*******************************************************/
|
||||||
|
|
||||||
#include "row0mysql.h"
|
#include "row0mysql.h"
|
||||||
|
|
||||||
#ifdef UNIV_NONINL
|
#ifdef UNIV_NONINL
|
||||||
|
@ -758,3 +758,14 @@ SELECT * FROM t3 WHERE id1="my-test-1" LOCK IN SHARE MODE;
|
|||||||
COMMIT;
|
COMMIT;
|
||||||
set autocommit=1;
|
set autocommit=1;
|
||||||
DROP TABLE t1,t2,t3;
|
DROP TABLE t1,t2,t3;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Check update with conflicting key
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a int not null primary key, b int not null, unique (b)) type=innodb;
|
||||||
|
INSERT INTO t1 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9);
|
||||||
|
# We need the a < 1000 test here to quard against the halloween problems
|
||||||
|
UPDATE t1 set a=a+100 where b between 2 and 3 and a < 1000;
|
||||||
|
SELECT * from t1;
|
||||||
|
drop table t1;
|
||||||
|
@ -269,5 +269,13 @@ bool check_if_key_used(TABLE *table, uint idx, List<Item> &fields)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
If table handler has primary key as part of the index, check that primary
|
||||||
|
key is not updated
|
||||||
|
*/
|
||||||
|
if (idx != table->primary_key && table->primary_key < MAX_KEY &&
|
||||||
|
(table->file->option_flag() & HA_PRIMARY_KEY_IN_READ_INDEX))
|
||||||
|
return check_if_key_used(table, table->primary_key, fields);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -35,6 +35,8 @@
|
|||||||
it can be compiled with the UNSIGNED and/or LONGLONG flag set
|
it can be compiled with the UNSIGNED and/or LONGLONG flag set
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#define strtoll glob_strtoll /* Fix for True64 */
|
||||||
|
|
||||||
#include <my_global.h>
|
#include <my_global.h>
|
||||||
#include "m_string.h"
|
#include "m_string.h"
|
||||||
#include "m_ctype.h"
|
#include "m_ctype.h"
|
||||||
|
Reference in New Issue
Block a user