Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement inner join. #61

Open
bigeasy opened this issue Oct 21, 2020 · 0 comments
Open

Implement inner join. #61

bigeasy opened this issue Oct 21, 2020 · 0 comments
Assignees

Comments

@bigeasy
Copy link
Owner

bigeasy commented Oct 21, 2020

No description provided.

@bigeasy bigeasy added this to the Production Ready milestone Oct 21, 2020
@bigeasy bigeasy self-assigned this Oct 21, 2020
bigeasy pushed a commit that referenced this issue Oct 21, 2020
Not invalidating the cache for changes, so won't select against what's
in memory. Will work with snapshots and mutators when there are no
changes.

See #61.
bigeasy pushed a commit that referenced this issue Oct 22, 2020
bigeasy pushed a commit that referenced this issue Oct 22, 2020
Start to think that we should have a light `OuterIterator` and
`InnerIterator` that wraps an interation strategy, and the strategy is
a state machine that can be as complicated as it needs to be.

See #61.
bigeasy pushed a commit that referenced this issue Oct 22, 2020
Use a natural unique key for the records. Use the last name, first name
for the index. All tests are easier to write now.

See #61.
bigeasy pushed a commit that referenced this issue Oct 22, 2020
Create an `OuterIterator` and `InnerIterator` that are a thin wrapper
around an object that does both inner and outer iteration. Reduces the
dereferencing paths.

See #61.
bigeasy pushed a commit that referenced this issue Oct 22, 2020
Instead of appending an edit as if it where the staging b-tree in
Amalgamator, just assign the value to the array element. Simplifies get
as there is no scan for latest, just yes/no.

See #61.
bigeasy pushed a commit that referenced this issue Oct 23, 2020
Not unit tested, but the entire inner and outer join logic is there.

See #61.
bigeasy pushed a commit that referenced this issue Oct 23, 2020
bigeasy pushed a commit that referenced this issue Oct 23, 2020
Index was missing a key extractor. Also, Strata had trouble with
exceptions and not being able to clean up its cache because the
exceptions where causing cache entries to leak. Fix that upstream.

See #61.
bigeasy pushed a commit that referenced this issue Oct 26, 2020
bigeasy pushed a commit that referenced this issue Nov 12, 2020
Snapshot has now caught up with Mutator and can be used to implement
index updates in the Mutator. Snapshot join was just the initial
Amalgamaotr query used to prime the Mutator join which then has to check
the in-memory stage.

