diff --git a/go/vt/schemadiff/errors.go b/go/vt/schemadiff/errors.go index d9744b59f04..67834f7000b 100644 --- a/go/vt/schemadiff/errors.go +++ b/go/vt/schemadiff/errors.go @@ -394,11 +394,15 @@ type ViewDependencyUnresolvedError struct { } func (e *ViewDependencyUnresolvedError) Error() string { - s := make([]string, len(e.MissingReferencedEntities)) + var b strings.Builder + b.WriteString(fmt.Sprintf("view %s has unresolved/loop dependencies: ", sqlescape.EscapeID(e.View))) for i, entity := range e.MissingReferencedEntities { - s[i] = sqlescape.EscapeID(entity) + if i > 0 { + b.WriteString(", ") + } + sqlescape.WriteEscapeID(&b, entity) } - return fmt.Sprintf("view %s has unresolved/loop dependencies: %s", sqlescape.EscapeID(e.View), strings.Join(s, ", ")) + return b.String() } type InvalidColumnReferencedInViewError struct { diff --git a/go/vt/schemadiff/schema_test.go b/go/vt/schemadiff/schema_test.go index aa16a8d7fbf..1c98e71011b 100644 --- a/go/vt/schemadiff/schema_test.go +++ b/go/vt/schemadiff/schema_test.go @@ -133,6 +133,7 @@ func TestNewSchemaFromQueriesUnresolvedMulti(t *testing.T) { schema, err := NewSchemaFromQueries(NewTestEnv(), queries) assert.Error(t, err) assert.EqualError(t, err, (&ViewDependencyUnresolvedError{View: "v7", MissingReferencedEntities: []string{"v8", "t20", "v21"}}).Error()) + assert.Equal(t, "view `v7` has unresolved/loop dependencies: `v8`, `t20`, `v21`", err.Error()) v := schema.sorted[len(schema.sorted)-1] assert.IsType(t, &CreateViewEntity{}, v) assert.Equal(t, "CREATE VIEW `v7` AS SELECT * FROM `v8`, `t2`, `t20`, `v21`", v.Create().CanonicalStatementString())