3
0

Improve ql to support <ident>.<ident> syntax

This commit is contained in:
Denis Arh
2019-10-18 17:44:20 +02:00
parent 953cda26bb
commit bd281ff21b
4 changed files with 22 additions and 1 deletions
+12 -1
View File
@@ -217,7 +217,18 @@ func (p *Parser) parseIdent(t Token) (list ASTNode, err error) {
}
}
return p.OnIdent(Ident{Value: t.literal})
i := Ident{Value: t.literal}
if p.peekToken(1).Is(DOT) {
p.nextToken()
i.Value += "."
l2 := p.nextToken()
if l2.Is(IDENT) {
i.Value += l2.literal
}
}
return p.OnIdent(i)
}
func (p *Parser) parseSet() (list ASTSet, err error) {
+8
View File
@@ -269,6 +269,14 @@ func TestAstParser_ColumnParser(t *testing.T) {
},
},
},
{
in: `a.b`,
cols: Columns{
Column{
Expr: ASTNodes{Ident{Value: "a.b"}},
},
},
},
{
in: `DATE_FORMAT(some_date, '%Y-%m-01')`,
cols: Columns{
+1
View File
@@ -44,6 +44,7 @@ func NewLexer(r io.Reader) *Lexer {
// @todo ensure operator order (eg != is valid, =! is not)
&TokenConsumerGeneric{token: OPERATOR, whitelist: CHAR_WHITELIST_OPERATORS},
&TokenConsumerGeneric{token: COMMA, whitelist: ",", maxLength: 1},
&TokenConsumerGeneric{token: DOT, whitelist: ".", maxLength: 1},
&TokenConsumerGeneric{token: PARENTHESIS_OPEN, whitelist: "(", maxLength: 1},
&TokenConsumerGeneric{token: PARENTHESIS_CLOSE, whitelist: ")", maxLength: 1},
&TokenConsumerString{},
+1
View File
@@ -19,6 +19,7 @@ const (
NUMBER // 4
STRING
COMMA // ,
DOT // .
OPERATOR // + - / *
PARENTHESIS_OPEN
PARENTHESIS_CLOSE