Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 18 additions & 26 deletions sql/plan/str_expr.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ func AliasSubqueryString(e sql.Expression) string {
e, _, err := transform.Expr(e, func(e sql.Expression) (sql.Expression, transform.TreeIdentity, error) {
switch e := e.(type) {
case *Subquery:
return NewSubquery(NewStrExpr(e.QueryString), e.QueryString), transform.NewTree, nil
return NewSubquery(NewStrExpr(e.QueryString, e), e.QueryString), transform.NewTree, nil
default:
return e, transform.SameTree, nil
}
Expand All @@ -33,57 +33,49 @@ func AliasSubqueryString(e sql.Expression) string {
}

// StrExpr is used exclusively for overriding the .String()
// method of a node.
// method of a subquery expression for efficiency and display purposes.
type StrExpr struct {
s string
s string
original *Subquery
}

var _ sql.Node = (*StrExpr)(nil)

func NewStrExpr(s string, orig *Subquery) *StrExpr {
return &StrExpr{
s: s,
original: orig,
}
}

func (s *StrExpr) Schema() sql.Schema {
//TODO implement me
panic("implement me")
return s.original.Query.Schema()
}

func (s *StrExpr) Children() []sql.Node {
//TODO implement me
panic("implement me")
panic("StrExpr.Children should never be called")
}

func (s *StrExpr) WithChildren(children ...sql.Node) (sql.Node, error) {
//TODO implement me
panic("implement me")
panic("StrExpr.WithChildren should never be called")
}

func (s *StrExpr) IsReadOnly() bool {
//TODO implement me
panic("implement me")
}

func NewStrExpr(s string) *StrExpr {
return &StrExpr{s: s}
panic("StrExpr.IsReadOnly should never be called")
}

func (s *StrExpr) Resolved() bool {
//TODO implement me
panic("implement me")
return s.original.Resolved()
}

func (s *StrExpr) String() string {
return s.s
}

func (s *StrExpr) Type() sql.Type {
//TODO implement me
panic("implement me")
}

func (s *StrExpr) IsNullable() bool {
//TODO implement me
panic("implement me")
panic("StrExpr.IsNullable should never be called")
}

func (s *StrExpr) Eval(ctx *sql.Context, row sql.Row) (interface{}, error) {
//TODO implement me
panic("implement me")
panic("StrExpr.Eval should never be called")
}