@@ -30,6 +30,7 @@ import (
30
30
"github.com/pingcap/tidb/config"
31
31
"github.com/pingcap/tidb/ddl"
32
32
"github.com/pingcap/tidb/ddl/schematracker"
33
+ "github.com/pingcap/tidb/ddl/util"
33
34
"github.com/pingcap/tidb/domain"
34
35
"github.com/pingcap/tidb/errno"
35
36
"github.com/pingcap/tidb/infoschema"
@@ -4276,3 +4277,68 @@ func TestRegexpFunctionsGeneratedColumn(t *testing.T) {
4276
4277
4277
4278
tk .MustExec ("drop table if exists reg_like" )
4278
4279
}
4280
+
4281
+ func TestIssue52680 (t * testing.T ) {
4282
+ store , dom := testkit .CreateMockStoreAndDomain (t )
4283
+ tk := testkit .NewTestKit (t , store )
4284
+ tk .MustExec ("use test;" )
4285
+ tk .MustExec ("create table issue52680 (id bigint primary key auto_increment) auto_id_cache=1;" )
4286
+ tk .MustExec ("insert into issue52680 values(default),(default);" )
4287
+ tk .MustQuery ("select * from issue52680" ).Check (testkit .Rows ("1" , "2" ))
4288
+
4289
+ is := dom .InfoSchema ()
4290
+ tbl , err := is .TableByName (model .NewCIStr ("test" ), model .NewCIStr ("issue52680" ))
4291
+ require .NoError (t , err )
4292
+ ti := tbl .Meta ()
4293
+ dbInfo , ok := is .SchemaByName (model .NewCIStr ("test" ))
4294
+ require .True (t , ok )
4295
+
4296
+ util .EmulatorGCDisable ()
4297
+ defer util .EmulatorGCEnable ()
4298
+
4299
+ // For mocktikv, safe point is not initialized, we manually insert it for snapshot to use.
4300
+ safePointName := "tikv_gc_safe_point"
4301
+ safePointValue := "20060102-15:04:05 -0700"
4302
+ safePointComment := "All versions after safe point can be accessed. (DO NOT EDIT)"
4303
+ updateSafePoint := fmt .Sprintf (`INSERT INTO mysql.tidb VALUES ('%[1]s', '%[2]s', '%[3]s')
4304
+ ON DUPLICATE KEY
4305
+ UPDATE variable_value = '%[2]s', comment = '%[3]s'` , safePointName , safePointValue , safePointComment )
4306
+ tk .MustExec (updateSafePoint )
4307
+
4308
+ testSteps := []struct {
4309
+ sql string
4310
+ expect meta.AutoIDGroup
4311
+ }{
4312
+ {sql : "" , expect : meta.AutoIDGroup {RowID : 0 , IncrementID : 4000 , RandomID : 0 }},
4313
+ {sql : "drop table issue52680" , expect : meta.AutoIDGroup {RowID : 0 , IncrementID : 0 , RandomID : 0 }},
4314
+ {sql : "recover table issue52680" , expect : meta.AutoIDGroup {RowID : 0 , IncrementID : 4000 , RandomID : 0 }},
4315
+ }
4316
+ for _ , step := range testSteps {
4317
+ if step .sql != "" {
4318
+ tk .MustExec (step .sql )
4319
+ }
4320
+
4321
+ txn , err := store .Begin ()
4322
+ require .NoError (t , err )
4323
+ m := meta .NewMeta (txn )
4324
+ idAcc := m .GetAutoIDAccessors (dbInfo .ID , ti .ID )
4325
+ ids , err := idAcc .Get ()
4326
+ require .NoError (t , err )
4327
+ require .Equal (t , ids , step .expect )
4328
+ txn .Rollback ()
4329
+ }
4330
+
4331
+ tk .MustQuery ("show table issue52680 next_row_id" ).Check (testkit .Rows (
4332
+ "test issue52680 id 1 _TIDB_ROWID" ,
4333
+ "test issue52680 id 3 AUTO_INCREMENT" ,
4334
+ ))
4335
+
4336
+ is = dom .InfoSchema ()
4337
+ tbl , err = is .TableByName (model .NewCIStr ("test" ), model .NewCIStr ("issue52680" ))
4338
+ require .NoError (t , err )
4339
+ ti1 := tbl .Meta ()
4340
+ require .Equal (t , ti1 .ID , ti .ID )
4341
+
4342
+ tk .MustExec ("insert into issue52680 values(default);" )
4343
+ tk .MustQuery ("select * from issue52680" ).Check (testkit .Rows ("1" , "2" , "3" ))
4344
+ }
0 commit comments