Commit Graph

78 Commits (19feed1d130adf28fb27fc264e90a7abf5e0f46e)

Author SHA1 Message Date
David Norton b003522a18 use heap for tagSetCursor lookahead 2015-07-31 13:28:46 -04:00
David Norton 0b248e225c Fix aggregate queries and time precision on where clauses. 2015-07-29 15:54:55 -04:00
Philip O'Toole 9949de3f44 Fix typo in comment 2015-07-22 13:59:43 -07:00
Ben Johnson a7f50ae03c refactor storage to engine 2015-07-22 11:08:10 -06:00
Ben Johnson de1f9a3736 refactor tsdb tests into test package 2015-07-22 11:07:06 -06:00
Philip O'Toole 42b4a0b8bf string return is totally unused 2015-07-22 02:55:13 -07:00
Philip O'Toole 45dcf9960c Optimize the very inner loop of cursor iteration
This change moves tracking of next timestamp and values to simple
slices, as performance measurement showed that Peek() on TagSet cursors
was a huge performance drain. There is much more that can be done here,
but with this in place query performance has been restored to 0.9.1
levels.

This change also uses -1 to indicate that no value is available for a
given timestamp.
2015-07-22 02:55:09 -07:00
Philip O'Toole 7e0fa132c8 Raw query with no valid SELECT fields is not data 2015-07-20 15:59:52 -07:00
Philip O'Toole aeb51ec2f5 Remove existence restrictions on field and tags 2015-07-20 15:44:07 -07:00
Philip O'Toole 9b19e1e664 Correctly build union of fields and tags
Previously the fields and tags were getting overwritten with every loop
of Sources.
2015-07-20 14:44:40 -07:00
dgnorton 2aa2fe90dc Merge pull request #3399 from influxdb/mapper-use-statement
mapper takes Statement instead of *SelectStatement
2015-07-20 15:57:56 -04:00
David Norton 7e20c53025 mapper takes Statement instead of *SelectStatement 2015-07-20 15:48:38 -04:00
Philip O'Toole 425a65fca1 RemoteShard mapping now performed over TCP
With this change remote mapping no longer uses HTTP, as the HTTP ports
exposed by nodes on the cluster are not known cluster wide. The TCP
ports exposed by the cluster service are, so this change uses that
functionality. Each RemoteMapper has its own dedicated connection pool
for each node, and remote mapping TCP connections are in no way coupled
with query TCP connections.
2015-07-20 10:44:38 -07:00
Philip O'Toole 4569f3d2ea Factor out aggregate-only code in LocalMapper Open 2015-07-18 22:37:41 -07:00
Philip O'Toole 6b5b652f39 Correct explanatory comments for LocalMapper 2015-07-18 22:28:32 -07:00
Philip O'Toole 3695ebcd4e Move to a single LocalMapper type 2015-07-18 16:10:12 -07:00
Philip O'Toole a2e3f0af3c Remove unused field attribute 2015-07-18 13:19:36 -07:00
Philip O'Toole abc05b0fa8 Remove unused decoders attribute 2015-07-18 13:14:58 -07:00
Philip O'Toole 23b95bf939 Add comment re the complex mapperOutput type 2015-07-17 08:27:53 -07:00
Philip O'Toole 5f357020c6 It's not raw or aggregate, it's just "mapper" 2015-07-17 08:27:49 -07:00
Philip O'Toole 56b61beff9 Remove aggMapperOutput type
It's identical to rawMapperOutput type.
2015-07-17 08:23:36 -07:00
Philip O'Toole 12f50eba04 Remove aggMapperValue type
Identical to rawMapperValue type.
2015-07-17 08:23:36 -07:00
Philip O'Toole dc0aadf3b0 aggMapperValue is the same as rawMapperValue 2015-07-17 08:23:36 -07:00
Philip O'Toole 134ab87a49 Store a []interface{} in an interface{}
This is really pushing the type system, but needs to be done to cleanly
combine the raw and aggregate output mapper types.
2015-07-17 08:23:36 -07:00
Philip O'Toole 0d6c6bbe6f Correctly check if raw derivative is required
The multiple checks for Mapper and Executor type -- the lack of DRYness
in this code -- meant the same checks would need to be copied. Therefore
this change, as well as fixing the bug, improves the situation a little
bit by *asking* the Mappers what type of Executor is required. This code
is still not ideal.

Fixes #3355.
2015-07-16 23:28:38 -07:00
Philip O'Toole a1ac8e49cc Correct JSON tag name 2015-07-16 21:39:43 -07:00
Philip O'Toole 3ddff9114d Delimit measurement name for Mapper tagsets 2015-07-16 13:28:49 -07:00
Philip O'Toole 74cb96646c Refactor query engine for distributed query support
With this change, the query engine code gathers information about
shards and tagsets by working with individual shards, collating the
information, and returning that to the client. It does not assume that any
particular shard is local, and accesses all shards through abstracted
Mappers, of which there are two types -- a Mapper type for Raw queries
and a second type for Aggregate queries. There are corresponding
Executors for each type of Mapper, but both types of Executors share the
same interface.
2015-07-15 12:54:55 -07:00