bulk insert bug fixed
This commit is contained in:
parent
d8d3fcd867
commit
6288cfb848
@ -794,10 +794,10 @@ int _mi_init_bulk_insert(MI_INFO *info)
|
|||||||
params=(bulk_insert_param *)(info->bulk_insert+share->base.keys);
|
params=(bulk_insert_param *)(info->bulk_insert+share->base.keys);
|
||||||
for (i=0 ; i < share->base.keys ; i++,key++)
|
for (i=0 ; i < share->base.keys ; i++,key++)
|
||||||
{
|
{
|
||||||
params->info=info;
|
|
||||||
params->keynr=i;
|
|
||||||
if (test(key_map & ((ulonglong) 1 << i)))
|
if (test(key_map & ((ulonglong) 1 << i)))
|
||||||
{
|
{
|
||||||
|
params->info=info;
|
||||||
|
params->keynr=i;
|
||||||
init_tree(& info->bulk_insert[i], 0,
|
init_tree(& info->bulk_insert[i], 0,
|
||||||
myisam_bulk_insert_tree_size / num_keys, 0,
|
myisam_bulk_insert_tree_size / num_keys, 0,
|
||||||
(qsort_cmp2)keys_compare, 0,
|
(qsort_cmp2)keys_compare, 0,
|
||||||
|
@ -11,3 +11,5 @@ payoutID
|
|||||||
19
|
19
|
||||||
20
|
20
|
||||||
22
|
22
|
||||||
|
Variable_name Value
|
||||||
|
myisam_bulk_insert_tree_size 8388608
|
||||||
|
@ -10,3 +10,59 @@ insert into t2 (payoutID) SELECT DISTINCT payoutID FROM t1;
|
|||||||
insert into t2 (payoutID) SELECT payoutID+10 FROM t1;
|
insert into t2 (payoutID) SELECT payoutID+10 FROM t1;
|
||||||
select * from t2;
|
select * from t2;
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
#
|
||||||
|
# bug in bulk insert optimization
|
||||||
|
# test case by Fournier Jocelyn <joc@presence-pc.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS crash1,crash2;
|
||||||
|
CREATE TABLE `crash1` (
|
||||||
|
`numeropost` bigint(20) unsigned NOT NULL default '0',
|
||||||
|
`icone` tinyint(4) unsigned NOT NULL default '0',
|
||||||
|
`numreponse` bigint(20) unsigned NOT NULL auto_increment,
|
||||||
|
`contenu` text NOT NULL,
|
||||||
|
`pseudo` varchar(50) NOT NULL default '',
|
||||||
|
`date` datetime NOT NULL default '0000-00-00 00:00:00',
|
||||||
|
`ip` bigint(11) NOT NULL default '0',
|
||||||
|
`signature` tinyint(1) unsigned NOT NULL default '0',
|
||||||
|
PRIMARY KEY (`numeropost`,`numreponse`)
|
||||||
|
,KEY `ip` (`ip`),
|
||||||
|
KEY `date` (`date`),
|
||||||
|
KEY `pseudo` (`pseudo`),
|
||||||
|
KEY `numreponse` (`numreponse`)
|
||||||
|
) TYPE=MyISAM;
|
||||||
|
|
||||||
|
CREATE TABLE `crash2` (
|
||||||
|
`numeropost` bigint(20) unsigned NOT NULL default '0',
|
||||||
|
`icone` tinyint(4) unsigned NOT NULL default '0',
|
||||||
|
`numreponse` bigint(20) unsigned NOT NULL auto_increment,
|
||||||
|
`contenu` text NOT NULL,
|
||||||
|
`pseudo` varchar(50) NOT NULL default '',
|
||||||
|
`date` datetime NOT NULL default '0000-00-00 00:00:00',
|
||||||
|
`ip` bigint(11) NOT NULL default '0',
|
||||||
|
`signature` tinyint(1) unsigned NOT NULL default '0',
|
||||||
|
PRIMARY KEY (`numeropost`,`numreponse`),
|
||||||
|
KEY `ip` (`ip`),
|
||||||
|
KEY `date` (`date`),
|
||||||
|
KEY `pseudo` (`pseudo`),
|
||||||
|
KEY `numreponse` (`numreponse`)
|
||||||
|
) TYPE=MyISAM;
|
||||||
|
|
||||||
|
INSERT INTO crash2
|
||||||
|
(numeropost,icone,numreponse,contenu,pseudo,date,ip,signature) VALUES
|
||||||
|
(9,1,56,'test','joce','2001-07-25 13:50:53'
|
||||||
|
,3649052399,0);
|
||||||
|
|
||||||
|
|
||||||
|
INSERT INTO crash1 (numeropost,icone,contenu,pseudo,date,signature,ip)
|
||||||
|
SELECT 1618,icone,contenu,pseudo,date,signature,ip FROM crash2
|
||||||
|
WHERE numeropost=9 ORDER BY numreponse ASC;
|
||||||
|
|
||||||
|
show variables like '%bulk%';
|
||||||
|
|
||||||
|
INSERT INTO crash1 (numeropost,icone,contenu,pseudo,date,signature,ip)
|
||||||
|
SELECT 1718,icone,contenu,pseudo,date,signature,ip FROM crash2
|
||||||
|
WHERE numeropost=9 ORDER BY numreponse ASC;
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS crash1,crash2;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user