Commit Graph

680 Commits (e3e1760b38d5d7ea7fcfda45c6a6e10c18ab66bb)

Author SHA1 Message Date
Yiqun (Ethan) Zhang 95d97c6e29
feat(query): planner rule to push down window and bare first() and la… (#18534) 2020-06-17 14:00:40 -05:00
Adrian Thurston 5d1a759170
feat: annotate context with feature flags when handling flux queries (#18506)
Annotate the context with feature flags when handling flux queries in influxdb.
Taking advantage of this in flux end-to-end tests. Using a custom flagger that
can set overrides based on the test case that is about to be run, allowing us
to enable features in the end-to-end tests.
2020-06-17 16:55:29 +03:00
jlapacik a19604c0ea refactor: windowed read operation should include aggregate name 2020-06-16 18:05:21 -07:00
Christopher M. Wolff 8fa5d3f591
feat(query): add test and feature flag for pushing down sum (#18484) 2020-06-12 13:28:03 -07:00
Johnny Steenbergen b1c7800bbe chore(query): skip flakey test
references: #18463
2020-06-11 11:26:38 -07:00
Yiqun (Ethan) Zhang 82185dd434
feat: add feature flag for fill() (#18445) 2020-06-10 16:00:43 -05:00
Yiqun (Ethan) Zhang 07c01cf79d
chore: update flux to v0.69.2 (#18441) 2020-06-10 15:36:17 -05:00
Jonathan A. Sternberg db686349e7
feat(storage/flux): support full aggregate window push down (#18399)
This enables a new rule that will push down the full `aggregateWindow`
query including the `duplicate` and `window(every: inf)` that recombines
the tables. When the full rule is used, the table is not split into
tables for each window and instead retains itself as a single table. The
start or stop column is renamed to `_time` and `_start` and `_stop` will
be the boundaries of the query.
2020-06-10 13:21:41 -05:00
Faith Chikwekwe 1bf2ce1a32 feat(query): register bare aggregate 2020-06-09 14:24:41 -07:00
Jonathan A. Sternberg 077949cd96
chore(flux): downgrade flux to v0.68.0 (#18413)
* revert: "feat: add feature flag for fill() (#18386)"

This reverts commit 8f9e73af27.

* chore(flux): downgrade flux to v0.68.0
2020-06-09 11:38:55 -05:00
Yiqun (Ethan) Zhang 8f9e73af27
feat: add feature flag for fill() (#18386) 2020-06-08 21:57:19 -05:00
Yiqun (Ethan) Zhang 78526a2210
chore: update flux to v0.69.1 (#18403) 2020-06-08 20:57:56 -05:00
jlapacik eba496d1bd
feat: grouped aggregate rewrite rules (#18342)
* feat: flags for pushing down new aggregates

* refactor: grouped aggregate rewrite rules

The storage operation ReadGroup aggregates per series on the storage
side. The planner will rewrite grouped aggregate queries to call
ReadGroup, which will perform a partial aggregation, followed by
another operation that will perform the rest of the aggregation on
the compute side.

* feat: storage capabilities for grouped aggregates

* fix: changes from review

* feat: group read operation name should include aggregate
2020-06-04 14:36:15 -07:00
Jonathan A. Sternberg efbc4ae7c1
feat(storage/flux): implement create empty for the window table reader (#18288)
This implements create empty for the window table reader and allows this
table read function to be used when it is specified. It will pass down
the create empty flag from the original window call into the storage
read function.

This also fixes the window table reader so it properly creates
individual tables for each window. Previously, it was constructing one
table for an entire series instead of one table per window.

Tests have been added to verify three edge case behaviors. The first is
the normal read operation where all values are present. The second is
when create empty is specified so null values may be created. The third
is with truncated boundaries to ensure that storage is read from and the
start and stop timestamps get correctly truncated.
2020-06-01 17:57:50 -05:00
jlapacik baf400c4d4 chore: update flux to v0.68.0 2020-05-28 14:18:54 -07:00
Yiqun (Ethan) Zhang 41156ca646
feat(query): implement window count aggregate pushdown (#18043) 2020-05-28 13:42:38 -05:00
Christopher M. Wolff 53165bfb7f
feat(query): add a planner rule to push down bare aggregates (#18144) 2020-05-21 23:03:09 -07:00
Jonathan A. Sternberg 0bb847b7e7
Merge branch 'master' into feat/use-algo-w 2020-05-21 10:33:13 -05:00
Christopher M. Wolff 49df5e51eb
feat(query): add conditional option to LoggingProxyQueryService (#18170) 2020-05-20 10:22:21 -07:00
Adrian Thurston b776cf46f5
feat: added PushDownGroupAggregate planner rewrite rule (#18085)
Added a (disabled) planner rule that matches:
   ReadGroupPhys -> { count }

It uses the same physical spec node for group to implement the aggregate. The
rule requires:
 * the pushDownGroupAggregateCount feature flag enabled
 * no existing aggregate present in the ReadGroup
 * use of the "_value" column only
2020-05-20 16:57:16 +03:00
Jonathan A. Sternberg 342c3c2630
fix(query): do not free the column reader in the no content encoders (#18116)
The column reader passed to `flux.Table.Do` is automatically released.
The function passed to the column reader should never release it
manually. This causes a double release which causes the table to be
erroneously freed when it might be referenced by another transformation.

In particular, this affected the following:

    tables
    |> yield()
    |> to()

This is because this would produce a buffered table with two references
and pass it to both `yield()` and `to()` because `yield()` is a
pseudo-node that doesn't really exist. The real graph looks more like:

    tables |> yield()
    tables |> to()

The `yield()` would double release which would release the `to()`
transformation's copy of the column readers. The `to()` method would
then be invoked with an invalid column reader.
2020-05-15 13:55:37 -05:00
Adrian Thurston b43f79b980
fix: need to rebuild the query request before the second e2e test run (#18112)
The e2e test driver in influxdb runs the tests twice to get past the fact that there
is no way to force order between the write to storage and the read back. When
the json.Marshal call became mandatory it was added to the first run, but not
the second.
2020-05-15 18:50:33 +03:00
Jonathan A. Sternberg 09b8e40933
fix(query/stdlib): update to function to use the refactored row functions (#18086)
The row functions were refactored to remove state from the dynamic
function. This updates the code that invoked row functions.
2020-05-13 14:11:14 -05:00
jlapacik 20a583dbcf chore: update flux to latest revision 2020-05-12 11:22:37 -07:00
jlapacik 9a1e31a12f chore: update flux to latest revision 2020-05-07 10:46:29 -07:00
jlapacik 6dd385d3b4 chore: update flux to latest revision 2020-05-06 10:00:00 -07:00
Adrian Thurston e51a2b81e9
feat: added PushDownWindowAggregate planner rewrite rule (#17898)
Added a (disabled and feature-flagged) planner rule that matches:

ReadRange -> window -> { min, max, mean, count, sum }

The rule requires:
 * the pushDownWindowAggregate{Count,Rest} feature flags enabled
 * having WindowAggregateCapability
   (which StorageReader does not currently have)
 * use of "_value" columns only
 * window.period == window.every
 * window.every.months == 0
 * window.every is positive
 * window.offset == 0
 * standard time columns
 * createEmpty is false
2020-05-06 10:27:17 +03:00
jlapacik 02c8e02c58 chore: update flux to latest revision 2020-05-05 09:46:19 -07:00
Yiqun Zhang e341a51ff0 fix: fmt 2020-05-05 01:43:22 -05:00
Yiqun (Ethan) Zhang 8bb5065769 refactor: unify WindowAggregateCapability (#17901) 2020-05-05 01:35:02 -05:00
jlapacik f2478a1d9a chore: update flux to latest revision 2020-04-29 10:11:29 -07:00
jlapacik 6d885c7112 Merge branch 'master' into chore/update-flux 2020-04-29 10:02:19 -07:00
Yiqun (Ethan) Zhang 3c2ab1b681
feat(query): Reader implementation for WindowAggregate (#17885) 2020-04-29 10:42:16 -05:00
jlapacik 457637ed22 Merge branch 'master' into chore/merge-master 2020-04-28 13:13:36 -07:00
jlapacik f5cf024c1a chore: update flux to latest algo-w revision 2020-04-28 13:06:14 -07:00
jlapacik 19ba69b783 fix: planner methods take a context 2020-04-28 12:23:38 -07:00
jlapacik f52391ef3e chore: update flux to v0.67.0 2020-04-28 12:23:38 -07:00
Yiqun (Ethan) Zhang e29eeabcec
feat: complete ReadWindowAggregateRequest (#17871) 2020-04-27 10:51:43 -05:00
jlapacik 3f4368ddd9 chore: update flux to latest algo-w revision 2020-04-24 14:40:37 -07:00
jlapacik 3079d2a8aa Merge branch 'master' into chore/merge-master-into-algo-w 2020-04-24 14:21:26 -07:00
Johnny Steenbergen 46f69bfc8c fix(flux): skip flakey test
references: #17847
2020-04-23 11:47:32 -07:00
jlapacik ff2a2cc66b chore: update flux to latest algo-w revision 2020-04-23 11:32:55 -07:00
Jonathan A. Sternberg d764ca3798
refactor(query): return detailed capabilities for the read window aggregate interfaces (#17836)
This modifies the read window aggregate interfaces to future-proof it
if and when we add additional capabilities to the method. Previously,
the interface was all or nothing. If we modified the RPC call itself, we
would have to make a new interface to denote the change to the Go code.

This changes the interface so now a `WindowAggregateCapability` exists.
This way, we can modify the struct to include things like:

```
type WindowAggregateCapability struct {
    WindowPeriodCapability bool
    MeanAggregateCapability bool
}
```

This way we can learn if the RPC call itself supports some specific
option. If the first iteration doesn't support a mean aggregate or the
mean aggregate is only supported by single server implementations, the
window aggregate can tell the caller that it won't be able to compute
the mean aggregate.

Since it fills in a struct with these capabilities, the struct can
safely introduce new values. If a downstream consumer wants to take
advantage of that functionality, then all interfaces in the chain have
to be updated to consume the upstream capabilities.
2020-04-23 10:22:33 -05:00
jlapacik c6ffeac22b test: skip flux end to end test for writing null values 2020-04-22 14:58:58 -07:00
jlapacik 54ac783475 refactor(query): move ReadWindowAggregateSpec to query package 2020-04-22 14:54:09 -07:00
jlapacik 63fd3655be Merge branch 'master' into chore/merge-master-into-algo-w 2020-04-22 14:52:59 -07:00
Jonathan A. Sternberg 58522d1190
feat(query): implement the ReadWindowAggregateSource (#17839)
The `ReadWindowAggregateSource` will invoke the `ReadWindowAggregate`
method on the `influxdb.Reader` and return the table. It is implemented
using the same common methods that are used for the other sources.
2020-04-22 16:07:45 -05:00
Yiqun (Ethan) Zhang 52dc494edb
feat(query): add ReadWindowAggregatePhysSpec (#17824) 2020-04-22 13:53:59 -05:00
Jonathan A. Sternberg 60c58ad805
feat(query): add interface for the window aggregate capability (#17801)
Added an interface for an additional storage capability. This interface
will allow for checking if the reader supports the window aggregate call
and another method for invoking the call if it does.

This is implemented using a single interface. If the reader implements
the interface, it indicates that the client is capable of reading the
response. The `HasXXX` method is intended to check if the store supports
the operation. This method also takes a context because it could require
a remote call or to wait for one.
2020-04-21 14:15:38 -05:00
jlapacik e076b61d5c fix: planner rewrite rules take a context 2020-04-20 14:09:02 -07:00