Fix #602. Merge will fail to work across shards

pull/521/merge
John Shahid 2014-05-30 18:52:13 -04:00
parent 7c753e671e
commit caa8481cb8
2 changed files with 33 additions and 0 deletions

View File

@ -356,6 +356,11 @@ func (self *ShardData) String() string {
}
func (self *ShardData) ShouldAggregateLocally(querySpec *parser.QuerySpec) bool {
f := querySpec.SelectQuery().GetFromClause()
if f.Type == parser.FromClauseInnerJoin || f.Type == parser.FromClauseMerge {
return false
}
if self.durationIsSplit && querySpec.ReadsFromMultipleSeries() {
return false
}

View File

@ -175,6 +175,34 @@ func (self *DataTestSuite) DifferenceValues(c *C) (Fun, Fun) {
}
}
func (self *DataTestSuite) MergingOldData(c *C) (Fun, Fun) {
return func(client Client) {
data := `
[
{
"name": "test_merge_1",
"columns": ["time", "value"],
"points": [
[315532800000, "a value"]
]
},
{
"name": "test_merge_2",
"columns": ["time", "value"],
"points": [
[1401321600000, "another value"]
]
}
]`
client.WriteJsonData(data, c, influxdb.Millisecond)
}, func(client Client) {
serieses := client.RunQuery("select * from test_merge_1 merge test_merge_2", c, "m")
c.Assert(serieses, HasLen, 1)
maps := ToMap(serieses[0])
c.Assert(maps, HasLen, 2)
}
}
// Difference function combined with group by
func (self *DataTestSuite) DifferenceGroupValues(c *C) (Fun, Fun) {
return func(client Client) {