mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-03 14:33:32 +03:00 
			
		
		
		
	- added more logic for ON DUPICATE KEY UPDATE upon Monty's request; - added an overlay for XtraDB
		
			
				
	
	
		
			174 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			174 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
# 
 | 
						|
# INSERT statements for tables with keys
 | 
						|
#
 | 
						|
--source have_engine.inc
 | 
						|
--source have_default_index.inc
 | 
						|
 | 
						|
--disable_warnings
 | 
						|
DROP TABLE IF EXISTS t1;
 | 
						|
--enable_warnings
 | 
						|
 | 
						|
--let $create_definition = a $int_col, b $char_indexed_col, $default_index(b)
 | 
						|
--source create_table.inc
 | 
						|
if ($mysql_errname)
 | 
						|
{
 | 
						|
    --let $my_last_stmt = $create_statement
 | 
						|
    --let $functionality = Indexes on CHAR columns
 | 
						|
    --source unexpected_result.inc
 | 
						|
}
 | 
						|
if (!$mysql_errname)
 | 
						|
{
 | 
						|
  INSERT INTO t1 (a,b) VALUES (1,'a'),(2,'b'),(3,'c'),(4,'d'),(5,'e');
 | 
						|
  INSERT INTO t1 (a,b) VALUES (100,'a'), (6,'f');
 | 
						|
  INSERT INTO t1 (a,b) VALUES (30,'m'),(29,'n');
 | 
						|
  INSERT INTO t1 (a,b) VALUES (1,'a'),(12345,'z');
 | 
						|
  INSERT INTO t1 (a,b) VALUES (3,'a'),(0,'');
 | 
						|
  --sorted_result
 | 
						|
  SELECT a,b FROM t1;
 | 
						|
  DROP TABLE t1;
 | 
						|
}
 | 
						|
 | 
						|
--let $create_definition = a $int_indexed_col, b $char_col, UNIQUE INDEX(a)
 | 
						|
--source create_table.inc
 | 
						|
if ($mysql_errname)
 | 
						|
{
 | 
						|
  --let $my_last_stmt = $create_statement
 | 
						|
  --let $functionality = Unique indexes
 | 
						|
  --source unexpected_result.inc
 | 
						|
}
 | 
						|
if (!$mysql_errname)
 | 
						|
{
 | 
						|
  INSERT INTO t1 (a,b) VALUES (1,'a'),(2,'b'),(3,'c'),(4,'d'),(5,'e');
 | 
						|
  INSERT INTO t1 (a,b) VALUES (100,'a'), (6,'f');
 | 
						|
  INSERT INTO t1 (a,b) VALUES (30,'m'),(29,'n');
 | 
						|
  --let $error_codes = ER_DUP_ENTRY,ER_DUP_KEY
 | 
						|
  INSERT INTO t1 (a,b) VALUES (1,'a'),(12345,'z');
 | 
						|
  --source check_errors.inc
 | 
						|
  --let $error_codes = ER_DUP_ENTRY,ER_DUP_KEY
 | 
						|
  INSERT INTO t1 (a,b) VALUES (3,'a'),(0,'');
 | 
						|
  --source check_errors.inc
 | 
						|
  INSERT INTO t1 (a,b) VALUES (0,'');
 | 
						|
  --sorted_result
 | 
						|
  SELECT a,b FROM t1;
 | 
						|
 | 
						|
  INSERT IGNORE INTO t1 (a,b) VALUES (1,'a'),(12345,'z');
 | 
						|
  if ($mysql_errname)
 | 
						|
  {
 | 
						|
    --source unexpected_result.inc
 | 
						|
  }
 | 
						|
  INSERT INTO t1 (a,b) VALUES (3,'a'),(4,'d') ON DUPLICATE KEY UPDATE a = a+10;
 | 
						|
  if ($mysql_errname)
 | 
						|
  {
 | 
						|
    --source unexpected_result.inc
 | 
						|
  }
 | 
						|
 | 
						|
  --sorted_result
 | 
						|
  SELECT a,b FROM t1;
 | 
						|
 | 
						|
  DROP TABLE t1;
 | 
						|
}
 | 
						|
 | 
						|
--let $create_definition = a $int_indexed_col, b $char_indexed_col, UNIQUE INDEX(a,b)
 | 
						|
--source create_table.inc
 | 
						|
if ($mysql_errname)
 | 
						|
{
 | 
						|
  --let $my_last_stmt = $create_statement
 | 
						|
  --let $functionality = Multi-part indexes
 | 
						|
  --source unexpected_result.inc
 | 
						|
}
 | 
						|
