Commit graph

56 commits

Author SHA1 Message Date
Travis
d62ea053b5
Add support for field != <int> Range query 2017-10-06 11:36:41 -05:00
Travis
2b88d278bc
Implements BETWEEN for Range queries.
The PQL looks like:
```
Range(frame=f, field0 >< [200,610])
```

One thing I noticed while implementing this is that it doesn't seem
like `FieldRange()` is used in either `Frame` or `View`; the Executor
calls `Fragment.FieldRange()` directly. The problem with this is that
the offset logic is calculated in the Frame, but since the Executor
doesn't go through Frame, then the Executor also has to calculate
the offset before calling `Fragment.FieldRange`. We should unify this
logic somewhere. Note, this applies to both `FieldRange` and
`FieldRangeBetween`.
2017-09-25 15:11:04 -05:00
Ben Johnson
ad847f2c8a
Add field Range() support to Executor. 2017-08-24 13:34:57 -06:00
Ben Johnson
562fba9de1
Sum() and Average() field queries. 2017-08-22 08:27:52 -06:00
Todd Gruben
dfbfc217d9 corrected some merge issues 2017-08-08 12:06:06 -05:00
Todd Gruben
728308a5bb Merge branch 'master' into 16bitcontainer 2017-08-08 10:17:44 -05:00
Ben Johnson
0bb94fc83d
Implement BSI Field Range internally
This commit adds `FieldRange()` to the `Frame`, `View`, and
`Fragment` types. It accepts an operator & a predicate and
returns a bitmap of matching field values.
2017-08-01 14:44:53 -06:00
Travis
b91da2d0a4
Merge branch 'master' into input-definition 2017-07-26 14:44:31 -05:00
Linh Vo
aa73aec6c9 TopN NopCache comment 2017-07-21 13:31:31 -05:00
Linh Vo
2cfcf497e1 add tests for none cache 2017-07-21 00:16:37 -05:00
Michael Baird
1569c932ff Merge branch 'master' into input-definition 2017-07-18 14:51:15 -05:00
Michael Baird
477acc55e1 Merge pull request #728 from raskle/712-internal-hosts
712 Configuration validation
2017-07-12 13:53:53 -05:00
Michael Baird
cfedda29ef Added Duration tests 2017-07-12 09:07:38 -05:00
Travis
093500e34e
adjust columnN range to avoid divide-by-zero error in travisCI 2017-07-12 00:11:47 -05:00
Michael Baird
a4975e430b fix potential divide by zero 2017-07-03 11:21:44 -05:00
Ben Johnson
800e3844f9
Set & retrieve field values.
This commit adds support for set/get field values at the
`Frame`, `View`, and `Fragment` levels.
2017-06-30 12:21:21 -06:00
Cody Soyland
85b1a73b73 Refactor test utilities into importable package.
Remove duplicate instances of test utilities from pilosa.ctl.
Now subpackages such as pilosa.ctl may import test utilities.
2017-06-23 09:10:15 -05:00
Alan Bernstein
8e10e27cfa Remove debugging code 2017-06-19 10:40:00 -05:00
Alan Bernstein
e72ce82a49 Fix bug - all tests passing 2017-06-19 10:38:47 -05:00
Alan Bernstein
bf7a1bc08a WIP bug fix, cleanup, additional tests 2017-06-19 10:35:44 -05:00
Matt Jaffee
36e11e4ba8 remove print 2017-05-02 17:53:22 -05:00
Matt Jaffee
11b84cec94 change default cache type to ranked
All tests which use MustOpenFragment now explicitly pass a cacheType parameter.
If this parameter is an empty string, it means that whether the test works
should not depend on the cache type of the fragment. Otherwise the test should
explicitly set the cache type it needs rather than relying on the default.
2017-05-02 16:58:03 -05:00
Cody Soyland
3996b56b88 Apply Apache License 2.0 2017-04-28 14:22:03 -05:00
Travis
2ad322c2c7
Rename DB to Index
Rename `db.go` to `index.go` and `db_test.go` to `index_test.go`
2017-04-23 21:49:27 -05:00
Ben Johnson
d34687121f
Rename bitmap/profile to row/column. 2017-04-21 21:23:24 -06:00
Travis
25e649add8 remove cacheSize argument from NewFragment() 2017-04-19 11:41:41 -05:00
Travis
26b524a60e fix some tests and update glide.lock 2017-04-19 11:35:02 -05:00
Travis
b0f1fc7523 Makes Messenger a first-class object under Server (with pointers in Handler and Index).
Primary message interface is the MessageBroker which is an attribute of the Messenger.
MessageBroker implementations:
- Gossip (memberlist)
- Broadcast (uses HTTP, received by existing Handler)
- Static (no-ops)

Changes CacheSize from `int` to `uint32` for consistency with protobuf.
Removes unnecessary dependencies in glide:
- `github.com/aws/aws-sdk-go`
- `golang.org/x/net` (although this gets included by memberlist)

TODO:
- [ ] Add tests around the Messenger and MessageBroker objects.
- [ ] Refactor CreateSliceMessage to work with views.
- [ ] Support propogation of meta data on PATCH calls.

