Commit Graph

578 Commits (4d377b2fb099eb00a5bb99e80bccc97484dd996d)

Author SHA1 Message Date
Jonathan A. Sternberg fadf4f3e4f
deps: update flux dependency 2018-11-08 14:49:35 -06:00
Adam 2d54689eda skip generated tests in random folder due to known issue in transpiler 2018-11-06 14:04:40 -08:00
jlapacik 3a6810c7ff generated influxql json tests 2018-11-06 14:04:40 -08:00
Jonathan A. Sternberg 66920f253a
fix: show tag values must specify a range stop 2018-11-06 09:17:37 -06:00
Nathaniel Cook 9fecaa0eb0 chore: Update for Flux renaming 2018-11-05 19:30:22 -07:00
Adam 612005cad1
add output to to function (#1282)
* added (unused) stats struct, and piped written data to output table

* updated to tests since to returns data now

* changes based on review
2018-11-02 13:40:25 -04:00
Mark Rushakoff dae3dc8a7e chore(bolt,http,mock,query,testing): fix megacheck errors 2018-11-01 12:54:46 -07:00
Adam 8a1fecd727
to() for influxdb (#1194)
* update to latest flux master incl. values interface refactor, type inference, planner.  

* add measurementColumn parameter, update function params spec
2018-11-01 14:44:56 -04:00
Nathaniel Cook 2a1d76eb2d chore: Update flux dependency for the type-inference changes 2018-10-31 17:11:11 -06:00
Adam 98be8bcd32
moved to_http and to_kafka to flux and update to latest flux (#1175) 2018-10-24 12:33:43 -04:00
Lyon Hill 19b7709bad
Add tasks to the influx cli (#1163) 2018-10-23 11:51:13 -06:00
Adam ea4c08b327
(feat/query): implement a buckets() source function that retrieves all buckets and retention policy information for the active organization. (#1045) 2018-10-17 10:21:39 -04:00
Jonathan A. Sternberg e9600b1f0b
refactor: modify tooling to take advantage of go run
The generate commands have been modified to take advantage of the new
functionality in Go 1.11 that allows `go run` to execute a package
instead of individual files.

This functionality combined with Go modules allows us to execute a
package directly out of our pinned dependencies rather than accidentally
picking up another binary outside of the build environment.

This also simplifies the Makefile because they no longer have to be
responsible for installing the correct tooling since the Go command
takes care of that logic. It also makes it so that the Makefiles with
file generation can now be invoked from their appropriate subdirectories
so they are contained within the directory itself rather than relying on
values in the top level Makefile.

It is now possible to generate all files within this project by using:

    go generate ./...

Or the Makefile can continue to be used.

This commit also copies over the special copy of `tmpl` that the storage
engine uses within the influxdb repository. It was never copied over so
using `go generate` on these packages did not work.
2018-10-15 11:01:27 -05:00
Stuart Carnie 4f0c1a7aed fix(storage): Add db/rp fields for InfluxDB OSS 2018-10-11 15:19:38 -07:00
Chris Goller 2bea48f15a refactor(testing): rename MustIDFromString to MustIDBase16 2018-10-11 09:54:19 -05:00
Chris Goller 473f4e986c fix(functions/input): use 16 character hex string for test 2018-10-11 09:54:19 -05:00
Chris Goller 919aae41c8 refactor(id): update storage, read, and flux from to use IDs 2018-10-11 09:54:19 -05:00
Leonardo Di Donato 6725ae6f64 feat(platform/id): method to create an invalid id
Signed-off-by: Leonardo Di Donato <leodidonato@gmail.com>
2018-10-11 09:54:18 -05:00
Leonardo Di Donato 5a0b3eb2f9 fix(cmd/influx): composite literals
Signed-off-by: Leonardo Di Donato <leodidonato@gmail.com>
2018-10-11 09:54:18 -05:00
Leonardo Di Donato f42c581ad0 fix(query): edits for uint64 IDs
Signed-off-by: Leonardo Di Donato <leodidonato@gmail.com>
2018-10-11 09:54:18 -05:00
Leonardo Di Donato 92ac07ab02 wip(query): fixing platform.IDs 2018-10-11 09:54:18 -05:00
Leonardo Di Donato 19e88d6202 fix(execute_test): importing flux now not query 2018-10-11 09:54:18 -05:00
Leonardo Di Donato 8d7f06cf4b feat(platform/id): using uint64 for platform.IDs
Signed-off-by: Leonardo Di Donato <leodidonato@gmail.com>
Co-Authored-by: Lorenzo Fontana <lo@linux.com>
2018-10-11 09:54:18 -05:00
Jeff Wendling 6bd79ab2fe Remove unused grpc reader
The pb package was only referenced in cmd/influx/query.go, but in
dead code, since it uses the same machinery as the repl, which goes
through the HTTP endpoints, rather than the gRPC endpoints.
2018-10-10 14:06:27 -06:00
Adam 195eb04350
Chore/move from function to platform (#1013)
* moved execution code for from into query/functions/inputs

* rebase with master, disable buckets accessed test
2018-10-09 20:36:41 -04:00
Chris Goller 90494a5309 chore(fmt): fix and simplify go formatting 2018-10-08 17:23:54 -05:00
Brandon Farmer c1c4dc3393 Properly handle spaces in PATH with make tasks 2018-10-08 09:53:22 -07:00
Adam 58f4e9fc0b
Refactor Platform according to new organization in `flux` (#966)
We reorganized the functions in flux to have the structure:
/functions
/inputs
/transformations
/outputs
this PR catches up platform to work with the new package layout.

As a separate refactoring issue, we should discuss:

from(bucket: ) should migrate from flux --> platform
to_http and to_kafka should migrate from platform --> flux
2018-10-05 00:06:14 -04:00
Jonathan A. Sternberg 37ffbfc687
feat: add an influxql service that communicates with influxdb 1.x
It creates a simple client that follows the QueryService interface and
uses the `influxql.Compiler` type to determine where the query should be
routed to and to return the query as a `flux.ResultIterator`.

This will be useful for replaying transpiler queries against influxdb
1.x servers to verify correctness.
2018-10-03 11:17:29 -05:00
Michael Desa 1a0c29ad34 feat(platform): add authorizer interface
This iterface is supposed to be something that both sessions and
authorizations can share so that other components can authorize requests
as they see fit.
2018-10-02 14:11:44 -04:00
Chris Goller 1dd29d43f6
fix(query/docs): update Flux spec to flux repo 2018-10-01 09:38:33 -05:00
Jonathan A. Sternberg 2ee5308a27
fix: the master build no longer uses -i when building the influx binary
The `-i` flag causes a problem when a cross compilation happens because
it attempts to build files in GOROOT which is located in a directory
that is not writable by the build user. This same problem exists for
when the `-tags` are changed like adding `-tags assets` in the `all`
build that runs on the master branch.

This removes `-i` because, in the latest go release, the `-i` flag
doesn't actually do anything useful since there is another build cache
that the results are placed in regardless of whether `-i` is used.

This fixes the build on master so that `make all` and `make nightly`
will function properly.
2018-09-25 11:33:07 -05:00
Jonathan A. Sternberg 9cda24a69c
adding a test for the measurements and fixing the functionality 2018-09-25 10:25:58 -05:00
Jonathan A. Sternberg 129186efec
feat: implement basic show tag values in the transpiler 2018-09-24 15:02:05 -05:00
Jonathan A. Sternberg 46ed9bc4fb feat: switch to using go modules for building
This updates the dependency manager to use go modules instead of dep so
that we can remove dep as a dependency and we can begin using and giving
feedback on modules within this project. It should simplify dependency
management and make it faster to run the builds too.

The big change is updating the various Makefiles to stop relying on the
vendor directory because it no longer exists. This change creates a
`tools.go` file with the revisions of the tools we use that are currently
in the `required` section of `Gopkg.toml`. We are currently in other
discussions to modify how we handle tool dependency management, but this
change does not change that.
2018-09-20 08:33:15 -07:00
Jonathan A. Sternberg 0e0249ff2e
Merge pull request #839 from influxdata/js-show-tag-values-doc
docs(query/influxql): update the transpiler doc for show tag values
2018-09-17 13:45:48 -05:00
Jonathan A. Sternberg d5631c3366 docs(query/influxql): update the transpiler doc for show tag values 2018-09-14 16:59:38 -05:00
Jonathan A. Sternberg e884764664 fix(query/influxql): fix the formatting of the influxql readme
The previous format was easier to edit and I reorganized the headers.
2018-09-14 16:33:27 -05:00
Nathaniel Cook 71e13c8e8f chore: Remove redundant Flux tests 2018-09-14 15:32:15 -06:00
Nathaniel Cook d65a864ec5 fix: Update REPL to use HTTP API 2018-09-14 14:03:35 -06:00
Jonathan A. Sternberg dfc32d2635 feat(query/influxql): normalize the time for all aggregate queries
The transpiler will normalize the `_time` column by dropping any
existing time column and then duplicating `_start` when the query is an
aggregate type.

This works for the selectors because they did not normalize their
`_time` column at all and, while the aggregates did normalize their
`_time` column, we have made the decision to remove that functionality
and have aggregates not set a `_time` column at all.
2018-09-12 16:25:51 -05:00
Adam 4733ecd1f2
README + initial skeleton in place for SHOW TAG VALUES(#815)
* README + initial skeleton in place

* Fixes according to review
2018-09-12 14:54:13 -04:00
Nathaniel Cook 1786402d48 Merged pull request #822 from influxdata/nc-remove-platform
chore: Updates to be able to remove platform as a dependency of Flux
2018-09-12 10:31:25 -06:00
Nathaniel Cook 672e2d5fe7 chore: Updates to be able to remove platform as a dependency of Flux 2018-09-12 10:18:54 -06:00
Jonathan A. Sternberg 131767572e feat(query/influxql): update the spec for time normalization in selectors 2018-09-11 13:09:48 -05:00
Jonathan A. Sternberg a5641f6fd9 fix(query/influxql): join multiple aggregates with the new join function 2018-09-10 11:54:38 -05:00
Stuart Carnie 7a05dfb61e refactor: Update Makefiles 2018-09-06 13:56:59 -07:00
Stuart Carnie ac75af2f58 refactor: Migrate query package to influxdata/flux repository 2018-09-06 11:13:48 -07:00
Christopher M. Wolff 7e7c34f678
Create PreAuthorizer interface, BucketAwareOperationSpec interface (#664) 2018-09-05 12:06:26 -07:00
jlapacik 24f1be808d spec outlining packages, namespaces, and imports 2018-09-04 10:41:01 -07:00
jlapacik 2f1635a85d csv test for join 2018-09-04 10:04:01 -07:00
Nathaniel Cook 35002fa90f Merged pull request #738 from influxdata/nc-histogram
feat: Add histogram function for computing bucket based histograms
2018-09-04 09:51:32 -06:00
Jonathan A. Sternberg 1776778a06
Merge pull request #764 from influxdata/js-transpiler-pivot
docs: update the transpiler docs to use pivot
2018-09-04 09:44:06 -05:00
Christopher Wolff a58c9a63f8 Parse duration literals 2018-08-31 15:33:43 -06:00
Jonathan A. Sternberg a45bd08cf6 docs: update the transpiler docs to use pivot
Instead of generating multiple cursors, a pivot is used to join fields
within the same series.

This should be easier than generating a new cursor for everything.
2018-08-31 16:15:28 -05:00
Michael Desa 4eb2b72bf3 feat(query/influxql): implement query.ResultIterator for influxql.Response
WIP: saving state reword

feat(query/influxql): implement query.ResultIterator directly on response

review(influxql): add ResponseIterator that implement query.ResultIterator

review(influxql): update code is response to review
2018-08-31 13:38:25 -04:00
Nathaniel Cook 128b85ecd1 feat: Add histogram function for computing bucket based histograms 2018-08-31 09:43:45 -06:00
Nathaniel Cook 46a32e874c chore: Update 'from' to match spec
Removes the `db` parameter and used only bucket and bucketID.
2018-08-30 14:51:51 -06:00
Nathaniel Cook 745376a5fe Merged pull request #737 from influxdata/nc-group-missing
fix: Fix group by panic when missing a column
2018-08-30 14:38:01 -06:00
Adam 559ef60a78
feat(query): Created mapped/unmapped versions of append table and updated functions that use it (#751) 2018-08-30 15:01:27 -04:00
Adam 4bb5f5398a
feat(query/functions) Updated percentile to be more memory compact and managed by allocator (#739) 2018-08-30 13:35:04 -04:00
Adam cb3d099f6c
add query/functions/doc.go (#686)
* finished with first draft of doc.go.  Need to follow up on documenting related packages
2018-08-30 12:01:32 -04:00
Nathaniel Cook e57fab6a7b fix: Fix group by panic when missing a column 2018-08-29 15:53:47 -06:00
Jonathan A. Sternberg aa052e1a57 feat(query/plan): make it possible to configure the default memory limit for queries
The previous default was just to have no limit at all. This adds a
configuration option to the planner so a static value can be set for the
memory limit on each individual query.
2018-08-28 16:24:49 -05:00
Michael Desa 45233d939a feat(platform): add uniform query endpoint for sources
Using query request struct to query resources

Signed-off-by: Lorenzo Fontana <lo@linux.com>

Use query.ProxyRequest instead query.Request

Signed-off-by: Lorenzo Fontana <lo@linux.com>

Proxy request from idpd

Signed-off-by: Lorenzo Fontana <lo@linux.com>

Comments about the desired results

Signed-off-by: Lorenzo Fontana <lo@linux.com>

V1 endpoints working with flux

Signed-off-by: Lorenzo Fontana <lo@linux.com>

Influxql working for v1

Signed-off-by: Lorenzo Fontana <lo@linux.com>
Co-authored-by: Michael De Sa <mjdesa@gmail.com>

V2 influxql query endpoint working

Signed-off-by: Lorenzo Fontana <lo@linux.com>
Co-authored-by: Michael De Sa <mjdesa@gmail.com>
Signed-off-by: Lorenzo Fontana <lo@linux.com>

V2 Flux compiler support

Co-authored-by: Michael De Sa <mjdesa@gmail.com>
Signed-off-by: Lorenzo Fontana <lo@linux.com>

Improve comments in bolt sources and give error on self

Signed-off-by: Lorenzo Fontana <lo@linux.com>
Co-authored-by: Michael De Sa <mjdesa@gmail.com>

Review tests failing

Signed-off-by: Lorenzo Fontana <lo@linux.com>
Co-authored-by: Michael De Sa <mjdesa@gmail.com>

Avoid type casts for compiler types

Signed-off-by: Lorenzo Fontana <lo@linux.com>
Co-authored-by: Michael De Sa <mjdesa@gmail.com>

Using nil instead of dbrp mapping service for influxql v1

Signed-off-by: Lorenzo Fontana <lo@linux.com>

Check if compiler types are valid for influxql

Signed-off-by: Lorenzo Fontana <lo@linux.com>

Organization as query param in the flux external handler

Signed-off-by: Lorenzo Fontana <lo@linux.com>

feat(http): update swagger documentation for flux query endpoint

feat(http): document query endpoint design

The code documented does not currently work. It is indended that this
will be implemented in follow up PRs.

feat(platform): move source to platform package

The source Query endpoint implements what's in the query swagger docs

Signed-off-by: Lorenzo Fontana <lo@linux.com>
Co-authored-by: Michael De Sa <mjdesa@gmail.com>

feat(platform): allow for encoding and decoding of csv dialects

feat(platform): specify dialect in flux page

Co-authored-by: Andrew Watkins <andrew.watkinz@gmail.com>
Co-authored-by: Michael Desa <mjdesa@gmail.com>
2018-08-28 15:53:20 -04:00
Jonathan A. Sternberg bb4fc188a2
Merge pull request #721 from influxdata/js-query-log-statistics
fix(query): report query statistics correctly
2018-08-28 12:55:22 -05:00
Jonathan A. Sternberg 1fe16a04de fix(query): report query statistics correctly
The query statistics would only be read after the cancel call so we need
to wait for that before attempting to read the statistics rather than
attempting to read them immediately after the result is returned (before
it is read).
2018-08-28 12:39:56 -05:00
Nathaniel Cook a9f10e11a5 fix: Fixes data race on object type 2018-08-28 10:39:56 -06:00
Nathaniel Cook 5b9b111166 Merged pull request #714 from influxdata/nc-fix-query-panic
fix: Fixes panic in query from sharing builtin decls
2018-08-28 09:09:34 -06:00
Adam 05a2feb1fc
Added default signature generators for Selector and Aggregate configs and update the functions that need them (#690)
* Added default signature generators for Selector and Aggregate configs and update the functions that need them

* fix to percentile to collect the correct arguments for both aggregate and selector
2018-08-27 17:20:18 -04:00
Nathaniel Cook 796fd7217e Merged pull request #685 from influxdata/nc-hist-quantile
feat: Add histogramQuantile function
2018-08-27 14:25:35 -06:00
Nathaniel Cook 937158f63a Merged pull request #715 from influxdata/nc-data-race
fix: Fixes #697 data race in execute test
2018-08-27 14:19:59 -06:00
Nathaniel Cook 575c8138cc fix: Fixes #697 data race in execute test 2018-08-27 13:57:51 -06:00
Nathaniel Cook c6567a9ed1 fix: Fixes panic in query from sharing builtin decls 2018-08-27 13:48:13 -06:00
Jonathan A. Sternberg 22673adee7 fix(query/influxql): disable the join behavior in the transpiler
The behavior needs to be updated so we are goinig to just disable it
temporarily so bad query specs are not generated.
2018-08-27 12:41:53 -05:00
Nathaniel Cook cf072cbd4d fix: Add end to end test for histogramQuantile 2018-08-27 10:15:59 -06:00
Nathaniel Cook a2e7ba3422 Merged pull request #701 from influxdata/nc-builtins
fix: Fix missing builtins in REPL
2018-08-27 09:52:31 -06:00
Nathaniel Cook 61bc6df75b fix: Fix missing builtins in REPL
The REPL's use of the interpreter was causing it to not get the builtins
defined in builtin scripts. For example the `top` function was missing.

This change fixes the issues by ensuring the builtins are only evaluated
once and that there is only one way to get the query Interpreter that is
guaranteed to have the proper builtins.
2018-08-27 09:46:13 -06:00
Adam Perlin 015afb74db
Materialize Empty Windows (#689)
Update window to materialize all windows within bounds
2018-08-24 17:13:31 -07:00
Stuart Carnie cc88c2f608 refactor(pb): Consolidate to use refactored storage APIs from influxdb
* updated influxdata/influxdb:platform vendor dependency
2018-08-24 12:26:45 -07:00
Adam Perlin 302aaee1f5
Bounds Refactor (#675)
* Refactor bounds in planner
2018-08-23 15:58:29 -07:00
Nathaniel Cook 6e9bfacb45 feat: Add histogramQuantile function 2018-08-23 12:46:39 -06:00
Adam Perlin 1051a8d697
Add query examples to flux SPEC (#641)
* Add additional example queries to SPEC.md
2018-08-22 18:39:19 -07:00
jlapacik 178f9d3678 update links to issues in spec 2018-08-22 10:04:21 -07:00
Nathaniel Cook 2c7f6137f1 Merged pull request #665 from influxdata/aa_argNames_fix
chore(query/functions): clean up parameters to be appropriately camel…
2018-08-22 09:53:41 -06:00
Nathaniel Cook 44c3b9b962 fix: Use metadata based gRPC tracing 2018-08-20 15:52:09 -06:00
Adam 3a60e42ce6 chore(query/functions): clean up parameters to be appropriately camel-cased and with completed function signatures 2018-08-20 13:40:49 -04:00
Adam 4b4539934b
feat(query/functions): add pivot() builtin procedure
pivot() implments the ability to flatten a table according to the values in given columns
2018-08-17 16:45:15 -04:00
Adam cc5a625950
spec(query/docs) Update spec and readme for the new Pivot function (#476) 2018-08-17 16:44:29 -04:00
Adam Perlin 840077ca62
Encoding Error Tests (#653)
* Add tests for CSV encoding errors
* Update encoder error checking to use behavior pattern
2018-08-17 13:16:41 -07:00
jlapacik 09de5dbd34 design spec for to function 2018-08-17 12:32:28 -07:00
Adam Perlin 96d11c3d9f
Add Duplicate function (#575)
* Add duplicate schema mutation
2018-08-17 12:12:00 -07:00
Adam Perlin ce6195150a
Account for error from EncodeError call in result.go (#650) 2018-08-16 14:23:17 -07:00
Nathaniel Cook 735b688749 Merged pull request #448 from influxdata/nc-calendars-spec
chore: Specify calendar intervals, windowing and time zone behavior
2018-08-16 15:14:32 -06:00
Adam Perlin 4d9c6c4c39
Add errors as expected output in test framework (#627)
* Add expected error functionality to test framework; Add EncoderError
type to differentiate between encoding and execution errors
2018-08-16 12:01:20 -07:00
Jonathan A. Sternberg 1129552475 feat(query): log panics with their stacktraces within the query executor
The logger is now threaded into the query controller, executor, and the
dispatcher so that we can log panics. They are logged at the info level
because the panics do not result in the system crashing and becoming
unusable.
2018-08-15 16:03:12 -05:00
Nathaniel Cook 9c67dedbb7 add details on add/sub of durations 2018-08-15 13:39:57 -06:00
Adam Perlin 15c9be1809
Add Stream Context to Executor (#609)
Add stream context with bounds to planner/execution engine
2018-08-14 16:18:59 -07:00
Nathaniel Cook d483ac8f0f chore: Specify calendar intervals, windowing and time zone behavior
Durations are changed to be a 3 vector to form a linear basis of
seconds, days, and months.
Interval comprehensions are introduced to be able to define complex
calendar intervals.
Specification is added around time zones.

The window function is update to default to not returning incomplete
windows.
2018-08-14 15:07:03 -06:00
Jonathan A. Sternberg 27c59297bc fix(query/control): fix the queueing metric
We decremented all, but forgot to decrement queueing when it was set and
the query spec could not be validated.
2018-08-14 16:02:46 -05:00
Jonathan A. Sternberg 9f829ae5bf fix(query/control): remove a deadlock
The call to `setErr` would grab a lock that `Pop` used, but `setErr`
requires the controller run loop to be executing for it to work. If we
reverse the order of these calls, it should be fine.
2018-08-14 15:49:15 -05:00
Jonathan A. Sternberg a591f2f90b
Merge pull request #628 from influxdata/js-controller-metrics
fix(query/control): fix controller metrics
2018-08-14 12:31:43 -05:00
Jonathan A. Sternberg 46605ac6b3 fix(query/control): finish the parent span once
When the controller moves to one of the finished states, it will finish
the parent span so that can be recorded. It presently will do this
multiple times when transitioning between different finished states.
2018-08-14 11:45:25 -05:00
Jonathan A. Sternberg f6e5feacbe fix(query/control): finish the parent span if compiling or queueing fails
This normally happens within the finishing states, but when compiling or
queueing fails it never enters those finished states and is instead
discarded. We need to signal that the query itself has finished in the
metrics.
2018-08-14 11:29:34 -05:00
Adam 6329f28064
feat(query/execute): Add Grow() functions to the table builder interface (#549)
* Added GrowXX functions to allocator.go

* Added Grow functions to table builder interface
2018-08-13 20:43:44 -04:00
Jonathan A. Sternberg 3e7a04e887
Merge pull request #624 from influxdata/js-godoc-query-package
docs(query): add package docs for the packages in the query package
2018-08-13 16:07:16 -05:00
Jonathan A. Sternberg c38e68c4b1
Merge pull request #570 from influxdata/js-document-query-control-package
docs(query/control): document the query/control package
2018-08-13 15:56:22 -05:00
Jonathan A. Sternberg a563ab4f34 docs(query/control): document the query/control package
This documents the responsibilities of what the Controller does and is
expected to do. It describes some behaviors that aren't implemented, but
acts as a guide for what the Controller should do as we continue
developing the query engine and improving the internal mechanics.
2018-08-13 15:49:14 -05:00
jlapacik f1e5da8656 add day and week literals to Flux grammar 2018-08-13 13:40:43 -07:00
Jonathan A. Sternberg 73b4b1d0d8 docs(query): add package docs for the packages in the query package 2018-08-13 15:21:02 -05:00
jlapacik 27b2093116 new join implementation
This commit provides a new join implementation that can join
tables with different group keys. It also implements a strategy
for evicting stale data from the join operation's cache when
it can be determined that a table will no longer be joined.

Currently early table eviction from the buffers of the join occurs
when the left-most group key column of both input streams are equal
and that column is part of the join key.
2018-08-13 10:51:57 -07:00
Mark Rushakoff cbccbcecf5 chore: fix typo in filename 2018-08-10 08:22:47 -07:00
Nathaniel Cook 6bf2820e81 update README 2018-08-08 15:31:37 -06:00
Nathaniel Cook 5bde0b5be6 fix: Update query services to use Request type
Moves idpe.QueryService into platform/query.ProxyQueryService
Splits the Request into ProxyRequest and Request.

Changes query.QueryService and query.AsyncQueryService to use a Request
type. This means that the Compiler interface is consumed by the service
to abstract out transpilation vs Flux compilation vs raw spec.

The transpiler handler is removed.

There are separate http handlers and service implementations for each of
the three query services.

Query logging types are moved into platform.

The ResultIterator now expects Cancel to always be called.

The fluxd binary exposes the query endpoint specified in the swagger
file.
2018-08-08 15:31:35 -06:00
Christopher Wolff d7f64171cb Take into account ':<type>' when computing column header widths 2018-08-07 11:12:38 -07:00
Jonathan A. Sternberg af6fe59902
Merge pull request #541 from influxdata/js-flux-readme
docs(query): modify the flux readme to turn it into a getting started instead
2018-08-06 14:04:57 -05:00
Jonathan A. Sternberg 418d486488 docs(query): modify the flux readme to turn it into a getting started instead
For details, the user can always look at the spec, but a good getting
started guide that works is needed.

At the moment, this does not use the influx command. It does include
instructions for how to get started with docker since that is easiest to
setup and use.
2018-08-06 13:48:27 -05:00
Adam Perlin 0e80e5774b
Flux drop and rename functions (#482)
* Add Flux Rename, Drop, and Keep functions.

* Add flux language tests for drop and rename; bugfixes around constructing drop/rename procedures

* Correct autcomplete error, remove debug statements

* Fix additional autocomplete error

* Add support for fn parameter to flux drop and rename functions

* Remove unneeded renameDropTransformation field

* WIP initial thoughts about merge/procedure rewrite logic

* Remove unnecessary external columnFn types

* Add additional query tests for drop/rename, add error when drop or rename refers to column that doesn't exist

* Change swapped test names

* Add keep function implementation

* Refactor rename/drop implementation to make use of helper methods

* Remove test skips forqueries that produce an expected error

* Make predicate return value logic clearer in drop implementation

* Add group key support to drop/rename/keep, update unit and query tests accordingly

* WIP refactor drop and rename to use new SchemaMutator interface

* Add unit tests for refactored drop, keep, and rename; bug fixes

* Update file structure for flux schema mutation functions

* Refactor mutation functions and interface

* Address final review drop/rename PR review comments

* Add builtin import to make sure builtins are initialized if test drop_rename_keep_test is run as standalone

* Small aesthetic change to schema_mutators.go
2018-08-06 11:19:55 -07:00
Michael Desa 8c87c9d132 revert #442 2018-08-01 14:54:32 -04:00
Nathaniel Cook f4e94c8655 Merged pull request #525 from influxdata/nc-agg-errors
fix: More specific error messages for aggregate errors
2018-08-01 11:37:29 -06:00
Leonardo Di Donato bdaee706d6 Fixing last changes obtained from master to make them use uint64 IDs
Signed-off-by: Leonardo Di Donato <leodidonato@gmail.com>
2018-08-01 18:20:59 +02:00
Leonardo Di Donato 5addb88eb5 MustIDFromString no more requires test instance
It panics now.
2018-08-01 18:20:59 +02:00
Leonardo Di Donato 3191de776d Refactoring code using platform.IDs
Signed-off-by: Leonardo Di Donato <leodidonato@gmail.com>
2018-08-01 18:20:59 +02:00
Leonardo Di Donato 4387206181 Other test for IDs
Signed-off-by: Leonardo Di Donato <leodidonato@gmail.com>
2018-08-01 18:20:59 +02:00
Leonardo Di Donato 711d4a3f33 Refactoring main package 2018-08-01 18:20:59 +02:00
Leonardo Di Donato 0778344cb0 Refactoring query package 2018-08-01 18:20:59 +02:00
Adam Perlin 3e98846a99
Specify how group key is handled in rename/drop spec (#524)
* Specify how group key is handled in rename/drop spec
2018-08-01 09:09:45 -07:00
Nathaniel Cook 590b9e61f4 fix: More specific error messages for aggregate errors 2018-07-31 16:58:01 -06:00
Adam Perlin ee7980dd4f
Add spec for flux rename/drop function (#462)
* Add initial rename specification to SPEC.md

* Tweak language in spec to be more explicit

* Update spec to be in accordance with final design decisions
2018-07-31 14:50:59 -07:00
Jonathan A. Sternberg 322486aa59
Merge pull request #521 from influxdata/js-default-parameters-for-range-spec
fix(query/influxql): include default parameters in the range spec
2018-07-31 13:36:23 -05:00
Nathaniel Cook 2848b4bf92 Merged pull request #516 from influxdata/nc-aggregate-type-err
fix: Properly check aggregate type
2018-07-31 12:33:33 -06:00
Nathaniel Cook 67bb9a2ce8 Merged pull request #519 from influxdata/nc-storage-time-overflow
fix: Explicilty handle overflow of currentTime is storage source
2018-07-31 12:31:53 -06:00
Jonathan A. Sternberg c94fc4d799 fix(query/influxql): include default parameters in the range spec 2018-07-31 12:53:34 -05:00
Jonathan A. Sternberg ced8f461fc fix(query): fix passing down the bucket id in the from call
The bucket id was not being copied when the from procedure was being
created so it never showed up and the bucket id was not set.
2018-07-31 12:53:05 -05:00
Nathaniel Cook 1a4bd6825b fix: Explicilty handle overflow of currentTime is storage source 2018-07-31 11:32:31 -06:00
Nathaniel Cook 553b15a217 fix: Properly check aggregate type 2018-07-31 10:30:35 -06:00
Mark Rushakoff 265235aaf1 refactor(query): move DefaultCompleter method to complete package
This is so Chronograf doesn't have to import the builtin package, which
finalizes builtin registration.

Also clarify that the builtin package should only be imported from main
or test packages.
2018-07-30 10:54:06 -07:00
Nathaniel Cook 21286235dd fix: Fix deadlock in query stats 2018-07-27 14:55:38 -06:00
Jonathan A. Sternberg feea4dff2e
Merge pull request #487 from influxdata/js-benchmark-end-to-end
tests(query/functions): add benchmarks for all of the query tests
2018-07-27 14:42:50 -05:00
Nathaniel Cook 920ef30a99 Merged pull request #494 from influxdata/nc-query-panic
fix: Panic in query/controller on Statistics
2018-07-27 09:30:49 -06:00
Nathaniel Cook 47b7f512da fix: Panic in query/controller on Statistics 2018-07-27 09:15:28 -06:00
Jonathan A. Sternberg 7494972d98 tests(query/functions): add benchmarks for all of the query tests
This uses the same code as the other end to end so we can benchmark the
entire query engine.
2018-07-26 16:09:13 -05:00
jlapacik 69e3627f42 controller sets Now time before enqueuing a query 2018-07-26 10:36:19 -07:00
Adam a84c86b06d
Fix initial transpiler grouping so that aggregates will compute (#460)
* feat(query/influxql): Fix initial transpiler grouping so that aggregates will compute

 --update spec

 --add mean test to demonstrate new feature
2018-07-25 17:56:33 -04:00
Nathaniel Cook 2588b14df4 Merged pull request #436 from influxdata/nc-fix-repl-now
fix: Update REPL to correctly compile Spec with now option
2018-07-25 15:54:59 -06:00
Adam 2ee4157ded
feat(query/functions) Update percentile function to provide a selector option add transpiler support. (#444) 2018-07-25 16:32:04 -04:00
Jonathan A. Sternberg 4b7bfb21c2 fix(query/influxql): influxql transpiler should set the now time
The now time is stamped by the influxql transpiler and used inside of
the actual query. It will result in more accuracy if we take the
timestamp we have created and send it as part of the spec to queryd
rather than force ourselves to ensure absolute times exist everywhere.
2018-07-25 08:34:41 -05:00
adamperlin 5bb0cae73f Add filtering to flux range function when not pushed down 2018-07-24 13:33:42 -07:00
adamperlin f6a5e47d4b Update formatting of flux increase built-in to align with standard style 2018-07-24 10:42:20 -07:00
adamperlin ca0b4e4549 Order all data by time in flux increase test case, add related non-negative derivative test case 2018-07-23 17:18:29 -07:00
adamperlin f8c204a62f Add increase to flux as built in function, change test data to account for counter wraps to values other than zero 2018-07-23 16:21:55 -07:00
jlapacik d70ec9a31f update flux grammar spec to include OptionStatement 2018-07-20 12:53:14 -07:00
Nathaniel Cook be817afc62 fix: Update REPL to correctly compile Spec with now option 2018-07-20 13:22:05 -06:00
Jonathan A. Sternberg f2a8ae22b2
Merge pull request #435 from influxdata/js-427-cancel-enqueue
fix(query/control): cancel the enqueue of a query if the context finishes
2018-07-19 13:59:00 -05:00
Jonathan A. Sternberg ff8c9cfb34 fix(query/control): cancel the enqueue of a query if the context finishes
If a query is attempting to be enqueued and it gets canceled, it will
now stop attempting to add it to the new queries queue and return the
error reported by the context. This allows the http server to cancel a
running query when the client disconnects for whatever reason without
continuing to attempt to process the canceled query.
2018-07-18 15:37:25 -05:00
Nathaniel Cook d568d7fd01 feat: Use DBRPMappings in 1.x read path 2018-07-18 09:46:57 -06:00
Lyon Hill be271bc6e4
Merge pull request #423 from influxdata/feat/query-eval
feat(query): split compile into two functions to allow Eval access
2018-07-17 16:48:03 -06:00
Lyon Hill 586d35ce98 update Eval docs 2018-07-17 16:17:55 -06:00
Lyon Hill ec2764f8d0 feat(query): split compile into two functions to allow Eval access 2018-07-17 16:12:17 -06:00
Lyon Hill cb04d22e73 feat(query): add task options 2018-07-17 15:52:33 -06:00
Nathaniel Cook 85b7d36147 feat: Add query statistics
Introduces the Statisticser interface which ResultIterators may
implement.

The HTTP implementation uses HTTP trailers to preserve the statistics.
This way we do not need to have all encoders and decoders support
statistics.
2018-07-17 09:16:27 -06:00
jlapacik 524c4ccf35 flux options interface
default now option value
2018-07-16 14:24:37 -07:00
Nathaniel Cook 336313bddb fix: Fix tests that are failing because of the rename
These tests were part of a PR when the rename was made.
The changes were not rebased before merge so we did not discover the
failures till after the merge.
2018-07-13 13:02:37 -06:00
Jonathan A. Sternberg 12b3e5de6d
Merge pull request #403 from influxdata/js-queryd-catch-execute-panics
feat(query/control): catch panics when executing a query in the controller
2018-07-13 13:33:57 -05:00
Adam Perlin b6afb5ff47
Merge pull request #398 from influxdata/ap-difference-panic-fix
Fix for panic when `difference` is called with no data
2018-07-13 10:42:12 -07:00
Nathaniel Cook d9b2377c9f Merged pull request #406 from influxdata/nc-rename-block
chore: Rename block to table
2018-07-13 10:56:44 -06:00
Nathaniel Cook 43ff647444 fix: Update Godoc parameter name 2018-07-13 10:43:20 -06:00
Adam Perlin ed1809a513
Merge pull request #390 from influxdata/ifql-test-metaquery
Add initial flux meta query tests
2018-07-13 09:27:33 -07:00
adamperlin 70fae6f77a Move length check out of loop 2018-07-13 09:17:59 -07:00
Nathaniel Cook 7902652290 chore: Rename local vars for b to tbl 2018-07-13 10:04:38 -06:00
Nathaniel Cook 80acc8d8c4 chore: Rename block to table 2018-07-13 09:56:35 -06:00
Adam Perlin 99e1f362af
Merge pull request #405 from influxdata/ifql-test-string-interp
Add flux string interpolation test
2018-07-13 08:55:36 -07:00
Nathaniel Cook e4848caa25 chore: Rename parition key to group key 2018-07-12 16:16:58 -06:00
Jonathan A. Sternberg 4a275e0e2e feat(query/control): catch panics when executing a query in the controller 2018-07-12 17:16:12 -05:00
adamperlin 4db4a832a3 Add flux string interpolation test 2018-07-12 15:06:59 -07:00
adamperlin becab773b3 Add additional measurements to flux measurement query test input 2018-07-12 13:18:02 -07:00
Nathaniel Cook 01ad9e99a7 Merged pull request #379 from influxdata/nc-bucket-id
feat(query): Add support for using bucketID in from
2018-07-12 13:42:29 -06:00
adamperlin 4885fd3049 Remove unnecessary condition from in flux difference function implementation 2018-07-12 12:42:16 -07:00
Nathaniel Cook 987b045f97 Merged pull request #381 from influxdata/nc-link
fix: Update Spec.md link
2018-07-12 13:40:19 -06:00
adamperlin 3e7c79a072 Fix off-by-one error in difference bounds check, update unit tests to account for n=1 and n=0 points 2018-07-12 11:38:24 -07:00
adamperlin d190ad369c Add fix for panic in flux difference function; add related tests 2018-07-12 11:38:20 -07:00
Jonathan A. Sternberg 3d67f92c82
Merge pull request #397 from influxdata/nc-controller-panic
fix(query): Fix panic in controller if planning errors
2018-07-12 12:50:30 -05:00
Nathaniel Cook 932c114649 fix(query): Fix panic in controller if planning errors 2018-07-12 11:47:34 -06:00
Adam Perlin a8ecbe52c5
Merge pull request #394 from influxdata/ifql-test-increase
Ifql test increase
2018-07-12 09:50:28 -07:00
Adam Perlin 9380d47a7d
Merge pull request #391 from influxdata/ifql-test-groupfield
Add flux test for explicitly grouping by field
2018-07-12 09:48:49 -07:00
adamperlin d1119b0b68 Update difference_panic flux test 2018-07-12 08:15:42 -07:00
Adam c8da4b02aa
feat(query/influxql): Add group-by time + offset support (#384)
previous versions only supported the first parameter to time() that set the window size.  This version supports the second parameter, which shifts the offset a fixed amount from the epoch
2018-07-12 10:46:29 -04:00
adamperlin a0300688d5 Add test cases for flux sum increase function and difference() panic 2018-07-11 20:32:08 -07:00
adamperlin ad2e467df9 Add flux test for explicitly grouping by field 2018-07-11 17:53:01 -07:00
adamperlin 16b6c5e39e Add initial flux meta query tests 2018-07-11 17:33:59 -07:00
Mark Rushakoff 15efa9d411 chore(query/control): use non-global prometheus metrics 2018-07-11 16:54:23 -07:00
Adam Perlin 8dbd50712c
Merge pull request #364 from influxdata/ifql-test-groupexcept
Add group except test for flux
2018-07-11 10:40:32 -07:00
adamperlin 274a27a22b Add additional tags to exclude in flux group except test 2018-07-11 10:18:01 -07:00
adamperlin bb13ef8d8a Change sequence in flux group except test 2018-07-11 10:18:01 -07:00
adamperlin 4f6ba26579 Add group except test for flux 2018-07-11 10:17:55 -07:00
Adam Perlin 34b7837449
Merge pull request #363 from influxdata/ap-panic-fix-stringmax
Fix panic when unimplemented selector function is used
2018-07-11 10:10:35 -07:00
adamperlin cadc97ecd1 Add link to issue in failing flux test skip description; change error constructor in test function 2018-07-11 10:03:55 -07:00
Nathaniel Cook 0ab163b68c fix: Update Spec.md link 2018-07-10 16:41:35 -06:00
Nathaniel Cook f47daadd43 feat(query): Add support for using bucketID in from 2018-07-10 15:52:48 -06:00
jlapacik aba6fc3378 order parents in join based on parameter name 2018-07-10 11:09:58 -07:00
adamperlin ac09a65727 Handle query execution errors in query_test to avoid infinite blocking issues after fail 2018-07-09 18:24:54 -07:00
adamperlin 8e34bd779e Update output file for flux string max test with new error message 2018-07-09 18:10:21 -07:00
adamperlin fe1493c120 Update error message for function unimplemented for data type in flux 2018-07-09 18:10:21 -07:00
adamperlin bcbc0256d5 Change error message when selector function is nil 2018-07-09 18:10:21 -07:00
adamperlin b46a14ba77 Remove broken nil check method; add simple interface nil check 2018-07-09 18:10:21 -07:00
adamperlin a546bbfcb1 Add error message when row selector interface has nil value to avoid panic 2018-07-09 18:10:21 -07:00
adamperlin dddfe38ee9 Move additional tests to new query test location 2018-07-09 14:17:02 -07:00
adamperlin b3aff30f4d Move main end to end flux query test to query/functions package dir 2018-07-09 14:13:53 -07:00
adamperlin df44aa0ad5 Move querytest/test_cases to functions/testdata and update query_test with new path 2018-07-09 14:13:53 -07:00
Jonathan A. Sternberg ca66f0df74
Merge pull request #376 from influxdata/js-query-try-plan
fix(query/control): race condition when attempting to plan a query in the controller
2018-07-09 16:00:01 -05:00
Adam 67bb5af1fb
regex support added to transpiler (#356)
* feat(query/influxql): add regex support to transpiler
also added test case to querytest

* Add raw_with_condition test to transpiler unit tests

* add unit tests for regex conditions on raw query
2018-07-09 16:54:00 -04:00
Jonathan A. Sternberg b9a4f1be74 fix(query/control): race condition when attempting to plan a query in the controller 2018-07-09 15:40:07 -05:00
jlapacik 15e3b7edf0 remove query domain 2018-07-09 13:27:30 -07:00
Jonathan A. Sternberg 9615528e31 fix(query/control): discard finished queries from the priority queue 2018-07-09 13:27:14 -05:00
Adam Perlin f92b105275
Merge pull request #360 from influxdata/ifql-time-selectors
Add test to make sure relevant _time values are returned when using top() selector
2018-07-06 16:31:25 -07:00
Adam Perlin 3b122e327d
Merge pull request #354 from influxdata/ifql-window-interval
Add initial window bound offset test cases for flux
2018-07-06 12:57:17 -07:00
adamperlin 0881ca9bee Add group() to selector_preserve_time flux tests 2018-07-06 12:36:15 -07:00
adamperlin 8e920cd793 Add test for default window boundary alignment in flux 2018-07-06 12:14:58 -07:00
adamperlin 622dd66356 Update test data point time ranges to include each _time value 2018-07-06 12:14:14 -07:00
Jonathan A. Sternberg c54a1e8fd9 feat(query/influxql): implement all of the basic aggregates and selectors 2018-07-06 13:45:35 -05:00
adamperlin 37ed9a8afa Add test to make sure relevant _time values are returned when using top() selector 2018-07-06 11:40:54 -07:00
Jonathan A. Sternberg f694fa9637 refactor(query/influxql): move transpiler spec tests to its own package
The package contains all of the transpiler specs and allows them to be
put into different files instead of keeping all of the tests in the same
file. They are all Go code so they are type checked rather than being
loaded as JSON from disk.

Additionally, to make it easier for a developer, the tests will report
the exact file and line where the test was created. So rather than
hunting for which file a test is located in, you will get something nice
like the following:

    --- FAIL: TestTranspiler/SELECT_count(value)_FROM_db0..cpu_WHERE_host_=_'server01' (0.00s)
        testing.go:51: aggregates_with_condition.go:16: unexpected error: unimplemented function: "count"

As can be seen, the test that failed can be found in the
`aggregates_with_condition.go` file at line 16 which is where the test
was created by the `AggregateTest` function and the relevant spec can be
found in that same file.
2018-07-06 12:12:08 -05:00
adamperlin 695867ef1f Add initial window bound offset test cases for flux 2018-07-06 09:36:20 -07:00
Jonathan A. Sternberg 27cd61e22d refactor(query/influxql): modify the transpiler compilation tests to remove skip
The transpiler compilation tests will now not allow skip to be
specified. Instead, it must return an error message that starts with
`unimplemented` and then the reason will be used as the skip message.

This way, it will be easier to identify the failing tests in the
transpiler. In the previous method, it was possible for a test to be
marked as skip, but for the transpiler to return the wrong error message
because the test did not differentiate between an unimplemented error
message and an incorrect error message.
2018-07-06 09:21:41 -05:00
Jonathan A. Sternberg bfa7f2e719 feat(query/influxql): support for windowing
The transpiler now supports basic windowing. The window offsets are not
supported yet at all.

For windowing, we use the window function to split the points, perform
the aggregate/selector operation, and then we put them back into the
same window so they are within the same table as they originally were
located in. This is now reflected in the spec and the code.
2018-07-06 09:21:41 -05:00
Jonathan A. Sternberg 1ebccc8b6c
Merge pull request #127 from influxdata/js-transpiler-windowing
feat(query/influxql): support for windowing
2018-07-05 18:13:17 -05:00
adamperlin e486fe002e Remove unnecessary null behavior test in flux 2018-07-05 14:47:17 -07:00
adamperlin e2c21135e5 Update null behavior tests for flux 2018-07-05 13:54:23 -07:00
adamperlin 4ee241c949 Add tests for null keyword behavior 2018-07-05 13:36:56 -07:00
Jonathan A. Sternberg 691fa9ba97 feat(query/influxql): support for windowing
The transpiler now supports basic windowing. The window offsets are not
supported yet at all.

For windowing, we use the window function to split the points, perform
the aggregate/selector operation, and then we put them back into the
same window so they are within the same table as they originally were
located in. This is now reflected in the spec and the code.
2018-07-05 15:34:26 -05:00
Adam Perlin e20dada94a
Merge pull request #348 from influxdata/ifql-issue-tests
Add test cases for sorting strings in flux
2018-07-05 13:14:31 -07:00
adamperlin 44802e41ca Add link to corresponding issue in failing flux test skip reason 2018-07-05 12:47:30 -07:00
adamperlin 9c1412198e Add skip for panicking test 2018-07-05 11:53:32 -07:00
adamperlin 5f94cc2ce2 Update string selection tests 2018-07-05 11:35:00 -07:00
Jonathan A. Sternberg ab5f7fc615 feat(query/functions): allow window to ignore the global boundaries of the query 2018-07-05 13:32:23 -05:00
adamperlin 9c0d1ab2a5 Vary string prefixes in sort by length test 2018-07-03 17:01:23 -07:00
adamperlin 380f7b132c Add test cases for sorting based on length and character value in flux 2018-07-03 16:46:24 -07:00
Jonathan A. Sternberg adec513306 feat(query/influxql): add additional error details for a few unimplemented errors 2018-07-03 15:37:53 -05:00
jlapacik b896ed1c5b add HasSideEffect method to Function interface
evaluate CallExpression to determine if function has side effects
return all side effects
add Equal method to Value interface
2018-07-03 12:44:09 -07:00
Nathaniel Cook b4e68fad98 fix(transpiler): Include function name in error 2018-07-03 13:01:25 -06:00
Jonathan A. Sternberg eee8ad2d21 tests(query/influxql): port over the compiler tests for influxql
The compiler tests from the github.com/influxdata/influxdb/query have
been moved over to the influxql transpiler in platform. The framework
has updated to include a skip option so that all of the tests can be
there, but not all of them have to succeed at the moment. If a test
starts succeeding but is marked as one that should be skipped, it will
also cause an error to prevent us from doing work on the transpiler
without marking the test as something not to skip anymore (so progress
is always made).
2018-07-03 10:58:27 -05:00
Jonathan A. Sternberg 98597551d3 feat(query/influxql): support for group by
The transpiler now supports grouping by tags.
2018-07-03 10:18:03 -05:00
Jonathan A. Sternberg 3aed4b2a3d feat(query/influxql): modify the encoder to allow more flexibility from the transpiler
This extra flexibility makes it easier for the transpiler to generate a
specification since the map step can be focused on only generating the
columns related to fields. In particular, it makes it easier to
implement wildcards for tags because the tags will get passed along with
the partition key.
2018-07-02 13:38:12 -05:00
Jonathan A. Sternberg bcd0545728 fix(query/influxql): have the transpiler use the _time column for the time
The spec says to use the `_time` column for the time in the output, but
we were mapping `r._time` to `time` and using the `time` variable. This
modifies the encoder to use the `_time` column and rename it to `time`
for the column name.
2018-07-02 12:48:15 -05:00
Jonathan A. Sternberg f42fc81c71
Merge pull request #184 from influxdata/js-storage-grpc-service
feat(query/functions/storage): switch to using the grpc client
2018-06-29 12:32:02 -05:00
Jonathan A. Sternberg 2ba945c5d3
Merge pull request #182 from influxdata/js-transpiler-panic
fix(query/influxql): transpiler should not panic when a function is used with a non-variable
2018-06-28 17:08:39 -05:00
Nathaniel Cook c83aa9d64e Merged pull request #169 from influxdata/nc-makefile-goos
chore(Makefile): Update Makefiles to use GOOS
2018-06-28 13:33:24 -06:00
Jonathan A. Sternberg 144d9f25fd feat(query/functions/storage): switch to using the grpc client 2018-06-28 14:03:39 -05:00
Jonathan A. Sternberg 2cc2f2fe41 fix(query/influxql): transpiler should not panic when a function is used with a non-variable 2018-06-28 13:31:31 -05:00
Mark Rushakoff f7d539e270 chore(query): remove id package
Finishes up work started in #145, now that our internal dependencies no
longer refer to plaform/query/id.
2018-06-28 10:09:49 -07:00
Jonathan A. Sternberg d62b9d3b28
Merge pull request #119 from influxdata/js-transpiler-options
feat(query/influxql): expose default database and retention policy for transpiler
2018-06-27 12:29:55 -05:00
Nathaniel Cook f128074458 feat(query): Change Encode interface to return bytes written 2018-06-27 10:31:04 -06:00
Jonathan A. Sternberg 2388d95949 feat(query/influxql): expose default database and retention policy for transpiler
The influxql transpiler can now be configured with a default database
and retention policy.
2018-06-27 10:23:37 -05:00
Nathaniel Cook 4e05ef3709 chore(Makefile): Update Makefiles to use GOOS 2018-06-26 11:03:49 -06:00
Nathaniel Cook 41b822380b chore: Make control.Controller implement AsyncQueryService 2018-06-25 15:24:40 -06:00
jlapacik 8a13c24a8b add option statement to semantic graph
This commit adds the option statement as a recognized node in
the semantic graph of a Flux query.

Flux interpreter must visit an option statement node

interpreter parses option statement

Semantically, variable declarations should be statements
Also update option statement test to validate proper scope

only test option statement
2018-06-22 09:28:11 -07:00
Joshua Lapacik 4ae0fb69a5 add syntax for query metadata to Flux grammar 2018-06-21 08:22:40 -07:00
Jonathan A. Sternberg 94db4dc285 fix(query/influxql): fix a broken test that didn't get updated with the bucket change 2018-06-21 09:31:25 -05:00
Mark Rushakoff c74bcd11b4 chore(query): remove usage of query/id package
It was effectively a copied and pasted platform.ID, so change it to a
type alias. Once our known references to the query/id package are
updated to platform.ID, we'll delete the package.
2018-06-20 12:55:20 -07:00
Jonathan A. Sternberg fad9b30705
Merge pull request #120 from influxdata/js-transpiler-buckets
feat(query/influxql): transpile using buckets instead of the database
2018-06-20 14:47:18 -05:00
Mark Rushakoff 638574b131 feat(query): add organization lookup to storage dependencies
This is needed for the `to` function to write to buckets in another
organization.
2018-06-15 07:30:12 -07:00
Nathaniel Cook 8fcdfff945 fix(query): Fix panic when there are multiple storage hosts 2018-06-15 14:45:34 +01:00
Mark Rushakoff 34e4a2f8ac fix(query/control): use Lock to avoid data race
The previous code used RLock even though it was modifying a field. I
observed a data race locally due to concurrent access on that field.
2018-06-13 08:22:00 -07:00
Jonathan A. Sternberg a1ccecd873 fix(query/influxql): messed up a transpiler unit test
One of the transpiler unit tests got messed up during a recent PR. This
restores the unit test for conditionals.
2018-06-13 09:47:03 -05:00
Jonathan A. Sternberg e900480bda
Merge pull request #115 from influxdata/js-multiple-statements
feat(query/influxql): support multiple select statements
2018-06-13 09:30:56 -05:00
Nathaniel Cook d1ca38c71f chore(ifql): Rename IFQL to Flux 2018-06-11 09:26:10 -06:00
Jonathan A. Sternberg 86defc1e37 feat(query/influxql): transpile using buckets instead of the database
The transpiler should use a bucket for the `from()` call instead of the
database parameter which will likely be deprecated. The bucket that it
will read data from is `db/rp` and, if the retention policy isn't
specified, `autogen` will be used as the default.
2018-06-11 10:13:11 -05:00
Jonathan A. Sternberg b1ab4e87f6 feat(query/influxql): support multiple select statements 2018-06-08 16:10:50 -05:00
Jonathan A. Sternberg af7c391ec3
Merge pull request #117 from influxdata/js-deterministic-join
fix(query/influxql): ensure the join happens deterministically
2018-06-08 16:01:07 -05:00
Jonathan A. Sternberg 02915cbfde fix(query/influxql): ensure the join happens deterministically
This ensures the tests are not flaky because the output is
deterministic.
2018-06-08 15:56:59 -05:00
Jonathan A. Sternberg 119021dc67 feat(query/influxql): implement filter conditions for tags in the transpiler 2018-06-08 14:18:41 -05:00
Jonathan A. Sternberg 4d31ed4ac9
Merge pull request #106 from influxdata/js-refactor-transpiler
refactor(query/influxql): follow the transpiler readme
2018-06-08 13:32:42 -05:00
Jonathan A. Sternberg 1b31a1150c refactor(query/influxql): follow the transpiler readme
There are a few changes to how the transpiler works. The first is that
the streams are now abstracted behind a `cursor` interface. The
interface keeps track of which AST nodes (like variables or function
calls) are represented by the data inside of the stream and the method
of how to access the underlying data. This makes it easier to make a
generic interface for things like the join and map operations. This also
makes it easier to, in the future, use the same code from the map
operation for a filter so we can implement conditions.

This also follows the transpiler readme's methods and takes advantage of
the updates to the ifql language. This means it will group the relevant
cursors into a cursor group, perform any necessary joins, and allow us
to continue building on this as we flesh out more parts of the
transpiler and the language.

The cursor interface makes it so we no longer have to keep a symbol
table mapping the generated names to the locations because that is all
kept within the incoming cursor rather than as a separate data
structure.

It also splits the transpiler into more files so it is easier to find
the relevant code for each stage of the transpiler.
2018-06-08 13:07:10 -05:00
Adam a795d666fc
feat(query/influxql) transpiler encoding end to end tests working (#103)
Finalized support for testing against JSON, added some tests.  Added colMap to result encoder to make initial tests pass
2018-06-06 12:43:56 -04:00
Jorge Landivar 8a5d649d3f
Merge pull request #59 from influxdata/tokafka
a toKafka function
2018-06-05 21:32:32 -05:00
Jonathan A. Sternberg bd1d77c080
Merge pull request #100 from influxdata/js-update-transpiler-plan
docs(query/influxql): update the transpiler readme
2018-06-05 10:42:02 -05:00
Jonathan A. Sternberg 8b088cdf2d docs(query/influxql): update the transpiler readme
Update the transpiler docs to account for a change in the query
language. A slightly different method is now used with some
clarifications previously existing problems.

The readme is also indexed with a table of contents for easier reading.
2018-06-05 10:30:36 -05:00
Adam 070649527c
feat(query/querytest): first batch of tests ready for review (#56)
* feat(query/querytest): first batch of tests ready for review

added helper executables for generating output, comparing specs.  Also updated several tests and added code to skip red tests with a clear reason in the message
2018-05-31 16:45:44 -04:00
Nathaniel Cook 6b2cf4e666 Merged pull request #96 from influxdata/nc-query-builtin
chore(query/builtin): Add package to formalize query builtin initialization
2018-05-31 12:07:49 -06:00
Nathaniel Cook 5e30d7cdd6 chore(query/builtin): Add package to formalize query builtin initialization
Now all packages wishing to consume query package can and must import
query/builtin in order to properly initialize all builtin values.
2018-05-31 12:03:49 -06:00
Jonathan A. Sternberg 9aa68c00a6
Merge pull request #92 from influxdata/js-readd-group-to-transpiler
fix(query/influxql): add group spec back to the transpiler
2018-05-31 12:22:19 -05:00
Adam 3faef7dfa9
fix CSV parameter validation so it only checks for file existence when required (#89)
* fix(query/functions/): fromCSV bugfix in parameter validation

* fix(query/functions): add from_csv_test.go
2018-05-31 12:59:45 -04:00
Jonathan A. Sternberg ea1809c0bf fix(query/influxql): add group spec back to the transpiler
The latest version of influxdb has fixed whatever was wrong with the
group function so this works properly again.
2018-05-31 11:43:58 -05:00
Jonathan A. Sternberg a44374a0c5 feat(query/influxql): encode influxql json results correctly
This fixes the encoder so that it will encode the response correctly to
a JSON blob using the outputs of the transpiler. The transpiler has also
been modified to pass through the correct values so the map function is
correctly constructed and the aggregate function is also correctly
constructed.

This removes the group function temporarily because it does not seem to
be working.
2018-05-31 11:07:27 -05:00
Nathaniel Cook 5ed7693d7f Merged pull request #82 from influxdata/nc-csv-decode-eof
fix(query/csv): Fix EOF causing error
2018-05-30 14:01:00 -06:00
Nathaniel Cook 360c6a3ea3 fix(query/csv): Fix EOF causing error
An EOF should not be reported as an error but as an indication that no
more data is available.
2018-05-30 13:55:24 -06:00
Andrew Watkins 9afc795845
Merge pull request #80 from influxdata/chrongraf/default-completer
Add deleted code required for Chronograf API
2018-05-30 12:08:36 -07:00
Andrew Watkins fa40f46be7 Remove deleted code required for Chronograf api 2018-05-30 12:05:44 -07:00
Nathaniel Cook 00da26963c Merged pull request #74 from influxdata/nc-limit-offset
feat(query/functions/limit): Add offset to limit functions
2018-05-30 12:44:36 -06:00
Nathaniel Cook 3a6c1024b0 Merged pull request #66 from influxdata/nc-table-sort
fix(query): Tables are sorted by Partition Key
2018-05-30 12:42:56 -06:00
Nathaniel Cook 27b472a681 Merged pull request #70 from influxdata/nc-window
fix(query/functions/window): Fix window asignment bug
2018-05-30 10:25:03 -06:00
Nathaniel Cook cbd219941a feat(query/functions/limit): Add offset to limit functions 2018-05-30 10:19:39 -06:00
Nathaniel Cook c583a23f6c fix(query): Tables are sorted by Partition Key 2018-05-29 16:41:46 -06:00
Nathaniel Cook ffa065abc2 fix(query/functions/window): Fix window asignment bug 2018-05-29 14:54:16 -06:00
Stuart Carnie bd7c237aa5
Merge pull request #69 from influxdata/sgc-metaqueries
chore(storage): Update RPC protobuf definitions
2018-05-29 11:00:38 -07:00
Stuart Carnie d7db5f3218 chore(storage): Update RPC protobuf 2018-05-29 10:50:51 -07:00
Jonathan A. Sternberg 8dad62bbbf
Merge pull request #55 from influxdata/js-multi-result-encoder-close
fix(http): keep the http response body open until the result has been read
2018-05-29 10:10:11 -05:00
j. Emrys Landivar (docmerlin) 97652242e8 Remove commented-out code 2018-05-29 09:53:56 -05:00
j. Emrys Landivar (docmerlin) fce46a3cbd a toKafka function 2018-05-28 02:33:40 -05:00
Nathaniel Cook 15a801e9a2 fix(query): Fix default group mode 2018-05-25 15:16:11 -06:00