diff --git a/mysql-test/suite/innodb/r/autoinc_persist.result b/mysql-test/suite/innodb/r/autoinc_persist.result
index ee796160406..91d6d908a82 100644
--- a/mysql-test/suite/innodb/r/autoinc_persist.result
+++ b/mysql-test/suite/innodb/r/autoinc_persist.result
@@ -242,7 +242,7 @@ DELETE FROM t9 WHERE a > 100000000000;
 SELECT MAX(a) AS `Expect 100000000000` FROM t9;
 Expect 100000000000
 100000000000
-CREATE TABLE t13(a INT AUTO_INCREMENT PRIMARY KEY) ENGINE = InnoDB,
+CREATE TABLE t13(a INT AUTO_INCREMENT KEY) ENGINE = InnoDB,
 AUTO_INCREMENT = 1234;
 # restart
 SHOW CREATE TABLE t13;
@@ -882,8 +882,7 @@ a	b
 5	4
 SET SQL_MODE = 0;
 # Scenario 10: Rollback would not rollback the counter
-CREATE TABLE t32 (
-a BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT) ENGINE=InnoDB;
+CREATE TABLE t32 (a BIGINT AUTO_INCREMENT PRIMARY KEY) ENGINE=InnoDB;
 INSERT INTO t32 VALUES(0), (0);
 # Ensure that all changes before the server is killed are persisted.
 set global innodb_flush_log_at_trx_commit=1;
@@ -898,8 +897,7 @@ ROLLBACK;
 # increasing the counter
 CREATE TABLE t33 (
 a BIGINT NOT NULL PRIMARY KEY,
-b BIGINT NOT NULL AUTO_INCREMENT,
-KEY(b)) ENGINE = InnoDB;
+b BIGINT NOT NULL AUTO_INCREMENT, KEY(b)) ENGINE = InnoDB;
 INSERT INTO t33 VALUES(1, NULL);
 INSERT INTO t33 VALUES(2, NULL);
 INSERT INTO t33 VALUES(2, NULL);
@@ -967,8 +965,7 @@ UNLOCK TABLES;
 DROP TABLE t33;
 CREATE TABLE t33 (
 a BIGINT NOT NULL PRIMARY KEY,
-b BIGINT NOT NULL AUTO_INCREMENT,
-KEY(b)) ENGINE = InnoDB;
+b BIGINT NOT NULL AUTO_INCREMENT, KEY(b)) ENGINE = InnoDB;
 ALTER TABLE t33 DISCARD TABLESPACE;
 restore: t33 .ibd and .cfg files
 ALTER TABLE t33 IMPORT TABLESPACE;
diff --git a/mysql-test/suite/innodb/t/autoinc_persist.combinations b/mysql-test/suite/innodb/t/autoinc_persist.combinations
new file mode 100644
index 00000000000..4ae2948e523
--- /dev/null
+++ b/mysql-test/suite/innodb/t/autoinc_persist.combinations
@@ -0,0 +1,2 @@
+[asc]
+[desc]
diff --git a/mysql-test/suite/innodb/t/autoinc_persist.test b/mysql-test/suite/innodb/t/autoinc_persist.test
index 6e094b40e02..e4746e3e8ae 100644
--- a/mysql-test/suite/innodb/t/autoinc_persist.test
+++ b/mysql-test/suite/innodb/t/autoinc_persist.test
@@ -2,6 +2,19 @@
 # Restarting is not supported when testing the embedded server.
 --source include/not_embedded.inc
 
+if ($MTR_COMBINATION_DESC) {
+  let $AUTO_INCREMENT_KEY_a= AUTO_INCREMENT, PRIMARY KEY(a DESC);
+  let $AUTO_INCREMENT_KEY_b= AUTO_INCREMENT, INDEX(b DESC);
+  let $AUTO_INCREMENT_PRIMARY_KEY_a= AUTO_INCREMENT, PRIMARY KEY(a DESC);
+  let $AUTO_INCREMENT_PRIMARY_KEY_b= AUTO_INCREMENT, PRIMARY KEY(b DESC);
+}
+if (!$MTR_COMBINATION_DESC) {
+  let $AUTO_INCREMENT_KEY_a= AUTO_INCREMENT KEY;
+  let $AUTO_INCREMENT_KEY_b= AUTO_INCREMENT, KEY(b);
+  let $AUTO_INCREMENT_PRIMARY_KEY_a= AUTO_INCREMENT PRIMARY KEY;
+  let $AUTO_INCREMENT_PRIMARY_KEY_b= AUTO_INCREMENT PRIMARY KEY;
+}
+
 --echo #
 --echo # MDEV-6076 Persistent AUTO_INCREMENT for InnoDB
 --echo #