See #61.
bigeasy pushed a commit that referenced this issue Jan 23, 2021
 * Resurrected, all tests pass.
 * Upgrade `b-tree` to `2.0.0-alpha.92`.
 * Upgrade `amalgamate` to `0.1.49`.
 * Upgrade `riffle` to `2.0.0-alpha.67`.
 * Upgrade `b-tree` to `2.0.0-alpha.91`.
 * Upgrade `amalgamate` to `0.1.48`.
 * Upgrade `riffle` to `2.0.0-alpha.66`.
 * Reopening again.
 * Upgrade `b-tree` to `2.0.0-alpha.90`.
 * Upgrade `amalgamate` to `0.1.47`.
 * Upgrade `riffle` to `2.0.0-alpha.65`.
 * Update `LICENSE` for 2021.
 * Build with Node.js 12, 14 and 15 on CI/CD.
 * Major dependency upgrade.
 * Upgrade `amalgamate` to `0.1.46`.
 * Upgrade `riffle` to `2.0.0-alpha.64`.
 * Upgrade `b-tree` to `2.0.0-alpha.89`.
 * Upgrade `b-tree` to `2.0.0-alpha.88`.
 * Upgrade `satiate` to `0.0.2`.
 * Upgrade `amalgamate` to `0.1.45`.
 * Upgrade `constrain` to `2.0.0-alpha.2`.
 * Upgrade `destructible` to `7.0.0-alpha.46`.
 * Upgrade `riffle` to `2.0.0-alpha.63`.
 * Upgrade `riffle` to `2.0.0-alpha.62`.
 * Upgrade `amalgamate` to `0.1.44`.
 * Upgrade `b-tree` to `2.0.0-alpha.86`.
 * Upgrade `amalgamate` to `0.1.43`.
 * Upgrade `riffle` to `2.0.0-alpha.61`.
 * Upgrade `amalgamate` to `0.1.42`.
 * Upgrade `b-tree` to `2.0.0-alpha.85`.
 * Upgrade `riffle` to `2.0.0-alpha.60`.
 * Upgrade `destructible` to `7.0.0-alpha.45`.
 * Upgrade `reciprocate` to `0.0.6`.
 * Upgrade `amalgamate` to `0.1.41`.
 * Upgrade `b-tree` to `2.0.0-alpha.84`.
 * Upgrade `interrupt` to `11.0.0-alpha.16`.
 * Upgrade `avenue` to `0.6.8`.
 * Upgrade `b-tree` to `2.0.0-alpha.83`.
 * Upgrade `whittle` to `0.0.1`.
 * Upgrade `amalgamate` to `0.1.39`.
 * Upgrade `destructible` to `7.0.0-alpha.39`.
 * Upgrade `rescue` to `7.0.0-alpha.9`.
 * Upgrade `journalist` to `0.1.21`.
 * Upgrade `riffle` to `2.0.0-alpha.59`.
 * Upgrade `reciprocate` to `0.0.5`.
 * Add email to author in `pacakge.json`.
 * Fix unit test count.
 * Snapshots in `readme.t.js`. See #26.
 * Fix unit test count. See #70. See #92.
 * Implement mutator index get, unset. Closes #70. Closes #92.
 * Remoe dead code.
 * Fix unit test count. See #68.
 * Update old index entry when updating object. Closes #68.
 * Upgrade `b-tree` to `2.0.0-alpha.67`. Closes #91.
 * Merge primary and indices at once. Closes #90.
 * Reuse `b-tree` `find`. Closes #89.
 * Remove debugging `Error.stackTraceLimit`.
 * Remove unused variable from `map`. See #78.
 * Upgrade `amalgamate` to `0.1.38`. Closes #88.
 * Upgrade `riffle` to `2.0.0-alpha.45`. Closes #87.
 * Upgrade `ascension` to `^3.0.0-alpha.0`. Closes #86.
 * Upgrade `b-tree` to `2.0.0-alpha.66`. Closes #85.
 * Implement snapshot inner join. See #61.
 * Implement snapshot index get. Closes #79.
 * Upgrade `amalgamate` to `0.1.37`. Closes #84.
 * Upgrade `riffle` to `2.0.0-alpha.44`. Closes #83.
 * Upgrade `b-tree` to `2.0.0-alpha.65`.
 * Upgrade `reciprocate` to `0.0.2`. Closes #82.
 * Implement snapshot map. Closes #78.
 * Upgrade `amalgamate` to `0.1.35`. Closes #81.
 * Unit tests for snapshot iterators. Closes #76.
 * Removed dead code. See #76.
 * Create common `_iterator` function. See #76.
 * Remove a temporary re-assignment of `this`.
 * Simplify structurs of a store mutation. Closes #80.
 * Implement snapshot `get`. Closes #78.
 * Split out a `Snapshot` and `SnapshotIterator`. See #76.
 * Renamed iterator classes after join refactor. See #61.
 * Upgrade `amalgamate` to `0.1.32`. Closes #74.
 * Upgrade `riffle` to `2.0.0-alpha.40`. Closes #73.
 * Upgrade `b-tree` to `2.0.0-alpha.63`. Closes #72.
 * Replace `skip` with `reciprocate`. Closes #71.
 * Fix index key extractor. See #61.
 * Test changing the foreign relation in a join. See #61.
 * Sketch of a complete join. See #61.
 * Simpify `get` but replacing edits in memory stage. See #61.
 * Convert iterator to state machine thing. See #61.
 * Refactor unit test. See #61.
 * Slight tidy. See #61.
 * Reversal should be non-inclusive. Closes #67.
 * Work the join function into something reusable. See #61.
 * Upgrade `riffle` to `2.0.0-alpha.38`. Closes #66.
 * Replace `trampoline.sync` call for new Skip. Closes #65.
 * Upgrade `amalgamate` to `0.1.30`. Closes #64.
 * Upgrade `b-tree` to `2.0.0-alpha.57`. Closes #63.
 * Upgrade `skip` to `0.1.1`. Closes #62.
 * Implement inner join against amalgamated stores. See #61.
 * Reopen database. Run version upgrade. Closes #6. Closes #60.
 * Remove rotated versions out of the commit log. Closes #59.
 * Unpin alpha dependencies. Closes #58.
 * Remove duplicate Destructible dependency. Closes #57.
 * Write a `readme.t.js` unit test. See #26.
 * Record successful commit. Closes #56.
 * Use in Interrupt code mechanism. Closes #55.
 * Upgrade `interrupt` to `11.0.0-alpha.1`. Closes #54.
 * Upgrade `journalist` to `0.1.7`. Closes #53.
 * Add Destructible to dev dependencies. Closes #52.
 * Use increment/decrement to control shutdown. Closes #51.
 * Upgrade `journalist` to `0.1.6`. Closes #50.
 * Upgrade `b-tree` to `^2.0.0-alpha.54`. Closes #49.
 * Implement index rename. See #48.
 * Implement store and index rename. Closes #48.
 * Rollback store and index creation. Closes #47.
 * Create `memento.close()` function. Closes #39.
 * Create a static `open` function. Closes #40.
 * Make upgrade version a property of `Schema`. Closes #46.
 * Upgrade `amalgamate` to `^0.1.21`. Closes #45.
 * Upgrade `b-tree` to `^2.0.0-alpha.50`. Closes #44.
 * Upgrade `interrupt` to `^10.1.0`. Closes #43.
 * Rename to `Memento.mutator`. Closes #42.
 * Documentation on `open`, diary entry on `join`. See #26.
 * Test propagating errors out of mutate. See #32.
 * Remove old `mutator` function. See #32.
 * Implement reverse and reversable iteration. Closes #37. Closes #38.
 * Implement working forward iterator. Closes #25.
 * Sketch of `README.md`. See #26.
 * Implement indexes. Closes #32.
 * Use new Trampoline class. Closes #36.
 * Make `Schema` a descendent of `Mutator`. Closes #35.
 * Implement auto-commit interface. Closes #32.
 * Fix test count. See #33.
 * Implement `get`. Closes #33.
 * Update for external async Amalgamate. Closes #34.
 * Start of index, need to implement `get` first. See #32.
 * Sketch of auto-commit interface. See #31.

Closes #93.
bigeasy pushed a commit that referenced this issue Dec 31, 2021
bigeasy pushed a commit that referenced this issue Feb 7, 2022
 * Fix test count.
 * Upgrade `b-tree` to `2.0.0-alpha.128`.
 * Upgrade `satiate` to `0.0.6`.
 * Upgrade `amalgamate` to `0.1.82`.
 * Upgrade `constrain` to `2.0.0-alpha.7`.
 * Upgrade `interrupt` to `11.0.0-alpha.26`.
 * Upgrade `avenue` to `0.6.18`.
 * Upgrade `verbatim` to `0.1.9`.
 * Upgrade `whittle` to `0.0.6`.
 * Upgrade `reciprocate` to `0.0.10`.
 * Upgrade `destructible` to `7.0.0-alpha.72`.
 * Upgrade `extant` to `2.0.0-alpha.5`.
 * Upgrade `rescue` to `7.0.0-alpha.19`.
 * Upgrade `journalist` to `0.1.31`.
 * Upgrade `perhaps` to `0.0.13`.
 * Merge `master`.
 * Update `LICENSE` for current year.
 * Document innner join. See #61.

Closes #153.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant