Commit 6288cfb8 authored by serg@serg.mysql.com's avatar serg@serg.mysql.com
Browse files

bulk insert bug fixed

parent d8d3fcd8
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -794,10 +794,10 @@ int _mi_init_bulk_insert(MI_INFO *info)
  params=(bulk_insert_param *)(info->bulk_insert+share->base.keys);
  for (i=0 ; i < share->base.keys ; i++,key++)
  {
    params->info=info;
    params->keynr=i;
    if (test(key_map & ((ulonglong) 1 << i)))
    {
      params->info=info;
      params->keynr=i;
      init_tree(& info->bulk_insert[i], 0, 
		myisam_bulk_insert_tree_size / num_keys, 0,
		(qsort_cmp2)keys_compare, 0,
+2 −0
Original line number Diff line number Diff line
@@ -11,3 +11,5 @@ payoutID
19
20
22
Variable_name	Value
myisam_bulk_insert_tree_size	8388608
+56 −0
Original line number Diff line number Diff line
@@ -10,3 +10,59 @@ insert into t2 (payoutID) SELECT DISTINCT payoutID FROM t1;
insert into t2 (payoutID) SELECT payoutID+10 FROM t1;
select * from 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;