@@ -20,72 +33,72 @@
 
 SET SQL_MODE='STRICT_ALL_TABLES';
 
-CREATE TABLE t1(a TINYINT AUTO_INCREMENT KEY) ENGINE = InnoDB;
+eval CREATE TABLE t1(a TINYINT $AUTO_INCREMENT_KEY_a) ENGINE = InnoDB;
 INSERT INTO t1 VALUES(0), (0), (0), (0), (-1), (-10), (0),
 (20), (30), (31);
 SELECT * FROM t1;
 
-CREATE TABLE t2(a TINYINT UNSIGNED AUTO_INCREMENT KEY) ENGINE = InnoDB;
+eval CREATE TABLE t2(a TINYINT UNSIGNED $AUTO_INCREMENT_KEY_a) ENGINE = InnoDB;
 --error ER_WARN_DATA_OUT_OF_RANGE
 INSERT INTO t2 VALUES(-5);
 INSERT INTO t2 VALUES(0), (0), (0), (0), (8), (10), (0),
 (20), (30), (31);
 SELECT * FROM t2;
 
-CREATE TABLE t3(a SMALLINT AUTO_INCREMENT KEY) ENGINE = InnoDB;
+eval CREATE TABLE t3(a SMALLINT $AUTO_INCREMENT_KEY_a) ENGINE = InnoDB;
 INSERT INTO t3 VALUES(0), (0), (0), (0), (-1), (-10), (0),
 (20), (30), (31), (1024), (4096);
 SELECT * FROM t3;
 
-CREATE TABLE t4(a SMALLINT UNSIGNED AUTO_INCREMENT KEY) ENGINE = InnoDB;
+eval CREATE TABLE t4(a SMALLINT UNSIGNED $AUTO_INCREMENT_KEY_a) ENGINE = InnoDB;
 --error ER_WARN_DATA_OUT_OF_RANGE
 INSERT INTO t4 VALUES(-5);
 INSERT INTO t4 VALUES(0), (0), (0), (0), (8), (10), (0),
 (20), (30), (31), (1024), (4096);
 SELECT * FROM t4;
 
-CREATE TABLE t5(a MEDIUMINT AUTO_INCREMENT KEY) ENGINE = InnoDB;
+eval CREATE TABLE t5(a MEDIUMINT $AUTO_INCREMENT_KEY_a) ENGINE = InnoDB;
 INSERT INTO t5 VALUES(0), (0), (0), (0), (-1), (-10), (0),
 (20), (30), (31), (1000000), (1000005);
 SELECT * FROM t5;
 
-CREATE TABLE t6(a MEDIUMINT UNSIGNED AUTO_INCREMENT KEY) ENGINE = InnoDB;
+eval CREATE TABLE t6(a MEDIUMINT UNSIGNED $AUTO_INCREMENT_KEY_a) ENGINE = InnoDB;
 --error ER_WARN_DATA_OUT_OF_RANGE
 INSERT INTO t6 VALUES(-5);
 INSERT INTO t6 VALUES(0), (0), (0), (0), (8), (10), (0),
 (20), (30), (31), (1000000), (1000005);
 SELECT * FROM t6;
 
-CREATE TABLE t7(a INT AUTO_INCREMENT KEY) ENGINE = InnoDB;
+eval CREATE TABLE t7(a INT $AUTO_INCREMENT_KEY_a) ENGINE = InnoDB;
 INSERT INTO t7 VALUES(0), (0), (0), (0), (-1), (-10), (0),
 (20), (30), (31), (100000000), (100000008);
 SELECT * FROM t7;
 
-CREATE TABLE t8(a INT UNSIGNED AUTO_INCREMENT KEY) ENGINE = InnoDB;
+eval CREATE TABLE t8(a INT UNSIGNED $AUTO_INCREMENT_KEY_a) ENGINE = InnoDB;
 --error ER_WARN_DATA_OUT_OF_RANGE
 INSERT INTO t8 VALUES(-5);
 INSERT INTO t8 VALUES(0), (0), (0), (0), (8), (10), (0),
 (20), (30), (31), (100000000), (100000008);
 SELECT * FROM t8;
 
-CREATE TABLE t9(a BIGINT AUTO_INCREMENT KEY) ENGINE = InnoDB;
+eval CREATE TABLE t9(a BIGINT $AUTO_INCREMENT_KEY_a) ENGINE = InnoDB;
 INSERT INTO t9 VALUES(0), (0), (0), (0), (-1), (-10), (0),
 (20), (30), (31), (100000000000), (100000000006);
 SELECT * FROM t9;
 
