mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 15:50:51 +03:00 
			
		
		
		
	BitKeeper/etc/ignore: auto-union BitKeeper/etc/logging_ok: auto-union Build-tools/Do-compile: Auto merged VC++Files/sql/mysqld.dsp: Auto merged client/Makefile.am: Auto merged client/mysql.cc: Auto merged BitKeeper/deleted/.del-acinclude.m4~f4ab416bac5003: Auto merged client/mysqltest.c: Auto merged include/my_base.h: Auto merged innobase/dict/dict0dict.c: Auto merged innobase/dict/dict0load.c: Auto merged innobase/include/dict0dict.h: Auto merged innobase/include/row0mysql.h: Auto merged innobase/os/os0file.c: Auto merged innobase/srv/srv0srv.c: Auto merged libmysql/libmysql.c: Auto merged myisam/mi_check.c: Auto merged myisam/mi_rnext_same.c: Auto merged myisam/mi_write.c: Auto merged myisam/sort.c: Auto merged mysql-test/mysql-test-run.sh: Auto merged mysql-test/r/ctype_ucs.result: Auto merged mysql-test/r/ctype_ujis.result: Auto merged mysql-test/r/gis-rtree.result: Auto merged mysql-test/r/group_by.result: Auto merged mysql-test/r/merge.result: Auto merged mysql-test/r/metadata.result: Auto merged mysql-test/r/ndb_alter_table.result: Auto merged mysql-test/r/ps_1general.result: Auto merged mysql-test/r/insert_update.result: Auto merged mysql-test/r/timezone2.result: Auto merged mysql-test/r/type_enum.result: Auto merged mysql-test/r/variables.result: Auto merged mysql-test/t/ctype_ucs.test: Auto merged mysql-test/t/merge.test: Auto merged mysql-test/t/ps_1general.test: Auto merged mysql-test/t/subselect.test: Auto merged mysql-test/t/system_mysql_db_fix.test: Auto merged mysql-test/t/variables.test: Auto merged ndb/include/ndbapi/NdbConnection.hpp: Auto merged ndb/include/ndbapi/NdbDictionary.hpp: Auto merged ndb/src/common/util/version.c: Auto merged ndb/src/kernel/blocks/dbacc/DbaccInit.cpp: Auto merged ndb/src/kernel/blocks/dbacc/Makefile.am: Auto merged ndb/src/kernel/blocks/dbdict/Dbdict.cpp: Auto merged ndb/src/kernel/blocks/dbdih/DbdihMain.cpp: Auto merged ndb/src/kernel/blocks/dblqh/DblqhInit.cpp: Auto merged ndb/src/kernel/blocks/dbtc/DbtcMain.cpp: Auto merged ndb/src/kernel/blocks/dbtux/Dbtux.hpp: Auto merged ndb/src/ndbapi/NdbBlob.cpp: Auto merged ndb/src/ndbapi/NdbConnection.cpp: Auto merged ndb/src/ndbapi/NdbDictionary.cpp: Auto merged ndb/src/ndbapi/NdbDictionaryImpl.cpp: Auto merged ndb/src/ndbapi/NdbDictionaryImpl.hpp: Auto merged ndb/src/ndbapi/NdbOperationExec.cpp: Auto merged ndb/src/ndbapi/NdbScanOperation.cpp: Auto merged ndb/test/ndbapi/Makefile.am: Auto merged scripts/make_win_src_distribution.sh: Auto merged scripts/mysql_install_db.sh: Auto merged sql/field.cc: Auto merged sql/ha_innodb.cc: Auto merged sql/ha_ndbcluster.cc: Auto merged sql/ha_ndbcluster.h: Auto merged sql/handler.cc: Auto merged sql/item_cmpfunc.cc: Auto merged sql/item_create.h: Auto merged sql/item_func.cc: Auto merged sql/item_geofunc.cc: Auto merged sql/item_row.cc: Auto merged sql/item_strfunc.cc: Auto merged sql/item_strfunc.h: Auto merged sql/item_sum.cc: Auto merged sql/item_sum.h: Auto merged sql/log.cc: Auto merged sql/log_event.cc: Auto merged sql/mysqld.cc: Auto merged sql/net_serv.cc: Auto merged sql/password.c: Auto merged sql/protocol.cc: Auto merged sql/repl_failsafe.cc: Auto merged sql/set_var.cc: Auto merged sql/slave.cc: Auto merged sql/sql_acl.cc: Auto merged sql/sql_cache.cc: Auto merged sql/sql_class.cc: Auto merged sql/sql_derived.cc: Auto merged sql/sql_do.cc: Auto merged sql/sql_handler.cc: Auto merged sql/sql_help.cc: Auto merged sql/sql_lex.cc: Auto merged sql/sql_lex.h: Auto merged sql/sql_repl.cc: Auto merged sql/sql_show.cc: Auto merged sql/sql_union.cc: Auto merged sql/examples/ha_archive.cc: Auto merged sql/strfunc.cc: Auto merged sql/table.cc: Auto merged sql/table.h: Auto merged sql/tztime.h: Auto merged sql/udf_example.cc: Auto merged sql/unireg.cc: Auto merged Makefile.am: Simple merge client/mysqldump.c: Simple merge configure.in: Simple merge libmysqld/lib_sql.cc: Automatic merge mysql-test/r/func_str.result: Automatic merge mysql-test/r/grant.result: simple merge mysql-test/r/multi_update.result: automatc merge mysql-test/r/ps.result: automatic merge mysql-test/r/ps_2myisam.result: Automatic merge mysql-test/r/ps_3innodb.result: Automatic merge mysql-test/r/ps_4heap.result: Automatic merge mysql-test/r/ps_5merge.result: Automatic merge mysql-test/r/ps_6bdb.result: Automatic merge mysql-test/r/ps_7ndb.result: Automatic merge mysql-test/r/show_check.result: Automatic merge mysql-test/r/subselect.result: Automatic merge mysql-test/t/grant.test: Automatic merge mysql-test/t/multi_update.test: Automatic merge mysql-test/t/ps.test: Automatic merge mysql-test/t/show_check.test: Automatic merge ndb/docs/wl2077.txt: merge ndb/src/mgmsrv/main.cpp: merge scripts/mysql_fix_privilege_tables.sh: merge sql/item.cc: Merge (difficult) sql/item.h: simple merge sql/item_cmpfunc.h: Automatic merge sql/item_subselect.cc: Simple merge sql/item_subselect.h: Automatic merge sql/mysql_priv.h: Simple merge sql/slave.h: Automatic merge sql/sql_base.cc: Removed code that was backported to 4.1 sql/sql_class.h: Merge (some code moved to sql_insert.cc) sql/sql_db.cc: simple merge sql/sql_insert.cc: Merge (difficult as logic had changed both in 4.1 and 5.0) Some coded moved here from sql_class.h sql/sql_parse.cc: Merge (difficult) sql/sql_prepare.cc: Simple merge sql/sql_select.cc: Automatic merge sql/sql_table.cc: Simple merge sql/sql_update.cc: Difficult merge because of different logic for multi-updates sql/sql_yacc.yy: Simple merge tests/client_test.c: Simple merge
		
			
				
	
	
		
			170 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			170 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| DROP TABLE IF EXISTS t1;
 | |
