This repository has been archived by the owner on Jan 28, 2021. It is now read-only.
/
star.go
62 lines (50 loc) · 1.46 KB
/
star.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package expression
import (
"fmt"
"gopkg.in/src-d/go-mysql-server.v0/sql"
)
// Star represents the selection of all available fields.
// This is just a placeholder node, it will not actually be evaluated
// but converted to a series of GetFields when the query is analyzed.
type Star struct {
Table string
}
// NewStar returns a new Star expression.
func NewStar() *Star {
return new(Star)
}
// NewQualifiedStar returns a new star expression only for a specific table.
func NewQualifiedStar(table string) *Star {
return &Star{table}
}
// Resolved implements the Expression interface.
func (*Star) Resolved() bool {
return false
}
// Children implements the Expression interface.
func (*Star) Children() []sql.Expression {
return nil
}
// IsNullable implements the Expression interface.
func (*Star) IsNullable() bool {
panic("star is just a placeholder node, but IsNullable was called")
}
// Type implements the Expression interface.
func (*Star) Type() sql.Type {
panic("star is just a placeholder node, but Type was called")
}
func (s *Star) String() string {
if s.Table != "" {
return fmt.Sprintf("%s.*", s.Table)
}
return "*"
}
// Eval implements the Expression interface.
func (*Star) Eval(ctx *sql.Context, r sql.Row) (interface{}, error) {
panic("star is just a placeholder node, but Eval was called")
}
// TransformUp implements the Expression interface.
func (s *Star) TransformUp(f sql.TransformExprFunc) (sql.Expression, error) {
n := *s
return f(&n)
}