if (!$mysql_errname)
 | 
						|
{
 | 
						|
  INSERT INTO t1 (a,b) VALUES (1,'a'),(2,'b'),(3,'c'),(4,'d'),(5,'e');
 | 
						|
  INSERT INTO t1 (a,b) VALUES (100,'a'), (6,'f');
 | 
						|
  INSERT INTO t1 (a,b) VALUES (30,'m'),(29,'n');
 | 
						|
  INSERT INTO t1 (a,b) VALUES (100,'b'), (2,'c');
 | 
						|
  --let $error_codes = ER_DUP_ENTRY,ER_DUP_KEY
 | 
						|
  INSERT INTO t1 (a,b) VALUES (1,'a'),(12345,'z');
 | 
						|
  --source check_errors.inc
 | 
						|
  --sorted_result
 | 
						|
  SELECT a,b FROM t1;
 | 
						|
 | 
						|
  INSERT IGNORE INTO t1 (a,b) VALUES (1,'a'),(12345,'z');
 | 
						|
  INSERT INTO t1 (a,b) VALUES (1,'a'),(12345,'z') ON DUPLICATE KEY UPDATE a = a+VALUES(a);
 | 
						|
  --sorted_result
 | 
						|
  SELECT a,b FROM t1;
 | 
						|
 | 
						|
  --let $error_codes = ER_DUP_ENTRY,ER_DUP_KEY
 | 
						|
  INSERT INTO t1 (a,b) VALUES (101,'x'),(101,'x');
 | 
						|
  --source check_errors.inc
 | 
						|
  DROP TABLE t1;
 | 
						|
}
 | 
						|
 | 
						|
--let $create_definition = a $int_indexed_col PRIMARY KEY, b $char_col
 | 
						|
--source create_table.inc
 | 
						|
if ($mysql_errname)
 | 
						|
{
 | 
						|
  --let $my_last_stmt = $create_statement
 | 
						|
  --let $functionality = Primary keys
 | 
						|
  --source unexpected_result.inc
 | 
						|
}
 | 
						|
if (!$mysql_errname)
 | 
						|
{
 | 
						|
  INSERT INTO t1 (a,b) VALUES (1,'a'),(2,'b'),(3,'c'),(4,'d'),(5,'e');
 | 
						|
  INSERT INTO t1 (a,b) VALUES (100,'a'), (6,'f');
 | 
						|
  INSERT INTO t1 (a,b) VALUES (30,'m'),(29,'n');
 | 
						|
  --let $error_codes = ER_DUP_ENTRY,ER_DUP_KEY
 | 
						|
  INSERT INTO t1 (a,b) VALUES (1,'a'),(12345,'z');
 | 
						|
  --source check_errors.inc
 | 
						|
  --let $error_codes = ER_DUP_ENTRY,ER_DUP_KEY
 | 
						|
  INSERT INTO t1 (a,b) VALUES (3,'a'),(0,'');
 | 
						|
  --source check_errors.inc
 | 
						|
  INSERT INTO t1 (a,b) VALUES (0,'');
 | 
						|
  --sorted_result
 | 
						|
  SELECT a,b FROM t1;
 | 
						|
 | 
						|
  INSERT IGNORE INTO t1 (a,b) VALUES (1,'a'),(12345,'z');
 | 
						|
  if ($mysql_errname)
 | 
						|
  {
 | 
						|
    --source unexpected_result.inc
 | 
						|
  }
 | 
						|
 | 
						|
  INSERT INTO t1 (a,b) VALUES (1,'a'),(12345,'z') ON DUPLICATE KEY UPDATE b = CONCAT(b,b);
 | 
						|
  if ($mysql_errname)
 | 
						|
  {
 | 
						|
    --source unexpected_result.inc
 | 
						|
  }
 | 
						|
  --sorted_result
 | 
						|
  SELECT a,b FROM t1;
 | 
						|
 | 
						|
  DROP TABLE t1;
 | 
						|
}  
 | 
						|
 | 
						|
--let $create_definition = a $int_indexed_col UNIQUE KEY, b $int_indexed_col UNIQUE KEY, c $int_col
 | 
						|
--source create_table.inc
 | 
						|
if ($mysql_errname)
 | 
						|
{
 | 
						|
  --let $my_last_stmt = $create_statement
 | 
						|
  --let $functionality = Multiple unique keys
 | 
						|
  --source unexpected_result.inc
 | 
						|
}
 | 
						|
if (!$mysql_errname)
 | 
						|
{
 | 
						|
	INSERT INTO t1 VALUES(1,1,0);
 | 
						|
	INSERT INTO t1 VALUES(2,3,0);
 | 
						|
	INSERT INTO t1 VALUES(3,2,0);
 | 
						|
 | 
						|
	INSERT INTO t1 VALUES(1,1,0) ON DUPLICATE KEY UPDATE c=c+1;
 | 
						|
	INSERT INTO t1 VALUES(2,3,0) ON DUPLICATE KEY UPDATE c=c+1;
 | 
						|
	INSERT INTO t1 VALUES(3,2,0) ON DUPLICATE KEY UPDATE c=c+1;
 | 
						|
 | 
						|
	INSERT INTO t1 VALUES(2,5,0) ON DUPLICATE KEY UPDATE c=c+1;
 | 
						|
	INSERT INTO t1 VALUES(3,5,0) ON DUPLICATE KEY UPDATE c=c+1;
 | 
						|
	INSERT INTO t1 VALUES(5,3,0) ON DUPLICATE KEY UPDATE c=c+1;
 | 
						|
	INSERT INTO t1 VALUES(6,2,0) ON DUPLICATE KEY UPDATE c=c+1;
 | 
						|
	INSERT INTO t1 VALUES(1,3,0) ON DUPLICATE KEY UPDATE c=c+1;
 | 
						|
	INSERT INTO t1 VALUES(2,2,0) ON DUPLICATE KEY UPDATE c=c+1;
 | 
						|
 | 
						|
	--sorted_result
 | 
						|
	SELECT * FROM t1;
 | 
						|
	DROP TABLE t1;
 | 
						|
}
 | 
						|
 | 
						|
--source cleanup_engine.inc
 | 
						|
 |