Commit Graph

204 Commits (98bcad1035a777bf2002af5339056d68fc310c89)

Author SHA1 Message Date
Tait Clarridge 45b3e61ac7 Add configurable shard duration to retention policies
Allows configuration of shard group duration at database creation, and retention
policy create/alter time.

Query examples:

```
CREATE DATABASE testdb WITH DURATION 90d SHARD DURATION 30m NAME rp_testdb
CREATE RETENTION POLICY rp_testdb2 ON testdb DURATION INF REPLICATION 1 SHARD DURATION 30m
ALTER RETENTION POLICY rp_testdb2 ON testdb SHARD DURATION 1h
```

This can be useful with long duration retention policies with lots of data, where
you can split into smaller shards to relieve memory pressure.
2016-03-24 00:25:49 -04:00
Jonathan A. Sternberg b89edfd71c Fix the code that handles semicolons
This allows multiple semicolons in a row now and also requires that a
semicolon separate commands. The query specification says this is
required, but a boolean error in `ParseQuery` makes one semicolon
optional and multiple semicolons an error.

Fixes #5728.
2016-03-22 15:32:54 -04:00
Jonathan A. Sternberg 3e580bcf04 Allow a query to be killed
While this allows a query to be killed, it doesn't really do anything
yet since the interrupt happens only after the first row gets emitted
(the entire first series).

This section of code will likely have to be refactored to make this work
since we need a way to interrupt a currently running iterator.
2016-03-21 12:07:06 -04:00
Jonathan A. Sternberg 117f62c33e Implement a simple task manager for queries
The currently running queries can be listed with the command
`SHOW QUERIES` and it will display the current commands that have been
run, the database they were run against, and how long they have been
running.
2016-03-21 12:06:06 -04:00
Jonathan A. Sternberg e47426ff6e Support integer literals in the query language
Numbers in the query without any decimal will now be emitted as integers
instead and be parsed as an IntegerLiteral. This ensures we keep the
original context that a query was issued with and allows us to act more
similar to how programming languages are typically structured when it
comes to floats and ints.

This adds functionality for dealing with integers promoting to floats in
the various different places where math are used.

Fixes #5744 and #5629.
2016-03-17 10:37:34 -04:00
Edd Robinson e5a41f7796 DROP SHARD 2016-03-14 22:59:55 +00:00
Jonathan A. Sternberg f1faf106b1 Ensure binary expressions cannot mix aggregates and raw fields
Closes #5973.
2016-03-12 11:31:16 -05:00
Jonathan A. Sternberg 620addadde Forbid binary expressions in function calls
Also fixes derivative calls with an aggregate function to require a
group by interval. The call without a group by interval doesn't make
sense as it will never return anything since it will always have one
point.

Fixes #5968.
2016-03-10 11:38:47 -05:00
Jonathan A. Sternberg f276c705df Forbid using top() or bottom() in a binary expression
Fixes #5959.
2016-03-09 17:32:17 -05:00
Joe LeGasse dc8ed7953d Remove custom binary-conversion functions
Also cleaned up some excess allocations, and other cruft from the code
2016-02-18 13:56:35 -05:00
Ben Johnson 5a0d1ab7c1 rename influxdb/influxdb to influxdata/influxdb
This commit changes all the import and URL references from:

    github.com/influxdb/influxdb

to:

    github.com/influxdata/influxdb
2016-02-10 10:26:18 -07:00
Ben Johnson cde973f409 refactor query engine 2016-02-10 09:40:24 -07:00
David Norton 58e0eed9cb Merge pull request #5403 from influxdata/meta-service2
refactor meta into separate meta client & service
2016-01-22 20:06:51 -05:00
Jonathan A. Sternberg 1429f4b4ea Teach the CQ runner how to deal with a resample interval higher than the query interval
Previously if you issued a CQ with a resample interval higher than the
query interval, such as the following:

    CREATE CONTINUOUS QUERY cq ON db
        RESAMPLE EVERY 4m
        BEGIN
            SELECT mean(value) INTO cpu_mean FROM cpu GROUP BY time(2m)
        END

This would result in strange behavior because the FOR value defaulted to
the GROUP BY interval and the minimum time passing before a CQ ran was
also the resample interval, so it wouldn't run the appropriate intervals
even if you set the resample duration to a higher value.

