Commit d4ae4f0e authored by unknown's avatar unknown

Fixed 'Unknown error' when using 'UPDATE ... LIMIT'. Bug 373


mysql-test/r/update.result:
  new test
mysql-test/t/update.test:
  Test of UPDATE ... LIMIT
sql/sql_update.cc:
  Fixed 'Unknown error' when using 'UPDATE ... LIMIT'
parent d05cd28c
...@@ -138,3 +138,15 @@ a b ...@@ -138,3 +138,15 @@ a b
111 100 111 100
111 100 111 100
drop table t1; drop table t1;
CREATE TABLE t1 (
`id_param` smallint(3) unsigned NOT NULL default '0',
`nom_option` char(40) NOT NULL default '',
`valid` tinyint(1) NOT NULL default '0',
KEY `id_param` (`id_param`,`nom_option`)
) TYPE=MyISAM;
INSERT INTO t1 (id_param,nom_option,valid) VALUES (185,'600x1200',1);
UPDATE t1 SET nom_option='test' WHERE id_param=185 AND nom_option='600x1200' AND valid=1 LIMIT 1;
select * from t1;
id_param nom_option valid
185 test 1
drop table t1;
...@@ -91,3 +91,20 @@ update t1 set b=100 where a=1 order by b desc limit 2; ...@@ -91,3 +91,20 @@ update t1 set b=100 where a=1 order by b desc limit 2;
update t1 set a=a+10+b where a=1 order by b; update t1 set a=a+10+b where a=1 order by b;
select * from t1 order by a,b; select * from t1 order by a,b;
drop table t1; drop table t1;
#
# Test with limit (Bug #393)
#
CREATE TABLE t1 (
`id_param` smallint(3) unsigned NOT NULL default '0',
`nom_option` char(40) NOT NULL default '',
`valid` tinyint(1) NOT NULL default '0',
KEY `id_param` (`id_param`,`nom_option`)
) TYPE=MyISAM;
INSERT INTO t1 (id_param,nom_option,valid) VALUES (185,'600x1200',1);
UPDATE t1 SET nom_option='test' WHERE id_param=185 AND nom_option='600x1200' AND valid=1 LIMIT 1;
select * from t1;
drop table t1;
...@@ -231,9 +231,13 @@ int mysql_update(THD *thd, ...@@ -231,9 +231,13 @@ int mysql_update(THD *thd,
break; /* purecov: inspected */ break; /* purecov: inspected */
} }
if (!--limit && using_limit) if (!--limit && using_limit)
{
error= -1;
break; break;
} }
} }
}
limit= tmp_limit;
end_read_record(&info); end_read_record(&info);
/* Change select to use tempfile */ /* Change select to use tempfile */
if (select) if (select)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment