Skip to content

Commit fa869a8

Browse files
committed
extended sql parser
1 parent 1dac374 commit fa869a8

1 file changed

Lines changed: 36 additions & 0 deletions

File tree

table.go

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,42 @@ func TableName(node node.Node) string {
3232
return ""
3333
}
3434

35+
// TableSelector returns the table selector Node
36+
func TableSelector(n node.Node) *expr.Selector {
37+
switch actual := n.(type) {
38+
case *query.Select:
39+
return queryTableSelector(actual)
40+
case *insert.Statement:
41+
return extractSelector(actual.Target.X)
42+
case *update.Statement:
43+
return extractSelector(actual.Target.X)
44+
case *del.Statement:
45+
return extractSelector(actual.Target.X)
46+
case *table.Create:
47+
return extractSelector(actual.Spec.Name)
48+
case *table.Drop:
49+
return extractSelector(actual.Name)
50+
}
51+
return nil
52+
}
53+
54+
func queryTableSelector(s *query.Select) *expr.Selector {
55+
if s.From.X == nil {
56+
return nil
57+
}
58+
return extractSelector(s.From.X)
59+
}
60+
61+
func extractSelector(node node.Node) *expr.Selector {
62+
switch t := node.(type) {
63+
case *expr.Selector:
64+
return t
65+
case *expr.Ident:
66+
return &expr.Selector{Name: t.Name}
67+
}
68+
return nil
69+
}
70+
3571
func queryTableName(sel *query.Select) string {
3672
if sel.From.X == nil {
3773
return ""

0 commit comments

Comments
 (0)