@@ -55,6 +55,14 @@ func TestAddIndexPresplitIndexRegions(t *testing.T) {
5555 splitKeyHex = nil
5656 }
5757 }
58+ var idxID int64
59+ nextIdxID := func () int64 {
60+ idxID ++
61+ return idxID
62+ }
63+ resetIdxID := func () {
64+ idxID = 0
65+ }
5866
5967 tk .MustExec ("create table t (a int primary key, b int);" )
6068 for i := 0 ; i < 10 ; i ++ {
@@ -65,39 +73,57 @@ func TestAddIndexPresplitIndexRegions(t *testing.T) {
6573 require .Len (t , retRows , 1 )
6674 tk .MustExec ("set @@global.tidb_ddl_enable_fast_reorg = off;" )
6775 tk .MustExec ("set @@global.tidb_enable_dist_task = off;" )
76+ tk .MustExec ("alter table t add index idx(b) pre_split_regions = 4;" )
77+ checkSplitKeys (nextIdxID (), 3 , true )
78+ tk .MustExec ("drop index idx on t;" )
6879 tk .MustExec ("alter table t add index idx(b) pre_split_regions = (by (10000), (20000), (30000));" )
69- checkSplitKeys (1 , 3 , true )
80+ checkSplitKeys (nextIdxID (), 3 , true )
81+ tk .MustExec ("drop index idx on t;" )
82+ tk .MustExec ("alter table t add index idx(b) /*T![pre_split] pre_split_regions = (by (10000), (20000), (30000)) */;" )
83+ checkSplitKeys (nextIdxID (), 3 , true )
7084 tk .MustExec ("drop index idx on t;" )
7185 tk .MustExec ("alter table t add index idx(b) pre_split_regions = (between (0) and (10 * 10000) regions 3);" )
72- checkSplitKeys (2 , 2 , true )
86+ checkSplitKeys (nextIdxID () , 2 , true )
7387 tk .MustExec ("drop index idx on t;" )
7488 tk .MustExec ("set @@global.tidb_ddl_enable_fast_reorg = on;" )
7589
7690 tk .MustExec ("alter table t add index idx(b) pre_split_regions = (by (10000), (20000), (30000));" )
77- checkSplitKeys (3 , 0 , false )
78- checkSplitKeys (tablecodec .TempIndexPrefix | 3 , 3 , true )
91+ nextID := nextIdxID ()
92+ checkSplitKeys (nextID , 0 , false )
93+ checkSplitKeys (tablecodec .TempIndexPrefix | nextID , 3 , true )
7994
8095 tk .MustExec ("set @@global.tidb_ddl_enable_fast_reorg = off;" )
8196
8297 // Test partition tables.
98+ resetIdxID ()
8399 tk .MustExec ("drop table t;" )
84100 tk .MustExec ("create table t (a int primary key, b int) partition by hash(a) partitions 4;" )
85101 for i := 0 ; i < 10 ; i ++ {
86102 insertSQL := fmt .Sprintf ("insert into t values (%[1]d, %[1]d);" , 10000 * i )
87103 tk .MustExec (insertSQL )
88104 }
89105 tk .MustExec ("alter table t add index idx(b) pre_split_regions = (by (10000), (20000), (30000));" )
90- checkSplitKeys (1 , 3 * 4 , true )
106+ checkSplitKeys (nextIdxID () , 3 * 4 , true )
91107 tk .MustExec ("drop index idx on t;" )
92108 tk .MustExec ("alter table t add index idx(b) pre_split_regions = (between (0) and (10 * 10000) regions 3);" )
93- checkSplitKeys (2 , 2 * 4 , true )
109+ checkSplitKeys (nextIdxID () , 2 * 4 , true )
94110 tk .MustExec ("drop index idx on t;" )
95111 tk .MustExec ("set @@global.tidb_ddl_enable_fast_reorg = on;" )
96112 tk .MustExec ("alter table t add index idx(b) pre_split_regions = (by (10000), (20000), (30000));" )
97- checkSplitKeys (3 , 0 , false )
113+ checkSplitKeys (nextIdxID () , 0 , false )
98114 checkSplitKeys (tablecodec .TempIndexPrefix | 3 , 12 , true )
99115 tk .MustExec ("drop index idx on t;" )
100116 tk .MustExec ("set @@global.tidb_ddl_enable_fast_reorg = off;" )
117+
118+ resetIdxID ()
119+ tk .MustExec ("drop table t;" )
120+ tk .MustExec ("set @@global.tidb_ddl_enable_fast_reorg = on;" )
121+ tk .MustExec ("set @@global.tidb_enable_dist_task = off;" )
122+ tk .MustExec ("create table t (a int, b int) partition by range (b)" +
123+ " (partition p0 values less than (10), " +
124+ " partition p1 values less than (maxvalue));" )
125+ tk .MustExec ("alter table t add unique index p_a (a) global pre_split_regions = (by (5), (15));" )
126+ checkSplitKeys (tablecodec .TempIndexPrefix | nextIdxID (), 2 , true )
101127}
102128
103129func TestAddIndexPresplitFunctional (t * testing.T ) {
0 commit comments