The tables produced by `storage/flux` didn't previously pass our table
tests. The `Empty()` call is supposed to return false if the table was
ever not empty, but reading the table or calling `Done()` would cause
the table implementations here to return that they were always empty.
This messes up the csv encoder which then believes that it just emitted
an empty table.
The table tests for valid table implementations states that this is an
error for the table implementation. This change introduces a simple test
for `ReadFilter` and also runs the table tests on the filter iterator.
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.
My original PR influxdata/influxdb#18207 attempted to address the
aggressiveness of our .gitignore matches for known binary names.
Unfortunately, new directories with these names are now being ignored
when they shouldn't (thanks @jsternberg). Upon further investigation, it
looks like the only problematic patterns in the original code were the
plain (non-globbed) patterns like `influxd` and `influxdb`.
Returning the globbed patterns to their original order fixes the problem
while still holding onto the characteristic of being able to see
directories like `cmd/influxd/launcher` via tools that use .gitignore
for exclusion patterns. Below is an overview of how I've verified the
changes.
Regular files matching know binary names should be ignored anywhere in
the tree:
$ echo "hello" > influxd
$ echo "hello" > dbrp/influxd
$ git status
## bb/reorder-exclusion
Directories matching known binary names should not be ignored anywhere
in the tree:
$ mkdir influxd
$ echo "hello" > influxd/hello.txt
$ mkdir dbrp/influxd
$ echo "hello" > dbrp/influxd/hello.txt
$ git status
## bb/reorder-exclusion
?? dbrp/influxd/
?? influxd/
$ git status --untracked-files
## bb/reorder-exclusion
?? dbrp/influxd/hello.txt
?? influxd/hello.txt
New files in existing directories matching known binary names should not
be ignored:
$ echo "hello" > cmd/influx/hello.txt
$ git status
## bb/reorder-exclusion
?? cmd/influx/hello.txt
I've also made changes to already indexed files like
`cmd/influxd/launcher/engine.go` and those changes aren't ignored.
This adds a launcher test for the read window aggregate push down to
verify that it is done when a query is sent with the appropriate
pattern, the output is correct, and that the metric is incremented that
signals the push down happened.