diff --git a/go/vt/schemadiff/schema.go b/go/vt/schemadiff/schema.go index bbd1258070e..c251779061c 100644 --- a/go/vt/schemadiff/schema.go +++ b/go/vt/schemadiff/schema.go @@ -1085,6 +1085,11 @@ func (s *Schema) ValidateViewReferences() error { View: view.Name(), Column: e.Column.Name.String(), } + case *semantics.UnsupportedConstruct: + // These are error types from semantic analysis for executing queries. When we + // have a view, we don't have Vitess execute these queries but MySQL does, so + // we don't want to return errors for these. + return nil } return err } diff --git a/go/vt/schemadiff/schema_test.go b/go/vt/schemadiff/schema_test.go index 1710cec12c7..43cfcf78bdc 100644 --- a/go/vt/schemadiff/schema_test.go +++ b/go/vt/schemadiff/schema_test.go @@ -570,6 +570,20 @@ func TestInvalidSchema(t *testing.T) { `, expectErr: &DuplicateForeignKeyConstraintNameError{Table: "t2", Constraint: "const_id"}, }, + { + schema: ` +CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(255)); +CREATE VIEW user_earnings_ranking AS +SELECT + u.id AS user_id, + e.total_earnings AS total_earnings, + ROW_NUMBER() OVER ( + ORDER BY e.total_earnings DESC, u.id ASC + ) AS ranking +FROM users AS u JOIN earnings AS e ON e.user_id = u.id; +`, + expectErr: &ViewDependencyUnresolvedError{View: "user_earnings_ranking"}, + }, } for _, ts := range tt { t.Run(ts.schema, func(t *testing.T) {