influxql: add CREATE CONTINUOUS QUERY (WIP)
parent
f23417fa5a
commit
3b649d3e63
|
@ -528,7 +528,7 @@ func (p *Parser) parseTarget(tr targetRequirement) (*Target, error) {
|
|||
target := &Target{}
|
||||
|
||||
tok, _, _ := p.scanIgnoreWhitespace()
|
||||
if tok == COLON {
|
||||
if tok == DOT {
|
||||
// Previous identifier was retention policy name.
|
||||
target.RetentionPolicy = ident
|
||||
|
||||
|
|
|
@ -293,7 +293,7 @@ func TestParser_ParseStatement(t *testing.T) {
|
|||
|
||||
// CREATE CONTINUOUS QUERY ... INTO <retention-policy>.<measurement>
|
||||
{
|
||||
s: `CREATE CONTINUOUS QUERY myquery ON testdb BEGIN SELECT count() INTO "1h.policy1":cpu.load FROM myseries END`,
|
||||
s: `CREATE CONTINUOUS QUERY myquery ON testdb BEGIN SELECT count() INTO "1h.policy1"."cpu.load" FROM myseries END`,
|
||||
stmt: &influxql.CreateContinuousQueryStatement{
|
||||
Name: "myquery",
|
||||
DB: "testdb",
|
||||
|
|
|
@ -42,15 +42,15 @@ func (s *Scanner) Scan() (tok Token, pos Pos, lit string) {
|
|||
return EOF, pos, ""
|
||||
case '"', '\'':
|
||||
return s.scanString()
|
||||
// case '.':
|
||||
// ch1, _ := s.r.read()
|
||||
// s.r.unread()
|
||||
// if isDigit(ch1) {
|
||||
// s.r.unread()
|
||||
// return s.scanNumber()
|
||||
// }
|
||||
// return DOT, pos, ""
|
||||
case '.', '+', '-':
|
||||
case '.':
|
||||
ch1, _ := s.r.read()
|
||||
s.r.unread()
|
||||
if isDigit(ch1) {
|
||||
s.r.unread()
|
||||
return s.scanNumber()
|
||||
}
|
||||
return DOT, pos, ""
|
||||
case '+', '-':
|
||||
return s.scanNumber()
|
||||
case '*':
|
||||
return MUL, pos, ""
|
||||
|
@ -80,8 +80,6 @@ func (s *Scanner) Scan() (tok Token, pos Pos, lit string) {
|
|||
return COMMA, pos, ""
|
||||
case ';':
|
||||
return SEMICOLON, pos, ""
|
||||
case ':':
|
||||
return COLON, pos, ""
|
||||
}
|
||||
|
||||
return ILLEGAL, pos, string(ch0)
|
||||
|
|
|
@ -54,6 +54,7 @@ func TestScanner_Scan(t *testing.T) {
|
|||
{s: `)`, tok: influxql.RPAREN},
|
||||
{s: `,`, tok: influxql.COMMA},
|
||||
{s: `;`, tok: influxql.SEMICOLON},
|
||||
{s: `.`, tok: influxql.DOT},
|
||||
|
||||
// Identifiers
|
||||
{s: `foo`, tok: influxql.IDENT, lit: `foo`},
|
||||
|
@ -79,7 +80,7 @@ func TestScanner_Scan(t *testing.T) {
|
|||
{s: `.23`, tok: influxql.NUMBER, lit: `.23`},
|
||||
{s: `+.23`, tok: influxql.NUMBER, lit: `+.23`},
|
||||
{s: `-.23`, tok: influxql.NUMBER, lit: `-.23`},
|
||||
{s: `.`, tok: influxql.ILLEGAL, lit: `.`},
|
||||
//{s: `.`, tok: influxql.ILLEGAL, lit: `.`},
|
||||
{s: `-.`, tok: influxql.SUB, lit: ``},
|
||||
{s: `+.`, tok: influxql.ADD, lit: ``},
|
||||
{s: `10.3s`, tok: influxql.NUMBER, lit: `10.3`},
|
||||
|
@ -108,7 +109,6 @@ func TestScanner_Scan(t *testing.T) {
|
|||
{s: `DEFAULT`, tok: influxql.DEFAULT},
|
||||
{s: `DELETE`, tok: influxql.DELETE},
|
||||
{s: `DESC`, tok: influxql.DESC},
|
||||
//{s: `DOT`, tok: influxql.DOT},
|
||||
{s: `DROP`, tok: influxql.DROP},
|
||||
{s: `DURATION`, tok: influxql.DURATION},
|
||||
{s: `END`, tok: influxql.END},
|
||||
|
|
|
@ -47,8 +47,7 @@ const (
|
|||
RPAREN // )
|
||||
COMMA // ,
|
||||
SEMICOLON // ;
|
||||
COLON // :
|
||||
//DOT // .
|
||||
DOT // .
|
||||
|
||||
keyword_beg
|
||||
// Keywords
|
||||
|
@ -136,7 +135,7 @@ var tokens = [...]string{
|
|||
RPAREN: ")",
|
||||
COMMA: ",",
|
||||
SEMICOLON: ";",
|
||||
COLON: ":",
|
||||
DOT: ".",
|
||||
|
||||
ALL: "ALL",
|
||||
ALTER: "ALTER",
|
||||
|
|
Loading…
Reference in New Issue