This tweaks the CQ runner to set the minimum interval before a bucket
becomes capable of running to the lower of the query interval or the
resample interval instead of always using the resample interval.

It also sets the default resample duration to be the higher value of the
query interval or the resample interval so the above query gets a
default of 4m instead of 2m and will execute 2 queries every 4 minutes.

If you manually set the resample duration to a lower value than the
resample interval, the old behavior will still happen and should be
considered an error.

This also makes trying to create a continuous query with a resample
duration of below the resample interval or query interval (whichever is
higher) as an error returned by the parser.

Fixes #5286.
2016-01-22 09:43:46 -05:00
Paul Dix c9d82ad0ad Wire up meta service functionality
* Add dir, hostname, and bind address to top level config since it applies to services other than meta
* Add enabled flags to example toml for data and meta services
* Wire up add/remove raft peers and meta servers to meta service
* Update DROP SERVER to be either DROP META SERVER or DROP DATA SERVER
* Bring over statement executor from old meta package
* Start meta service client implementation
* Update meta service test to use the client
* Wire up node ID/meta server storage information
2016-01-21 15:28:32 -05:00
Jonathan A. Sternberg 5d4ecf853c Add continuous query option for customizing resampling
This makes the following syntax possible:

    CREATE CONTINUOUS QUERY mycq ON mydb
        RESAMPLE EVERY 1m FOR 1h
        BEGIN
          SELECT mean(value) INTO cpu_mean FROM cpu GROUP BY time(5m)
        END

The RESAMPLE option customizes how often an interval will be sampled and
the duration. The interval is customized with EVERY. Any intervals
within the resampling duration on a multiple of the resample interval
will be updated with the new results from the query.

The duration is customized with FOR. This determines how long an
interval will participate in resampling.

Both options are optional. If RESAMPLE is in the syntax, at least one of
the two needs to be given. The default for both is the interval of the
continuous query.

The service also improves tracking of the last run time and the logic of
when a query for an interval should be run. When determining the oldest
interval to run for a query, the continuous query service determines
what would have been the optimal time to perform the next query based on
the last run time. It then uses this time to determine the oldest
interval that should be run using the resample duration and will
resample all intervals between this time and the current time as opposed
to potentially forgetting about the last run in an interval if the
continuous query service gets delayed for some reason.

This removes the previous config options for customizing continuous
queries since they are no longer relevant and adds a new option of
customizing the run interval. The run interval determines how often the
continuous query service polls for when it should execute a query. This
option defaults to 1s, but can be set to 1m if the least common factor
of all continuous queries' intervals is a higher value (like 1m).
2015-12-28 16:43:49 -05:00
Nathaniel Cook 3227951069 Stub out DELETE in parser to return better error 2015-12-04 14:47:44 -07:00
Mark Rushakoff d2f8a10f96 Merge pull request #4891 from influxdb/duration-must-have-units
InfluxQL: FormatDuration uses "u" for microsecond units
2015-12-04 08:05:21 -08:00
Philip O'Toole c76b109ef4 Merge pull request #4858 from viru/fix-nested-aggr
Validate nested aggregations in queries
2015-12-04 05:58:29 -08:00
Mark Rushakoff da8c56049b FormatDuration uses "u" for microsecond units
Previously, it was formatting microsecond durations without any units.
Currently, all durations must have units explicitly specified.
2015-12-02 09:00:58 -08:00
Paulo Pires 30cc1339ec Renamed RetentionPolicyExists to RetentionPolicyCreate. 2015-11-28 16:15:00 +00:00
Paulo Pires 8e2868ed60 Added support for setting retention policy on database creation.
Fixes #2676
2015-11-27 20:02:55 +00:00
Paweł Kowalak c4d7261462 Validate nested aggregations in queries
For DERIVATIVE aggregations there was only one check performed: if
aggregation function is given when using group by. However the nested
aggregation function syntax was not checked.

Fixes #4123
2015-11-20 21:15:24 +01:00
Mateusz Dymiński 8090ba6830 SHOW SHARD GROUPS 2015-11-14 22:27:24 +01:00
ch33hau 2235dcec6b Added IF EXISTS for DROP DATABASE command, #4659 2015-11-07 10:57:49 +08:00
David Norton a3d127f797 Revert "add RENAME DATABASE"
This reverts commit 7212bfce83.

