@@ -119,12 +119,26 @@ func TestNewSchemaFromQueriesUnresolved(t *testing.T) {
119
119
)
120
120
schema , err := NewSchemaFromQueries (NewTestEnv (), queries )
121
121
assert .Error (t , err )
122
- assert .EqualError (t , err , (& ViewDependencyUnresolvedError {View : "v7" }).Error ())
122
+ assert .EqualError (t , err , (& ViewDependencyUnresolvedError {View : "v7" , MissingReferencedEntities : [] string { "v8" } }).Error ())
123
123
v := schema .sorted [len (schema .sorted )- 1 ]
124
124
assert .IsType (t , & CreateViewEntity {}, v )
125
125
assert .Equal (t , "CREATE VIEW `v7` AS SELECT * FROM `v8`, `t2`" , v .Create ().CanonicalStatementString ())
126
126
}
127
127
128
+ func TestNewSchemaFromQueriesUnresolvedMulti (t * testing.T ) {
129
+ // v8 does not exist
130
+ queries := append (schemaTestCreateQueries ,
131
+ "create view v7 as select * from v8, t2, t20, v21" ,
132
+ )
133
+ schema , err := NewSchemaFromQueries (NewTestEnv (), queries )
134
+ assert .Error (t , err )
135
+ assert .EqualError (t , err , (& ViewDependencyUnresolvedError {View : "v7" , MissingReferencedEntities : []string {"v8" , "t20" , "v21" }}).Error ())
136
+ assert .Equal (t , "view `v7` has unresolved/loop dependencies: `v8`, `t20`, `v21`" , err .Error ())
137
+ v := schema .sorted [len (schema .sorted )- 1 ]
138
+ assert .IsType (t , & CreateViewEntity {}, v )
139
+ assert .Equal (t , "CREATE VIEW `v7` AS SELECT * FROM `v8`, `t2`, `t20`, `v21`" , v .Create ().CanonicalStatementString ())
140
+ }
141
+
128
142
func TestNewSchemaFromQueriesWithSQLKeyword (t * testing.T ) {
129
143
queries := []string {
130
144
"create table `order` (id int primary key, info int not null)" ,
@@ -141,7 +155,7 @@ func TestNewSchemaFromQueriesUnresolvedAlias(t *testing.T) {
141
155
)
142
156
_ , err := NewSchemaFromQueries (NewTestEnv (), queries )
143
157
assert .Error (t , err )
144
- assert .EqualError (t , err , (& ViewDependencyUnresolvedError {View : "v7" }).Error ())
158
+ assert .EqualError (t , err , (& ViewDependencyUnresolvedError {View : "v7" , MissingReferencedEntities : [] string { "something_else" } }).Error ())
145
159
}
146
160
147
161
func TestNewSchemaFromQueriesViewFromDual (t * testing.T ) {
@@ -171,7 +185,7 @@ func TestNewSchemaFromQueriesLoop(t *testing.T) {
171
185
_ , err := NewSchemaFromQueries (NewTestEnv (), queries )
172
186
require .Error (t , err )
173
187
err = vterrors .UnwrapFirst (err )
174
- assert .EqualError (t , err , (& ViewDependencyUnresolvedError {View : "v7" }).Error ())
188
+ assert .EqualError (t , err , (& ViewDependencyUnresolvedError {View : "v7" , MissingReferencedEntities : [] string { "v8" } }).Error ())
175
189
}
176
190
177
191
func TestToSQL (t * testing.T ) {
@@ -582,7 +596,7 @@ SELECT
582
596
) AS ranking
583
597
FROM users AS u JOIN earnings AS e ON e.user_id = u.id;
584
598
` ,
585
- expectErr : & ViewDependencyUnresolvedError {View : "user_earnings_ranking" },
599
+ expectErr : & ViewDependencyUnresolvedError {View : "user_earnings_ranking" , MissingReferencedEntities : [] string { "earnings" } },
586
600
},
587
601
}
588
602
for _ , ts := range tt {
0 commit comments