summaryrefslogtreecommitdiff
path: root/mysql-test/main/auto_increment_ranges_innodb.test
diff options
context:
space:
mode:
authorAlexey Botchkov <holyfoot@askmonty.org>2020-11-23 14:12:30 +0400
committerAlexey Botchkov <holyfoot@askmonty.org>2020-11-23 14:12:30 +0400
commit75e7132fca1c4634d4aa8d18d386c55932a5e1b6 (patch)
treeddd3bb2821e952f644e1f7affd100e6b553d57e9 /mysql-test/main/auto_increment_ranges_innodb.test
parenteae9311fa2b15eb8a0698444a27af5b70acfb4b2 (diff)
downloadmariadb-git-75e7132fca1c4634d4aa8d18d386c55932a5e1b6.tar.gz
MDEV-21842 auto_increment does not increment with compound primary key on partitioned table.
The idea of this fix is that it's enough to prevent the next_auto_inc_val from incrementing if an error, to fix this problem and also the MDEV-17333. So this patch basically reverts the existing fix to the MDEV-17333.
Diffstat (limited to 'mysql-test/main/auto_increment_ranges_innodb.test')
-rw-r--r--mysql-test/main/auto_increment_ranges_innodb.test59
1 files changed, 59 insertions, 0 deletions
diff --git a/mysql-test/main/auto_increment_ranges_innodb.test b/mysql-test/main/auto_increment_ranges_innodb.test
index 016ca16bd91..92d377eb147 100644
--- a/mysql-test/main/auto_increment_ranges_innodb.test
+++ b/mysql-test/main/auto_increment_ranges_innodb.test
@@ -18,3 +18,62 @@ select * from t1;
drop table t1;
--let $datadir=`select @@datadir`
--remove_file $datadir/test/load.data
+
+--echo #
+--echo # MDEV-21842: auto_increment does not increment with compound primary
+--echo # key on partitioned table
+--echo #
+
+create or replace table `t` (
+ `id` bigint(20) unsigned not null auto_increment,
+ `a` int(10) not null ,
+ `dt` date not null,
+ primary key (`id`, `dt`) ,
+ unique key (`a`, `dt`)
+)
+ partition by range columns(`dt`)
+(
+ partition `p202002` values less than ('2020-03-01'),
+ partition `P202003` values less than ('2020-04-01')
+);
+
+connect (con1, localhost, root,,);
+connect (con2, localhost, root,,);
+
+--connection con1
+start transaction;
+insert into t (a, dt) values (1, '2020-02-29');
+
+--connection con2
+start transaction;
+let $conn2_id= `SELECT CONNECTION_ID()`;
+send insert into t (a, dt) values (1, '2020-02-29');
+
+--connection con1
+# Ensure that the above insert via conn2 increments next_auto_inc_val
+# before the following insert via conn1 starts.
+let $wait_condition=select 1 from Information_schema.INNODB_TRX
+ where trx_mysql_thread_id = $conn2_id and trx_state = 'LOCK WAIT'
+ and trx_query = "insert into t (a, dt) values (1, '2020-02-29')";
+--source include/wait_condition.inc
+
+insert into t (a, dt) values (2, '2020-02-29');
+select auto_increment from information_schema.tables where table_name='t';
+commit;
+
+--connection con2
+--error ER_DUP_ENTRY
+reap;
+
+--connection con1
+select auto_increment from information_schema.tables where table_name='t';
+insert into t (a, dt) values (3, '2020-02-29');
+insert into t (a, dt) values (4, '2020-02-29');
+
+disconnect con1;
+disconnect con2;
+
+--connection default
+select * from t;
+drop table t;
+