mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 13:02:28 +01:00
bbab9ec678
Noteworthy: - New HANDLER code - New multi-update-grant-check code - Table lock code in ha_innodb.cc was not applied BitKeeper/etc/logging_ok: auto-union BitKeeper/deleted/.del-ctype-latin1_de.c~c5d8f9208bceb98e: Auto merged Build-tools/mysql-copyright-2: Auto merged acinclude.m4: Auto merged client/mysqladmin.c: Auto merged client/mysqldump.c: Auto merged include/config-win.h: Auto merged include/my_global.h: Auto merged include/myisam.h: Auto merged innobase/btr/btr0btr.c: Auto merged innobase/buf/buf0buf.c: Auto merged ltmain.sh: Auto merged innobase/dict/dict0dict.c: Auto merged innobase/fsp/fsp0fsp.c: Auto merged innobase/include/dict0dict.h: Auto merged innobase/include/row0mysql.h: Auto merged innobase/log/log0log.c: Auto merged innobase/log/log0recv.c: Auto merged innobase/pars/pars0opt.c: Auto merged innobase/row/row0row.c: Auto merged innobase/sync/sync0arr.c: Auto merged innobase/ut/ut0dbg.c: Auto merged myisam/mi_check.c: Auto merged myisam/mi_close.c: Auto merged myisam/mi_create.c: Auto merged myisam/mi_locking.c: Auto merged myisam/myisampack.c: Auto merged mysql-test/r/delete.result: Auto merged mysql-test/r/func_if.result: Auto merged Build-tools/mysql-copyright: Merge with 4.0 (too most of the code from 4.0) Makefile.am: merge client/mysql.cc: Used 4.1 code configure.in: merge innobase/os/os0file.c: merge innobase/row/row0mysql.c: merge mysql-test/r/ctype_latin1_de.result: merge mysql-test/r/flush_table.result: merge mysql-test/r/func_str.result: merge mysql-test/r/handler.result: merge mysql-test/r/multi_update.result: merge mysql-test/r/type_timestamp.result: Removed testing of 'new' mode, as this is only relevant for 4.0 mysql-test/r/update.result: merge mysql-test/t/delete.test: merge mysql-test/t/flush_table.test: merge mysql-test/t/func_str.test: merge mysql-test/t/handler.test: merge mysql-test/t/multi_update.test: merge mysql-test/t/type_timestamp.test: Removed testing of 'new' mode, as this is only relevant for 4.0 mysql-test/t/update.test: merge mysys/errors.c: merge mysys/my_fstream.c: merge mysys/my_pread.c: merge mysys/my_write.c: merge mysys/mysys_priv.h: merge scripts/mysqlhotcopy.sh: merge sql/field.cc: Keep code from 4.1 sql/field.h: Keep code from 4.1 sql/ha_innodb.cc: Don't merge lock code from 4.0; Heikki will look at this sql/ha_myisam.cc: merge sql/handler.cc: merge sql/item_cmpfunc.cc: merge sql/item_cmpfunc.h: merge sql/item_strfunc.cc: merge sql/mysql_priv.h: merge sql/mysqld.cc: merge sql/protocol.cc: merge sql/records.cc: merge sql/repl_failsafe.cc: merge mysql-test/r/lock_multi.result: merge mysql-test/t/ctype_latin1_de.test: merge mysql-test/t/func_if.test: merge mysql-test/t/lock_multi.test: merge sql/repl_failsafe.h: merge Remove unnessessary header protection sql/slave.h: merge sql/sql_acl.cc: merge sql/sql_base.cc: merge sql/sql_cache.cc: auto merge sql/sql_class.cc: merge sql/sql_class.h: merge sql/sql_delete.cc: merge sql/sql_handler.cc: Get new HANDLER code into 4.1 sql/sql_parse.cc: Keep old file sql/sql_repl.cc: merge sql/sql_repl.h: merge sql/sql_show.cc: merge sql/sql_table.cc: merge sql/sql_union.cc: Applied the examine_rows bug fix from 4.0 by hand sql/sql_update.cc: New multi-update-grant-check code from 4.0 sql/sql_yacc.yy: New multi-update-grant-check code from 4.0 sql/stacktrace.c: merge sql/table.h: merge
163 lines
5.4 KiB
Text
163 lines
5.4 KiB
Text
#
|
|
# test of updating of keys
|
|
#
|
|
|
|
--disable_warnings
|
|
drop table if exists t1,t2;
|
|
--enable_warnings
|
|
|
|
create table t1 (a int auto_increment , primary key (a));
|
|
insert into t1 values (NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL);
|
|
update t1 set a=a+10 where a > 34;
|
|
update t1 set a=a+100 where a > 0;
|
|
|
|
# Some strange updates to test some otherwise unused code
|
|
update t1 set a=a+100 where a=1 and a=2;
|
|
--error 1054
|
|
update t1 set a=b+100 where a=1 and a=2;
|
|
--error 1054
|
|
update t1 set a=b+100 where c=1 and a=2;
|
|
--error 1054
|
|
update t1 set d=a+100 where a=1;
|
|
select * from t1;
|
|
drop table t1;
|
|
|
|
CREATE TABLE t1
|
|
(
|
|
place_id int (10) unsigned NOT NULL,
|
|
shows int(10) unsigned DEFAULT '0' NOT NULL,
|
|
ishows int(10) unsigned DEFAULT '0' NOT NULL,
|
|
ushows int(10) unsigned DEFAULT '0' NOT NULL,
|
|
clicks int(10) unsigned DEFAULT '0' NOT NULL,
|
|
iclicks int(10) unsigned DEFAULT '0' NOT NULL,
|
|
uclicks int(10) unsigned DEFAULT '0' NOT NULL,
|
|
ts timestamp(14),
|
|
PRIMARY KEY (place_id,ts)
|
|
);
|
|
|
|
INSERT INTO t1 (place_id,shows,ishows,ushows,clicks,iclicks,uclicks,ts)
|
|
VALUES (1,0,0,0,0,0,0,20000928174434);
|
|
UPDATE t1 SET shows=shows+1,ishows=ishows+1,ushows=ushows+1,clicks=clicks+1,iclicks=iclicks+1,uclicks=uclicks+1 WHERE place_id=1 AND ts>="2000-09-28 00:00:00";
|
|
select place_id,shows from t1;
|
|
drop table t1;
|
|
|
|
#
|
|
# Test bug with update reported by Jan Legenhausen
|
|
#
|
|
|
|
CREATE TABLE t1 (
|
|
lfdnr int(10) unsigned NOT NULL default '0',
|
|
ticket int(10) unsigned NOT NULL default '0',
|
|
client varchar(255) NOT NULL default '',
|
|
replyto varchar(255) NOT NULL default '',
|
|
subject varchar(100) NOT NULL default '',
|
|
timestamp int(10) unsigned NOT NULL default '0',
|
|
tstamp timestamp(14) NOT NULL,
|
|
status int(3) NOT NULL default '0',
|
|
type varchar(15) NOT NULL default '',
|
|
assignment int(10) unsigned NOT NULL default '0',
|
|
fupcount int(4) unsigned NOT NULL default '0',
|
|
parent int(10) unsigned NOT NULL default '0',
|
|
activity int(10) unsigned NOT NULL default '0',
|
|
priority tinyint(1) unsigned NOT NULL default '1',
|
|
cc varchar(255) NOT NULL default '',
|
|
bcc varchar(255) NOT NULL default '',
|
|
body text NOT NULL,
|
|
comment text,
|
|
header text,
|
|
PRIMARY KEY (lfdnr),
|
|
KEY k1 (timestamp),
|
|
KEY k2 (type),
|
|
KEY k3 (parent),
|
|
KEY k4 (assignment),
|
|
KEY ticket (ticket)
|
|
) ENGINE=MyISAM;
|
|
|
|
INSERT INTO t1 VALUES (773,773,'','','',980257344,20010318180652,0,'Open',10,0,0,0,1,'','','','','');
|
|
|
|
alter table t1 change lfdnr lfdnr int(10) unsigned not null auto_increment;
|
|
update t1 set status=1 where type='Open';
|
|
select status from t1;
|
|
drop table t1;
|
|
|
|
#
|
|
# Test of ORDER BY
|
|
#
|
|
|
|
create table t1 (a int not null, b int not null, key (a));
|
|
insert into t1 values (1,1),(1,2),(1,3),(3,1),(3,2),(3,3),(3,1),(3,2),(3,3),(2,1),(2,2),(2,3);
|
|
SET @tmp=0;
|
|
update t1 set b=(@tmp:=@tmp+1) order by a;
|
|
update t1 set b=99 where a=1 order by b asc limit 1;
|
|
select * from t1 order by a,b;
|
|
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;
|
|
select * from t1 order by a,b;
|
|
create table t2 (a int not null, b int not null);
|
|
insert into t2 values (1,1),(1,2),(1,3);
|
|
update t1 set b=(select distinct 1 from (select * from t2) a);
|
|
drop table t1,t2;
|
|
|
|
#
|
|
# 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`)
|
|
) ENGINE=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;
|
|
|
|
#
|
|
# Multi table update test from bugs
|
|
#
|
|
|
|
create table t1 (F1 VARCHAR(30), F2 VARCHAR(30), F3 VARCHAR(30), cnt int, groupid int, KEY groupid_index (groupid));
|
|
|
|
insert into t1 (F1,F2,F3,cnt,groupid) values ('0','0','0',1,6),
|
|
('0','1','2',1,5), ('0','2','0',1,3), ('1','0','1',1,2),
|
|
('1','2','1',1,1), ('1','2','2',1,1), ('2','0','1',2,4),
|
|
('2','2','0',1,7);
|
|
delete from m1 using t1 m1,t1 m2 where m1.groupid=m2.groupid and (m1.cnt < m2.cnt or m1.cnt=m2.cnt and m1.F3>m2.F3);
|
|
select * from t1;
|
|
drop table t1;
|
|
|
|
#
|
|
# Bug#5553 - Multi table UPDATE IGNORE fails on duplicate keys
|
|
#
|
|
|
|
CREATE TABLE t1 (
|
|
`colA` int(10) unsigned NOT NULL auto_increment,
|
|
`colB` int(11) NOT NULL default '0',
|
|
PRIMARY KEY (`colA`)
|
|
);
|
|
INSERT INTO t1 VALUES (4433,5424);
|
|
CREATE TABLE t2 (
|
|
`colC` int(10) unsigned NOT NULL default '0',
|
|
`colA` int(10) unsigned NOT NULL default '0',
|
|
`colD` int(10) unsigned NOT NULL default '0',
|
|
`colE` int(10) unsigned NOT NULL default '0',
|
|
`colF` int(10) unsigned NOT NULL default '0',
|
|
PRIMARY KEY (`colC`,`colA`,`colD`,`colE`)
|
|
);
|
|
INSERT INTO t2 VALUES (3,4433,10005,495,500);
|
|
INSERT INTO t2 VALUES (3,4433,10005,496,500);
|
|
INSERT INTO t2 VALUES (3,4433,10009,494,500);
|
|
INSERT INTO t2 VALUES (3,4433,10011,494,500);
|
|
INSERT INTO t2 VALUES (3,4433,10005,497,500);
|
|
INSERT INTO t2 VALUES (3,4433,10013,489,500);
|
|
INSERT INTO t2 VALUES (3,4433,10005,494,500);
|
|
INSERT INTO t2 VALUES (3,4433,10005,493,500);
|
|
INSERT INTO t2 VALUES (3,4433,10005,492,500);
|
|
UPDATE IGNORE t2,t1 set t2.colE = t2.colE + 1,colF=0 WHERE t1.colA = t2.colA AND (t1.colB & 4096) > 0 AND (colE + 1) < colF;
|
|
SELECT * FROM t2;
|
|
DROP TABLE t1;
|
|
DROP TABLE t2;
|
|
|