Conflicts:
	influxql/parser.go
	influxql/token.go
	meta/internal/meta.pb.go
	meta/internal/meta.proto
2015-10-20 09:01:34 -04:00
David Norton 20929c3db2 Revert "change syntax to ALTER DATABASE ... RENAME TO ..."
This reverts commit 668b5b9bfb.
2015-10-20 08:43:45 -04:00
David Norton 34c9a053dd Revert "improvements from code review"
This reverts commit 37964a032f.

Conflicts:
	meta/internal/meta.proto
2015-10-20 08:41:50 -04:00
David Norton a1b0f53108 feat #3523: parse WITH in SHOW MEASUREMENTS 2015-10-19 14:00:53 -04:00
Nathaniel Cook 8b31007aa7 Adds subscriber service for creating/dropping subscriptions to the
InfluxDB data stream.
2015-10-14 15:23:45 -06:00
linearb 37964a032f improvements from code review 2015-10-09 13:57:02 -04:00
linearb 668b5b9bfb change syntax to ALTER DATABASE ... RENAME TO ... 2015-10-09 13:56:23 -04:00
linearb 7212bfce83 add RENAME DATABASE 2015-10-09 13:55:38 -04:00
Nick Dawbarn 136dbef0e7 Formatting fixes 2015-10-08 19:41:36 +10:00
Nick Dawbarn 26f6d00668 Bugfix for #3429 String representations of RegexLiterals generated in influxql/ast.go add the / char as a start and end delimiter, but does not escape any / characters that may exist with the regex 2015-10-08 19:41:36 +10:00
Konstantin Shaposhnikov 95a0e149b0 Fix aggregates validation in presence of arithmetic expressions
Fixes #4325
2015-10-06 21:24:50 +08:00
Philip O'Toole 2ac0357406 Support dropping non-Raft nodes 2015-10-04 00:19:52 -07:00
Philip O'Toole d74e0690c7 Revert "Merge pull request #4233 from influxdb/drop-server"
This reverts commit 0bdb36f6dc, reversing
changes made to 3085fbc138.
2015-10-02 08:39:57 -07:00
Cory LaNou d036f63771 additional parser test for DROP SERVER 2015-10-01 15:39:15 -05:00
Cory LaNou 93507c0b51 add force for drop server, misc fixes, more wip 2015-10-01 15:39:15 -05:00
Cory LaNou 205c7674f6 add drop server tests 2015-10-01 15:39:14 -05:00
Cory LaNou 3c74c13908 add drop server statement 2015-10-01 15:39:14 -05:00
Jason Wilder 6dcd8d71a1 Merge pull request #4149 from peekeri/derivative_fix
influxql: when using derivative, check 'group by time' instead of 'where time ...'
2015-09-30 16:44:54 -06:00
Philip O'Toole 8177b80929 Update, and ease maintainabilty of SHOW errors
Fixes issue #4164.
2015-09-24 13:01:31 -07:00
Philip O'Toole a71a5ffd36 Support module-selection for SHOW DIAGNOSTICS 2015-09-22 21:56:46 -07:00
Philip O'Toole 35d09cedfd Support SHOW STATS for specific module 2015-09-22 16:36:13 -07:00
David Norton e4800df006 add more parser tests 2015-09-22 14:25:13 -04:00
David Norton e176d2c0dd make SHOW TAG KEYS support (S)LIMIT & (S)OFFSET 2015-09-21 13:05:53 -04:00
Jari Sukanen c844ec10d5 influxql: when using derivative, check 'group by time' instead of 'where time ...'
When using derivative, it is required that aggregate function is used as
sub-call when grouping by time is used. However, AST parsing used to check
if WHERE-clause contained condition with 'time'.

Fix this by changing check to see if groupByInterval is present.

Modify also related error case tests and add check for
select derivative(...) ... where time > ...
2015-09-18 08:55:09 +03:00
Cory LaNou 5395ac7634 Period in field name that matches measurement fails. Fixes #3457 2015-09-15 16:26:39 -05:00