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

Commit 7de54c5

Browse files
Plug views' definition when resolving tables
Signed-off-by: Alejandro García Montoro <alejandro.garciamontoro@gmail.com>
1 parent ef19c5f commit 7de54c5

File tree

1 file changed

+16
-7
lines changed

1 file changed

+16
-7
lines changed

sql/analyzer/resolve_tables.go

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,17 +39,26 @@ func resolveTables(ctx *sql.Context, a *Analyzer, n sql.Node) (sql.Node, error)
3939
}
4040

4141
rt, err := a.Catalog.Table(db, name)
42-
if err != nil {
43-
if sql.ErrTableNotFound.Is(err) && name == dualTableName {
42+
if err == nil {
43+
a.Log("table resolved: %q", t.Name())
44+
return plan.NewResolvedTable(rt), nil
45+
}
46+
47+
if sql.ErrTableNotFound.Is(err) {
48+
if name == dualTableName {
4449
rt = dualTable
4550
name = dualTableName
46-
} else {
47-
return nil, err
51+
52+
a.Log("table resolved: %q", t.Name())
53+
return plan.NewResolvedTable(rt), nil
4854
}
49-
}
5055

51-
a.Log("table resolved: %q", t.Name())
56+
if view, err := a.Catalog.ViewRegistry.View(db, name); err == nil {
57+
a.Log("table %q is a view: replacing plans", t.Name())
58+
return view.Definition, nil
59+
}
60+
}
5261

53-
return plan.NewResolvedTable(rt), nil
62+
return nil, err
5463
})
5564
}

0 commit comments

Comments
 (0)