From b8d39da106b17408b8fd7f1a4f7861a72aace069 Mon Sep 17 00:00:00 2001 From: mohammad ali ashraf Date: Tue, 30 May 2023 06:34:29 +0500 Subject: [PATCH] default maxIdentifierLength is 64 --- gorm.go | 2 +- schema/naming.go | 2 +- schema/naming_test.go | 9 +++++++++ schema/relationship_test.go | 4 ++-- 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/gorm.go b/gorm.go index 32c7cef4..84d4b433 100644 --- a/gorm.go +++ b/gorm.go @@ -146,7 +146,7 @@ func Open(dialector Dialector, opts ...Option) (db *DB, err error) { } if config.NamingStrategy == nil { - config.NamingStrategy = schema.NamingStrategy{IdentifierMaxLength: 63} + config.NamingStrategy = schema.NamingStrategy{IdentifierMaxLength: 64} // Default Identifier length is 64 } if config.Logger == nil { diff --git a/schema/naming.go b/schema/naming.go index 37b94980..a2a0150a 100644 --- a/schema/naming.go +++ b/schema/naming.go @@ -91,7 +91,7 @@ func (ns NamingStrategy) formatName(prefix, table, name string) string { }, "_"), ".", "_") if ns.IdentifierMaxLength == 0 { - ns.IdentifierMaxLength = 63 + ns.IdentifierMaxLength = 64 } if utf8.RuneCountInString(formattedName) > ns.IdentifierMaxLength { diff --git a/schema/naming_test.go b/schema/naming_test.go index 9ce8f099..ab7a5e31 100644 --- a/schema/naming_test.go +++ b/schema/naming_test.go @@ -198,6 +198,15 @@ func TestFormatNameWithStringLongerThan63Characters(t *testing.T) { } } +func TestFormatNameWithStringLongerThan64Characters(t *testing.T) { + ns := NamingStrategy{IdentifierMaxLength: 64} + + formattedName := ns.formatName("prefix", "table", "thisIsAVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString") + if formattedName != "prefix_table_thisIsAVeryVeryVeryVeryVeryVeryVeryVeryVery180f2c67" { + t.Errorf("invalid formatted name generated, got %v", formattedName) + } +} + func TestReplaceEmptyTableName(t *testing.T) { ns := NamingStrategy{ SingularTable: true, diff --git a/schema/relationship_test.go b/schema/relationship_test.go index de5fa044..1eb66bb4 100644 --- a/schema/relationship_test.go +++ b/schema/relationship_test.go @@ -768,13 +768,13 @@ func TestParseConstraintNameWithSchemaQualifiedLongTableName(t *testing.T) { s, err := schema.Parse( &Book{}, &sync.Map{}, - schema.NamingStrategy{IdentifierMaxLength: 63}, + schema.NamingStrategy{IdentifierMaxLength: 64}, ) if err != nil { t.Fatalf("Failed to parse schema") } - expectedConstraintName := "fk_my_schema_a_very_very_very_very_very_very_very_very_4db13eec" + expectedConstraintName := "fk_my_schema_a_very_very_very_very_very_very_very_very_l4db13eec" constraint := s.Relationships.Relations["Author"].ParseConstraint() if constraint.Name != expectedConstraintName {