| CREATE TABLE t1 (a INT, b INT, c INT, UNIQUE (A), UNIQUE(B));
 | |
| INSERT t1 VALUES (1,2,10), (3,4,20);
 | |
| INSERT t1 VALUES (5,6,30) ON DUPLICATE KEY UPDATE c=c+100;
 | |
| SELECT * FROM t1;
 | |
| a	b	c
 | |
| 1	2	10
 | |
| 3	4	20
 | |
| 5	6	30
 | |
| INSERT t1 VALUES (5,7,40) ON DUPLICATE KEY UPDATE c=c+100;
 | |
| SELECT * FROM t1;
 | |
| a	b	c
 | |
| 1	2	10
 | |
| 3	4	20
 | |
| 5	6	130
 | |
| INSERT t1 VALUES (8,4,50) ON DUPLICATE KEY UPDATE c=c+1000;
 | |
| SELECT * FROM t1;
 | |
| a	b	c
 | |
| 1	2	10
 | |
| 3	4	1020
 | |
| 5	6	130
 | |
| INSERT t1 VALUES (1,4,60) ON DUPLICATE KEY UPDATE c=c+10000;
 | |
| SELECT * FROM t1;
 | |
| a	b	c
 | |
| 1	2	10010
 | |
| 3	4	1020
 | |
