influxql: add CREATE CONTINUOUS QUERY (WIP)

pull/1300/head
David Norton 2015-01-06 17:34:01 -05:00
parent f23417fa5a
commit 3b649d3e63
5 changed files with 15 additions and 18 deletions

View File

@ -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

View File

@ -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",

View File

@ -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)

View File

@ -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},

View File

@ -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",