https://github.com/go-gorm/gorm/issues/5047
(t *testing.T)
| 938 | |
| 939 | // https://github.com/go-gorm/gorm/issues/5047 |
| 940 | func TestMigrateSerialColumn(t *testing.T) { |
| 941 | if DB.Dialector.Name() != "postgres" && DB.Dialector.Name() != "gaussdb" { |
| 942 | return |
| 943 | } |
| 944 | |
| 945 | type Event struct { |
| 946 | ID uint `gorm:"primarykey"` |
| 947 | UID uint32 |
| 948 | } |
| 949 | |
| 950 | type Event1 struct { |
| 951 | ID uint `gorm:"primarykey"` |
| 952 | UID uint32 `gorm:"not null;autoIncrement"` |
| 953 | } |
| 954 | |
| 955 | type Event2 struct { |
| 956 | ID uint `gorm:"primarykey"` |
| 957 | UID uint16 `gorm:"not null;autoIncrement"` |
| 958 | } |
| 959 | |
| 960 | var err error |
| 961 | err = DB.Migrator().DropTable(&Event{}) |
| 962 | if err != nil { |
| 963 | t.Errorf("DropTable err:%v", err) |
| 964 | } |
| 965 | |
| 966 | // create sequence |
| 967 | err = DB.Table("events").AutoMigrate(&Event1{}) |
| 968 | if err != nil { |
| 969 | t.Errorf("AutoMigrate err:%v", err) |
| 970 | } |
| 971 | |
| 972 | // delete sequence |
| 973 | err = DB.Table("events").AutoMigrate(&Event{}) |
| 974 | if err != nil { |
| 975 | t.Errorf("AutoMigrate err:%v", err) |
| 976 | } |
| 977 | |
| 978 | // update sequence |
| 979 | err = DB.Table("events").AutoMigrate(&Event1{}) |
| 980 | if err != nil { |
| 981 | t.Errorf("AutoMigrate err:%v", err) |
| 982 | } |
| 983 | err = DB.Table("events").AutoMigrate(&Event2{}) |
| 984 | if err != nil { |
| 985 | t.Errorf("AutoMigrate err:%v", err) |
| 986 | } |
| 987 | |
| 988 | DB.Table("events").Save(&Event2{}) |
| 989 | DB.Table("events").Save(&Event2{}) |
| 990 | DB.Table("events").Save(&Event2{}) |
| 991 | |
| 992 | events := make([]*Event, 0) |
| 993 | DB.Table("events").Find(&events) |
| 994 | |
| 995 | AssertEqual(t, 3, len(events)) |
| 996 | for _, v := range events { |
| 997 | AssertEqual(t, v.ID, v.UID) |
nothing calls this directly
no test coverage detected