move the Filter method to the datastore.

pull/17/head
John Shahid 2013-10-16 17:27:06 -04:00
parent b47a658555
commit 8745da43e3
4 changed files with 71 additions and 60 deletions

View File

@ -1,4 +1,4 @@
package engine
package datastore
import (
"fmt"

View File

@ -1,4 +1,4 @@
package engine
package datastore
import (
"fmt"

View File

@ -0,0 +1,69 @@
package datastore
import (
"common"
. "launchpad.net/gocheck"
"parser"
)
type FilteringSuite struct{}
var _ = Suite(&FilteringSuite{})
func (self *FilteringSuite) TestEqualityFiltering(c *C) {
queryStr := "select * from t where column_one == 100 and column_two != 6;"
query, err := parser.ParseQuery(queryStr)
c.Assert(err, IsNil)
series, err := common.StringToSeriesArray(`
[
{
"points": [
{"values": [{"int_value": 100},{"int_value": 5 }], "timestamp": 1381346631, "sequence_number": 1},
{"values": [{"int_value": 100},{"int_value": 6 }], "timestamp": 1381346631, "sequence_number": 1},
{"values": [{"int_value": 90 },{"int_value": 15}], "timestamp": 1381346632, "sequence_number": 1}
],
"name": "t",
"fields": [
{"type": "INT32", "name": "column_one"},
{"type": "INT32", "name": "column_two"}
]
}
]
`)
c.Assert(err, IsNil)
result, err := Filter(query, series[0])
c.Assert(err, IsNil)
c.Assert(result, NotNil)
c.Assert(result.Points, HasLen, 1)
c.Assert(*result.Points[0].Values[0].IntValue, Equals, int32(100))
c.Assert(*result.Points[0].Values[1].IntValue, Equals, int32(5))
}
func (self *FilteringSuite) TestInequalityFiltering(c *C) {
queryStr := "select * from t where column_one >= 100 and column_two > 6;"
query, err := parser.ParseQuery(queryStr)
c.Assert(err, IsNil)
series, err := common.StringToSeriesArray(`
[
{
"points": [
{"values": [{"int_value": 100},{"int_value": 7 }], "timestamp": 1381346631, "sequence_number": 1},
{"values": [{"int_value": 100},{"int_value": 6 }], "timestamp": 1381346631, "sequence_number": 1},
{"values": [{"int_value": 90 },{"int_value": 15}], "timestamp": 1381346632, "sequence_number": 1}
],
"name": "t",
"fields": [
{"type": "INT32", "name": "column_one"},
{"type": "INT32", "name": "column_two"}
]
}
]
`)
c.Assert(err, IsNil)
result, err := Filter(query, series[0])
c.Assert(err, IsNil)
c.Assert(result, NotNil)
c.Assert(result.Points, HasLen, 1)
c.Assert(*result.Points[0].Values[0].IntValue, Equals, int32(100))
c.Assert(*result.Points[0].Values[1].IntValue, Equals, int32(7))
}

View File

@ -905,61 +905,3 @@ func (self *EngineSuite) TestPercentileQueryWithOutOfBoundNumericArguments(c *C)
runQueryRunError(engine, "select percentile(column_one, 0) from foo group by time(1m);", c, err)
runQueryRunError(engine, "select percentile(column_one, 105) from foo group by time(1m);", c, err)
}
func (self *EngineSuite) TestEqualityFiltering(c *C) {
queryStr := "select * from t where column_one == 100 and column_two != 6;"
query, err := parser.ParseQuery(queryStr)
c.Assert(err, IsNil)
series, err := common.StringToSeriesArray(`
[
{
"points": [
{"values": [{"int_value": 100},{"int_value": 5 }], "timestamp": 1381346631, "sequence_number": 1},
{"values": [{"int_value": 100},{"int_value": 6 }], "timestamp": 1381346631, "sequence_number": 1},
{"values": [{"int_value": 90 },{"int_value": 15}], "timestamp": 1381346632, "sequence_number": 1}
],
"name": "t",
"fields": [
{"type": "INT32", "name": "column_one"},
{"type": "INT32", "name": "column_two"}
]
}
]
`)
c.Assert(err, IsNil)
result, err := Filter(query, series[0])
c.Assert(err, IsNil)
c.Assert(result, NotNil)
c.Assert(result.Points, HasLen, 1)
c.Assert(*result.Points[0].Values[0].IntValue, Equals, int32(100))
c.Assert(*result.Points[0].Values[1].IntValue, Equals, int32(5))
}
func (self *EngineSuite) TestInequalityFiltering(c *C) {
queryStr := "select * from t where column_one >= 100 and column_two > 6;"
query, err := parser.ParseQuery(queryStr)
c.Assert(err, IsNil)
series, err := common.StringToSeriesArray(`
[
{
"points": [
{"values": [{"int_value": 100},{"int_value": 7 }], "timestamp": 1381346631, "sequence_number": 1},
{"values": [{"int_value": 100},{"int_value": 6 }], "timestamp": 1381346631, "sequence_number": 1},
{"values": [{"int_value": 90 },{"int_value": 15}], "timestamp": 1381346632, "sequence_number": 1}
],
"name": "t",
"fields": [
{"type": "INT32", "name": "column_one"},
{"type": "INT32", "name": "column_two"}
]
}
]
`)
c.Assert(err, IsNil)
result, err := Filter(query, series[0])
c.Assert(err, IsNil)
c.Assert(result, NotNil)
c.Assert(result.Points, HasLen, 1)
c.Assert(*result.Points[0].Values[0].IntValue, Equals, int32(100))
c.Assert(*result.Points[0].Values[1].IntValue, Equals, int32(7))
}