Skip to content
This repository was archived by the owner on Jan 28, 2021. It is now read-only.

Commit 3fee47c

Browse files
Improve error management in CreateView node
We can discard the error if it was thrown because the view does not exist. But we don't know if the Delete function will throw different errors in the future, so it is safer to discard only the one we are sure about. Signed-off-by: Alejandro García Montoro <alejandro.garciamontoro@gmail.com>
1 parent 05a2456 commit 3fee47c

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

sql/plan/create_view.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,12 +62,16 @@ func (create *CreateView) Resolved() bool {
6262
// empty.
6363
func (create *CreateView) RowIter(ctx *sql.Context) (sql.RowIter, error) {
6464
view := sql.NewView(create.Name, create.Child)
65+
registry := create.Catalog.ViewRegistry
6566

6667
if create.IsReplace {
67-
_ = create.Catalog.ViewRegistry.Delete(create.database.Name(), view.Name())
68+
err := registry.Delete(create.database.Name(), view.Name())
69+
if err != nil && !sql.ErrNonExistingView.Is(err) {
70+
return sql.RowsToRowIter(), err
71+
}
6872
}
6973

70-
return sql.RowsToRowIter(), create.Catalog.ViewRegistry.Register(create.database.Name(), view)
74+
return sql.RowsToRowIter(), registry.Register(create.database.Name(), view)
7175
}
7276

7377
// Schema implements the Node interface. It always returns nil.

0 commit comments

Comments
 (0)