Merge pull request #5064 from mengjinglei/fix-parens-math

fix issue #5054
pull/5079/head
Philip O'Toole 2015-12-10 08:44:48 -08:00
commit def5e06150
3 changed files with 33 additions and 1 deletions

View File

@ -808,6 +808,16 @@ func TestServer_Query_Math(t *testing.T) {
command: `SELECT max(value) + min(value) from db.rp.integer`,
exp: fmt.Sprintf(`{"results":[{"series":[{"name":"integer","columns":["time",""],"values":[["1970-01-01T00:00:00Z",84]]}]}]}`),
},
&Query{
name: "SELECT square of enclosed integer value",
command: `SELECT ((value) * (value)) from db.rp.integer`,
exp: fmt.Sprintf(`{"results":[{"series":[{"name":"integer","columns":["time",""],"values":[["%s",1764]]}]}]}`, now.Format(time.RFC3339Nano)),
},
&Query{
name: "SELECT square of enclosed integer value",
command: `SELECT (value * value) from db.rp.integer`,
exp: fmt.Sprintf(`{"results":[{"series":[{"name":"integer","columns":["time",""],"values":[["%s",1764]]}]}]}`, now.Format(time.RFC3339Nano)),
},
}...)
if err := test.init(s); err != nil {

View File

@ -2443,7 +2443,7 @@ func (a Fields) AliasNames() []string {
return names
}
// Names returns a list of raw field names.
// Names returns a list of field names.
func (a Fields) Names() []string {
names := []string{}
for _, f := range a {
@ -2454,6 +2454,8 @@ func (a Fields) Names() []string {
names = append(names, expr.Val)
case *BinaryExpr:
names = append(names, walkNames(expr)...)
case *ParenExpr:
names = append(names, walkNames(expr)...)
}
}
return names

View File

@ -845,6 +845,26 @@ func Test_fieldsNames(t *testing.T) {
out: []string{"value", "temperature"},
alias: []string{""},
},
{ //case: ParenExpr(varRef)
in: []string{"(value)"},
out: []string{"value"},
alias: []string{""},
},
{ //case: ParenExpr(varRef + varRef)
in: []string{"(value + value)"},
out: []string{"value", "value"},
alias: []string{""},
},
{ //case: ParenExpr(aggregate)
in: []string{"(mean(value))"},
out: []string{"value"},
alias: []string{""},
},
{ //case: ParenExpr(aggregate + aggregate)
in: []string{"(mean(value) + max(value))"},
out: []string{"value", "value"},
alias: []string{""},
},
} {
fields := influxql.Fields{}
for _, s := range test.in {