| 5	6	130
 | |
| INSERT t1 VALUES (1,9,70) ON DUPLICATE KEY UPDATE c=c+100000, b=4;
 | |
| ERROR 23000: Duplicate entry '4' for key 2
 | |
| SELECT * FROM t1;
 | |
| a	b	c
 | |
| 1	2	10010
 | |
| 3	4	1020
 | |
| 5	6	130
 | |
| TRUNCATE TABLE t1;
 | |
| INSERT t1 VALUES (1,2,10), (3,4,20);
 | |
| INSERT t1 VALUES (5,6,30), (7,4,40), (8,9,60) ON DUPLICATE KEY UPDATE c=c+100;
 | |
| SELECT * FROM t1;
 | |
| a	b	c
 | |
| 1	2	10
 | |
| 3	4	120
 | |
| 5	6	30
 | |
| 8	9	60
 | |
| INSERT t1 SET a=5 ON DUPLICATE KEY UPDATE b=0;
 | |
| SELECT * FROM t1;
 | |
| a	b	c
 | |
| 1	2	10
 | |
| 3	4	120
 | |
| 5	0	30
 | |
| 8	9	60
 | |
| INSERT t1 VALUES (2,1,11), (7,4,40) ON DUPLICATE KEY UPDATE c=c+VALUES(a);
 | |
| SELECT *, VALUES(a) FROM t1;
 | |
| a	b	c	VALUES(a)
 | |
| 1	2	10	NULL
 | |
| 3	4	127	NULL
 | |
| 5	0	30	NULL
 | |
| 8	9	60	NULL
 | |
| 2	1	11	NULL
 | |
| explain extended SELECT *, VALUES(a) FROM t1;
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	5	
 | |
| Warnings:
 | |
| Note	1003	select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t1`.`c` AS `c`,values(`test`.`t1`.`a`) AS `VALUES(a)` from `test`.`t1`
 | |
| explain extended select * from t1 where values(a);
 | |
| id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
 | |
| 1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE
 | |
| Warnings:
 | |
| Note	1003	select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t1`.`c` AS `c` from `test`.`t1`
 | |
| DROP TABLE t1;
 | |
| create table t1(a int primary key, b int);
 | |
| insert into t1 values(1,1),(2,2),(3,3),(4,4),(5,5);
 | |
| select * from t1;
 | |
| a	b
 | |
| 1	1
 | |
| 2	2
 | |
| 3	3
 | |
| 4	4
 | |
| 5	5
 | |
| insert into t1 values(4,14),(5,15),(6,16),(7,17),(8,18)
 | |
| on duplicate key update b=b+10;
 | |
| affected rows: 7
 | |
| info: Records: 5  Duplicates: 2  Warnings: 0
 | |
| select * from t1;
 | |
| a	b
 | |
| 1	1
 | |
| 2	2
 | |
| 3	3
 | |
| 4	14
 | |
| 5	15
 | |
| 6	16
 | |
| 7	17
 | |
| 8	18
 | |
