Return a parse error for order by anything other than time
Order by time asc and desc are the only supported order by options currently. Tags, fields, or multiple order by fields will return a parse error.pull/3986/head
parent
7fa3d445f7
commit
d466533f20
|
@ -1822,6 +1822,11 @@ func (p *Parser) parseSortFields() (SortFields, error) {
|
|||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if lit != "time" {
|
||||
return nil, errors.New("only ORDER BY time supported at this time")
|
||||
}
|
||||
|
||||
fields = append(fields, field)
|
||||
// Parse error...
|
||||
default:
|
||||
|
@ -1845,6 +1850,10 @@ func (p *Parser) parseSortFields() (SortFields, error) {
|
|||
fields = append(fields, field)
|
||||
}
|
||||
|
||||
if len(fields) > 1 {
|
||||
return nil, errors.New("only ORDER BY time supported at this time")
|
||||
}
|
||||
|
||||
return fields, nil
|
||||
}
|
||||
|
||||
|
|
|
@ -585,7 +585,8 @@ func TestParser_ParseStatement(t *testing.T) {
|
|||
|
||||
// SHOW SERIES WHERE with ORDER BY and LIMIT
|
||||
{
|
||||
s: `SHOW SERIES WHERE region = 'order by desc' ORDER BY DESC, field1, field2 DESC LIMIT 10`,
|
||||
skip: true,
|
||||
s: `SHOW SERIES WHERE region = 'order by desc' ORDER BY DESC, field1, field2 DESC LIMIT 10`,
|
||||
stmt: &influxql.ShowSeriesStatement{
|
||||
Condition: &influxql.BinaryExpr{
|
||||
Op: influxql.EQ,
|
||||
|
@ -1258,6 +1259,7 @@ func TestParser_ParseStatement(t *testing.T) {
|
|||
{s: `SELECT field1 FROM myseries ORDER BY /`, err: `found /, expected identifier, ASC, DESC at line 1, char 38`},
|
||||
{s: `SELECT field1 FROM myseries ORDER BY 1`, err: `found 1, expected identifier, ASC, DESC at line 1, char 38`},
|
||||
{s: `SELECT field1 FROM myseries ORDER BY time ASC,`, err: `found EOF, expected identifier at line 1, char 47`},
|
||||
{s: `SELECT field1 FROM myseries ORDER BY time, field1`, err: `only ORDER BY time supported at this time`},
|
||||
{s: `SELECT field1 AS`, err: `found EOF, expected identifier at line 1, char 18`},
|
||||
{s: `SELECT field1 FROM foo group by time(1s)`, err: `GROUP BY requires at least one aggregate function`},
|
||||
{s: `SELECT count(value), value FROM foo`, err: `mixing aggregate and non-aggregate queries is not supported`},
|
||||
|
|
Loading…
Reference in New Issue