Skip to content

Commit

Permalink
Merge pull request #6258 from influxdata/js-0.12-invalid-expression-p…
Browse files Browse the repository at this point in the history
…anic

Throw an error when an invalid expression is used with aux iterators
  • Loading branch information
jsternberg committed Apr 7, 2016
2 parents 27988a4 + 0ee0b3b commit e094138
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 12 deletions.
31 changes: 19 additions & 12 deletions influxql/select.go
Original file line number Diff line number Diff line change
Expand Up @@ -110,20 +110,27 @@ func buildAuxIterators(fields Fields, ic IteratorCreator, opt IteratorOptions) (

// Generate iterators for each field.
itrs := make([]Iterator, len(fields))
for i, f := range fields {
expr := Reduce(f.Expr, nil)
switch expr := expr.(type) {
case *VarRef:
itrs[i] = aitr.Iterator(expr.Val)
case *BinaryExpr:
itr, err := buildExprIterator(expr, aitr, opt)
if err != nil {
return nil, fmt.Errorf("error constructing iterator for field '%s': %s", f.String(), err)
if err := func() error {
for i, f := range fields {
expr := Reduce(f.Expr, nil)
switch expr := expr.(type) {
case *VarRef:
itrs[i] = aitr.Iterator(expr.Val)
case *BinaryExpr:
itr, err := buildExprIterator(expr, aitr, opt)
if err != nil {
return fmt.Errorf("error constructing iterator for field '%s': %s", f.String(), err)
}
itrs[i] = itr
default:
return fmt.Errorf("invalid expression type: %T", expr)
}
itrs[i] = itr
default:
panic("unreachable")
}
return nil
}(); err != nil {
Iterators(Iterators(itrs).filterNonNil()).Close()
aitr.Close()
return nil, err
}

// Background the primary iterator since there is no reader for it.
Expand Down
4 changes: 4 additions & 0 deletions influxql/select_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2021,6 +2021,10 @@ func TestSelect_InvalidQueries(t *testing.T) {
q: `SELECT 'value' FROM cpu`,
err: `invalid expression type: *influxql.StringLiteral`,
},
{
q: `SELECT 'value', value FROM cpu`,
err: `invalid expression type: *influxql.StringLiteral`,
},
}

for i, tt := range tests {
Expand Down

0 comments on commit e094138

Please sign in to comment.