| replace into t1 values(5,25),(6,26),(7,27),(8,28),(9,29);
 | |
| affected rows: 9
 | |
| info: Records: 5  Duplicates: 4  Warnings: 0
 | |
| select * from t1;
 | |
| a	b
 | |
| 1	1
 | |
| 2	2
 | |
| 3	3
 | |
| 4	14
 | |
| 5	25
 | |
| 6	26
 | |
| 7	27
 | |
| 8	28
 | |
| 9	29
 | |
| drop table t1;
 | |
| CREATE TABLE t1 (a INT, b INT, c INT, UNIQUE (A), UNIQUE(B));
 | |
| INSERT t1 VALUES (1,2,10), (3,4,20);
 | |
| INSERT t1 SELECT 5,6,30 FROM DUAL ON DUPLICATE KEY UPDATE c=c+100;
 | |
| SELECT * FROM t1;
 | |
| a	b	c
 | |
| 1	2	10
 | |
| 3	4	20
 | |
| 5	6	30
 | |
| INSERT t1 SELECT 5,7,40 FROM DUAL ON DUPLICATE KEY UPDATE c=c+100;
 | |
| SELECT * FROM t1;
 | |
| a	b	c
 | |
| 1	2	10
 | |
| 3	4	20
 | |
| 5	6	130
 | |
| INSERT t1 SELECT 8,4,50 FROM DUAL ON DUPLICATE KEY UPDATE c=c+1000;
 | |
| SELECT * FROM t1;
 | |
| a	b	c
 | |
| 1	2	10
 | |
| 3	4	1020
 | |
| 5	6	130
 | |
| INSERT t1 SELECT 1,4,60 FROM DUAL ON DUPLICATE KEY UPDATE c=c+10000;
 | |
| SELECT * FROM t1;
 | |
| a	b	c
 | |
| 1	2	10010
 | |
| 3	4	1020
 | |
| 5	6	130
 | |
| INSERT t1 SELECT 1,9,70 FROM DUAL ON DUPLICATE KEY UPDATE c=c+100000, b=4;
 | |
| ERROR 23000: Duplicate entry '4' for key 2
 | |
| SELECT * FROM t1;
 | |
| a	b	c
 | |
| 1	2	10010
 | |
| 3	4	1020
 | |
| 5	6	130
 | |
| TRUNCATE TABLE t1;
 | |
| INSERT t1 VALUES (1,2,10), (3,4,20);
 | |
| CREATE TABLE t2 (x INT, y INT, z INT, d INT);
 | |
| INSERT t2 VALUES (5,6,30,1), (7,4,40,1), (8,9,60,1);
 | |
| INSERT t2 VALUES (2,1,11,2), (7,4,40,2);
 | |
| INSERT t1 SELECT x,y,z FROM t2 WHERE d=1 ON DUPLICATE KEY UPDATE c=c+100;
 | |
| SELECT * FROM t1;
 | |
| a	b	c
 | |
| 1	2	10
 | |
| 3	4	120
 | |
| 5	6	30
 | |
| 8	9	60
 | |
| INSERT t1 SET a=5 ON DUPLICATE KEY UPDATE b=0;
 | |
| SELECT * FROM t1;
 | |
| a	b	c
 | |
| 1	2	10
 | |
| 3	4	120
 | |
| 5	0	30
 | |
| 8	9	60
 | |
| INSERT t1 SELECT x,y,z FROM t2 WHERE d=2 ON DUPLICATE KEY UPDATE c=c+VALUES(a);
 | |
| SELECT *, VALUES(a) FROM t1;
 | |
| a	b	c	VALUES(a)
 | |
| 1	2	10	NULL
 | |
| 3	4	127	NULL
 | |
| 5	0	30	NULL
 | |
| 8	9	60	NULL
 | |
| 2	1	11	NULL
 | |
| DROP TABLE t1;
 | |
| DROP TABLE t2;
 |