fixing some issues from last rebase
2017-04-19 10:33:26 -05:00
Michael Baird
e864a45d57 cleaned up the comments and code for the cache threshold. Also made the max size the set value of the cache rather than the calculated index. This ensures the user will not receive less cached values than they expect 2017-04-19 10:26:47 -05:00
Travis
cebca697b1 fixing tests that were affected by the messenger/view merge 2017-04-19 10:24:41 -05:00
Michael Baird
9321637d18 trim the ranked cache set on the 1st recalculate call 2017-04-19 10:06:11 -05:00
Michael Baird
4e7c2af572 fixed test to use ranked frame type 2017-04-19 10:06:11 -05:00
Michael Baird
8ceaef1eaa fragment cache size is set on frame creation with a default value of 50,000 2017-04-19 10:06:10 -05:00
Matt Jaffee
6f443f447a add signed int support
this affects the scanner/parser and makes it produce signed ints rather than
uints, and so it affects all code that is expecting unsighed ints to come out of
the parser.
2017-04-18 12:50:26 -05:00
Ben Johnson
d32edb5329 Add cacheType to frame options.
Previously the cache type (`lru` or `ranked`) was determined by
checking the ending suffix of the frame. If it ended with a `.n`
then it was ranked. Otherwise it was an LRU.

This commit changes frames so that a `cacheType` option can be
passed in during creation to set either `lru` or `ranked`.
2017-04-18 08:24:58 -06:00
Ben Johnson
071f1f2652 Fix rebase. 2017-03-24 14:01:01 -06:00
Ben Johnson
eff08af112 Separate physical data layout with views.
Previously, multiple frames with different prefixes were used to separate
different data layouts. This included separating standard row/column
layouts from inverted column/row layouts as well as storing aggregate
information for timestamp data.

Unfortunately, this caused frame meta data to be copied between multiple
frames and it made it difficult to keep these frames in sync.

This commit separates these different physical layouts into `Views`.
A `Frame` now has one or more views which represent each layout.
Fragments have been moved from under the `Frame` to be contained
within the `View`.

There are two primary views:

- `standard`
- `inverse`

If a frame has a time quantum, then views are generated for these
each of the standard/inverse views. For example a time quantum
of `YMDH` for the date `2000-01-02T00:00:00Z` would create the
following views:

- `standard_2000`
- `inverse_2000`
- `standard_200001`
- `inverse_200001`
- `standard_20000102`
- `inverse_20000102`

From the user's perspective, nothing should change in PQL. Different
PQL statements will handle the appropriate view automatically. For
example, `Bitmap()` and `Profile()` will fetch using the `standard`
view or the `inverse` view, respectively. The `Range()` statement
will lookup the appropriate time-based views automatically.
2017-03-24 13:57:02 -06:00
Linh Vo
ac8018c4f3 change Pair struct Key to ID 2017-03-23 12:38:09 -05:00
Linh Vo
0a4de77d38 add tanimoto option to pilosa 2017-03-10 13:45:18 -06:00
Ben Johnson
c6e2b1294b Add time-based frames and Range() support. 2016-12-08 12:29:49 -07:00
Cody Soyland
5206461d51 Migrate from Umbel to Pilosa organization on Github 2016-11-28 15:21:11 -06:00
Ben Johnson
39e0d22598 Add export command to pilosactl
CSV exports can now be done with the pilosactl application:

	$ pilosactl -d mydb -f myframe -o MYFILE.csv

If `-o` is not specified then the CSV is written to STDOUT. The
exporter combines all slices for the db/frame to into a single
concatenated CSV file.
2016-08-30 16:18:12 -06:00
Ben Johnson
04c814141a Optimize bitmap with zero copy
Segments bitmaps by slice and changes `Fragment.Bitmap()` to return
bitmaps with segments which are offset ranges of mmapped bitmaps.
2016-08-25 13:30:25 -06:00
Ben Johnson
1ed2d54855 optimize sparse bitmap block checksums
This commit refactors the block checksumming by removing the
iteration over each block and instead only checking blocks which
have data. This requires merging the cache inspection with the
roaring iterator to reduce CPU time and memory allocations.
2016-07-07 10:03:38 -06:00
Ben Johnson
8f4d7d50c3 active anti-entropy
This commit adds active anti-entropy via a merkle tree structure.
2016-04-12 19:48:32 -06:00
Ben Johnson
ab3358ae77 add cache to fragment backup/restore
This commit changes the backup format of a fragment from a
simple file stream to a tar archive which combines the data file
and the cache file.

Fixes #63
2016-03-17 15:48:48 -06:00
Ben Johnson
5a63a14742 refetch full counts for TopN()
This commits adds refetching to get the actual TopN() count
after the top bitmaps are determined.

Fixes #57
2016-03-03 13:03:20 -07:00
Ben Johnson
c64199a69e add backup/restore endpoints
This commit adds io.ReaderFrom and io.WriterTo implementations to
the Fragment and also adds backup & restore endpoints to the Handler.
2016-02-25 17:29:45 -07:00
Ben Johnson
cca8970019 add Range() support
This commit adds support for setting bits in time-based frames.
2016-02-23 14:53:03 -07:00
Todd Gruben
08266d3496 cleaned up tests for SetBit 2016-02-22 11:30:06 -06:00