-CREATE TABLE t10(a BIGINT UNSIGNED AUTO_INCREMENT KEY) ENGINE = InnoDB;
+eval CREATE TABLE t10(a BIGINT UNSIGNED $AUTO_INCREMENT_KEY_a) ENGINE = InnoDB;
 --error ER_WARN_DATA_OUT_OF_RANGE
 INSERT INTO t10 VALUES(-5);
 INSERT INTO t10 VALUES(0), (0), (0), (0), (8), (10), (0),
 (20), (30), (31), (100000000000), (100000000006);
 SELECT * FROM t10;
 
-CREATE TABLE t11(a FLOAT AUTO_INCREMENT KEY) ENGINE = InnoDB;
+eval CREATE TABLE t11(a FLOAT $AUTO_INCREMENT_KEY_a) ENGINE = InnoDB;
 INSERT INTO t11 VALUES(0), (0), (0), (0), (-1), (-10), (0),
 (20), (30), (31);
 SELECT * FROM t11;
 
-CREATE TABLE t12(a DOUBLE AUTO_INCREMENT KEY) ENGINE = InnoDB;
+eval CREATE TABLE t12(a DOUBLE $AUTO_INCREMENT_KEY_a) ENGINE = InnoDB;
 INSERT INTO t12 VALUES(0), (0), (0), (0), (-1), (-10), (0),
 (20), (30), (31);
 SELECT * FROM t12;
@@ -105,7 +118,7 @@ SELECT MAX(a) AS `Expect 100000000` FROM t7;
 DELETE FROM t9 WHERE a > 100000000000;
 SELECT MAX(a) AS `Expect 100000000000` FROM t9;
 
-CREATE TABLE t13(a INT AUTO_INCREMENT PRIMARY KEY) ENGINE = InnoDB,
+eval CREATE TABLE t13(a INT $AUTO_INCREMENT_KEY_a) ENGINE = InnoDB,
 AUTO_INCREMENT = 1234;
 
 --source include/restart_mysqld.inc
@@ -439,7 +452,7 @@ INSERT INTO t3 VALUES(0), (0), (200), (210);
 
 --echo # Scenario 9: Test the sql_mode = NO_AUTO_VALUE_ON_ZERO
 
-CREATE TABLE t30 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, b INT, key(b)) ENGINE = InnoDB;
+eval CREATE TABLE t30 (a INT NOT NULL $AUTO_INCREMENT_PRIMARY_KEY_a, b INT, key(b)) ENGINE = InnoDB;
 
 set SQL_MODE = NO_AUTO_VALUE_ON_ZERO;
 
@@ -454,7 +467,7 @@ set global innodb_flush_log_at_trx_commit=1;
 
 CREATE TABLE t31 (a INT) ENGINE = InnoDB;
 INSERT INTO t31 VALUES(1), (2);
-ALTER TABLE t31 ADD b INT AUTO_INCREMENT PRIMARY KEY;
+eval ALTER TABLE t31 ADD b INT $AUTO_INCREMENT_PRIMARY_KEY_b;
 INSERT INTO t31 VALUES(3, 0), (4, NULL), (5, NULL);
 --error ER_DUP_ENTRY
 INSERT INTO t31 VALUES(6, 0);
@@ -463,8 +476,7 @@ SELECT * FROM t31;
 SET SQL_MODE = 0;
 
 --echo # Scenario 10: Rollback would not rollback the counter
-CREATE TABLE t32 (
-a BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT) ENGINE=InnoDB;
+eval CREATE TABLE t32 (a BIGINT $AUTO_INCREMENT_PRIMARY_KEY_a) ENGINE=InnoDB;
 
 INSERT INTO t32 VALUES(0), (0);
 
@@ -480,10 +492,9 @@ ROLLBACK;
 --echo # Scenario 11: Test duplicate primary key/secondary key will not stop
 --echo # increasing the counter
 
-CREATE TABLE t33 (
+eval CREATE TABLE t33 (
 a BIGINT NOT NULL PRIMARY KEY,
-b BIGINT NOT NULL AUTO_INCREMENT,
-KEY(b)) ENGINE = InnoDB;
+b BIGINT NOT NULL $AUTO_INCREMENT_KEY_b) ENGINE = InnoDB;
 
 INSERT INTO t33 VALUES(1, NULL);
 INSERT INTO t33 VALUES(2, NULL);
@@ -539,10 +550,9 @@ ib_backup_tablespaces("test", "t33");
 EOF
 UNLOCK TABLES;
 DROP TABLE t33;
-CREATE TABLE t33 (
+eval CREATE TABLE t33 (
 a BIGINT NOT NULL PRIMARY KEY,
-b BIGINT NOT NULL AUTO_INCREMENT,
-KEY(b)) ENGINE = InnoDB;
+b BIGINT NOT NULL $AUTO_INCREMENT_KEY_b) ENGINE = InnoDB;
 ALTER TABLE t33 DISCARD TABLESPACE;
 perl;
 do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
