zeros are ok after all

pull/1937/head
Cory LaNou 2015-03-12 18:59:38 -06:00
parent bdfb9bfa0b
commit 08b15d9370
2 changed files with 17 additions and 19 deletions

View File

@ -564,22 +564,22 @@ func (p *Parser) parseSelectStatement(tr targetRequirement) (*SelectStatement, e
}
// Parse limit: "LIMIT <n>".
if stmt.Limit, err = p.parseOptionalTokenAndInt(LIMIT, false); err != nil {
if stmt.Limit, err = p.parseOptionalTokenAndInt(LIMIT); err != nil {
return nil, err
}
// Parse offset: "OFFSET <n>".
if stmt.Offset, err = p.parseOptionalTokenAndInt(OFFSET, false); err != nil {
if stmt.Offset, err = p.parseOptionalTokenAndInt(OFFSET); err != nil {
return nil, err
}
// Parse series limit: "SLIMIT <n>".
if stmt.SLimit, err = p.parseOptionalTokenAndInt(SLIMIT, false); err != nil {
if stmt.SLimit, err = p.parseOptionalTokenAndInt(SLIMIT); err != nil {
return nil, err
}
// Parse series offset: "SOFFSET <n>".
if stmt.SOffset, err = p.parseOptionalTokenAndInt(SOFFSET, false); err != nil {
if stmt.SOffset, err = p.parseOptionalTokenAndInt(SOFFSET); err != nil {
return nil, err
}
@ -679,12 +679,12 @@ func (p *Parser) parseShowSeriesStatement() (*ShowSeriesStatement, error) {
}
// Parse limit: "LIMIT <n>".
if stmt.Limit, err = p.parseOptionalTokenAndInt(LIMIT, false); err != nil {
if stmt.Limit, err = p.parseOptionalTokenAndInt(LIMIT); err != nil {
return nil, err
}
// Parse offset: "OFFSET <n>".
if stmt.Offset, err = p.parseOptionalTokenAndInt(OFFSET, true); err != nil {
if stmt.Offset, err = p.parseOptionalTokenAndInt(OFFSET); err != nil {
return nil, err
}
@ -708,12 +708,12 @@ func (p *Parser) parseShowMeasurementsStatement() (*ShowMeasurementsStatement, e
}
// Parse limit: "LIMIT <n>".
if stmt.Limit, err = p.parseOptionalTokenAndInt(LIMIT, false); err != nil {
if stmt.Limit, err = p.parseOptionalTokenAndInt(LIMIT); err != nil {
return nil, err
}
// Parse offset: "OFFSET <n>".
if stmt.Offset, err = p.parseOptionalTokenAndInt(OFFSET, false); err != nil {
if stmt.Offset, err = p.parseOptionalTokenAndInt(OFFSET); err != nil {
return nil, err
}
@ -760,12 +760,12 @@ func (p *Parser) parseShowTagKeysStatement() (*ShowTagKeysStatement, error) {
}
// Parse limit: "LIMIT <n>".
if stmt.Limit, err = p.parseOptionalTokenAndInt(LIMIT, false); err != nil {
if stmt.Limit, err = p.parseOptionalTokenAndInt(LIMIT); err != nil {
return nil, err
}
// Parse offset: "OFFSET <n>".
if stmt.Offset, err = p.parseOptionalTokenAndInt(OFFSET, false); err != nil {
if stmt.Offset, err = p.parseOptionalTokenAndInt(OFFSET); err != nil {
return nil, err
}
@ -803,12 +803,12 @@ func (p *Parser) parseShowTagValuesStatement() (*ShowTagValuesStatement, error)
}
// Parse limit: "LIMIT <n>".
if stmt.Limit, err = p.parseOptionalTokenAndInt(LIMIT, false); err != nil {
if stmt.Limit, err = p.parseOptionalTokenAndInt(LIMIT); err != nil {
return nil, err
}
// Parse offset: "OFFSET <n>".
if stmt.Offset, err = p.parseOptionalTokenAndInt(OFFSET, false); err != nil {
if stmt.Offset, err = p.parseOptionalTokenAndInt(OFFSET); err != nil {
return nil, err
}
@ -883,12 +883,12 @@ func (p *Parser) parseShowFieldKeysStatement() (*ShowFieldKeysStatement, error)
}
// Parse limit: "LIMIT <n>".
if stmt.Limit, err = p.parseOptionalTokenAndInt(LIMIT, false); err != nil {
if stmt.Limit, err = p.parseOptionalTokenAndInt(LIMIT); err != nil {
return nil, err
}
// Parse offset: "OFFSET <n>".
if stmt.Offset, err = p.parseOptionalTokenAndInt(OFFSET, false); err != nil {
if stmt.Offset, err = p.parseOptionalTokenAndInt(OFFSET); err != nil {
return nil, err
}
@ -1413,7 +1413,7 @@ func (p *Parser) parseFill() (FillOption, interface{}, error) {
// parseOptionalTokenAndInt parses the specified token followed
// by an int, if it exists.
func (p *Parser) parseOptionalTokenAndInt(t Token, allowZero bool) (int, error) {
func (p *Parser) parseOptionalTokenAndInt(t Token) (int, error) {
// Check if the token exists.
if tok, _, _ := p.scanIgnoreWhitespace(); tok != t {
p.unscan()
@ -1435,8 +1435,8 @@ func (p *Parser) parseOptionalTokenAndInt(t Token, allowZero bool) (int, error)
// Parse number.
n, _ := strconv.ParseInt(lit, 10, 64)
if n < 1 && !allowZero {
msg := fmt.Sprintf("%s must be > 0", t.String())
if n < 0 {
msg := fmt.Sprintf("%s must be >= 0", t.String())
return 0, &ParseError{Message: msg, Pos: pos}
}

View File

@ -778,10 +778,8 @@ func TestParser_ParseStatement(t *testing.T) {
{s: `SELECT field1 FROM myseries GROUP`, err: `found EOF, expected BY at line 1, char 35`},
{s: `SELECT field1 FROM myseries LIMIT`, err: `found EOF, expected number at line 1, char 35`},
{s: `SELECT field1 FROM myseries LIMIT 10.5`, err: `fractional parts not allowed in LIMIT at line 1, char 35`},
{s: `SELECT field1 FROM myseries LIMIT 0`, err: `LIMIT must be > 0 at line 1, char 35`},
{s: `SELECT field1 FROM myseries OFFSET`, err: `found EOF, expected number at line 1, char 36`},
{s: `SELECT field1 FROM myseries OFFSET 10.5`, err: `fractional parts not allowed in OFFSET at line 1, char 36`},
{s: `SELECT field1 FROM myseries OFFSET 0`, err: `OFFSET must be > 0 at line 1, char 36`},
{s: `SELECT field1 FROM myseries ORDER`, err: `found EOF, expected BY at line 1, char 35`},
{s: `SELECT field1 FROM myseries ORDER BY /`, err: `found /, expected identifier, ASC, or DESC at line 1, char 38`},
{s: `SELECT field1 FROM myseries ORDER BY 1`, err: `found 1, expected identifier, ASC, or DESC at line 1, char 38`},