Commit Graph

3186 Commits

Author SHA1 Message Date
Kim Altintop 7cd55a06ad Update response of /database/info (#64)
To match changes in clockworklabs/spacetimedb#1305
2024-06-14 16:29:25 +02:00
Noa 66112bbdf0 Impl subscribe subcommand & subscription smoketests (#1343)
Signed-off-by: Kim Altintop <kim@eagain.io>
Co-authored-by: Kim Altintop <kim@eagain.io>
Co-authored-by: Mazdak Farrokhzad <twingoow@gmail.com>
2024-06-14 09:16:05 +00:00
Zeke Foppa 53d6f9c3ed Release v0.10.0 (#98)
## Description of Changes

Changes for release 0.10.

---------

Co-authored-by: Zeke Foppa <github.com/bfops>
Co-authored-by: Ingvar Stepanyan <me@rreverser.com>
2024-06-13 22:51:31 +01:00
Zeke Foppa af01effd7e Bump version to 0.10.0 (#44)
* Bump version

---------

Co-authored-by: Zeke Foppa <github.com/bfops>
2024-06-13 22:59:15 +02:00
Mario Montoya 814dd5b738 Add small 'realistic' workload benchmark integration test (#714) 2024-06-13 18:28:35 +00:00
Mazdak Farrokhzad e808c1e117 TableDef: clarify generated_* methods (#1419) 2024-06-13 17:46:47 +00:00
Kurtis Mullins 910f605fca Include BSATN.Codegen in nuget pack (#1424) 2024-06-13 17:17:39 +00:00
Ingvar Stepanyan 4b7eff66da Generate tagged enums in C# client code (#1421) 2024-06-13 16:32:46 +00:00
joshua-spacetime 9e0d1c9967 refactor: Record txn-level metrics in a single utility (#1414) 2024-06-13 16:30:07 +00:00
joshua-spacetime 44832f2695 chore: Remove already tracked subscription counter (#1412) 2024-06-13 15:26:39 +00:00
joshua-spacetime 220c488b1f fix(1409): Counter metric names (#1411) 2024-06-13 15:26:24 +00:00
Mazdak Farrokhzad 220ff471d3 Remove unused file table.rs (#1417) 2024-06-13 12:27:21 +00:00
Noa 6e052cb8dc Fix auth regression (#1413)
Signed-off-by: Tyler Cloutier <cloutiertyler@users.noreply.github.com>
Co-authored-by: Tyler Cloutier <cloutiertyler@users.noreply.github.com>
2024-06-12 22:57:30 +00:00
Ingvar Stepanyan 2b7b19ec18 [C#] [NFC] Use semantic model's type where possible (#1401) 2024-06-12 21:50:51 +00:00
Ingvar Stepanyan e73ea7932c Add Option SDK tests (#1405) 2024-06-12 21:16:08 +00:00
Ingvar Stepanyan 0b99e10735 [NFC] [C#] Minor simplifications to type checks in Roslyn codegen (#1400) 2024-06-12 17:34:21 +00:00
joshua-spacetime 2ea93c2b5b chore: Remove max value metrics (#1402) 2024-06-12 16:59:46 +00:00
Ingvar Stepanyan cb2fbb9c4e [C#] Add Roslyn shapshot tests (#1399) 2024-06-11 19:04:16 +00:00
Kim Altintop 0fa94cedc1 durability: Skip fsync if nothing changed (#1360) 2024-06-11 18:10:33 +00:00
Kim Altintop 299789a138 core: Determine dangling clients from st_clients (#1366)
Co-authored-by: Mazdak Farrokhzad <twingoow@gmail.com>
2024-06-11 18:07:18 +00:00
Phoebe Goldman 6c45e76a98 Integrate snapshotting into core (#1344) 2024-06-11 12:40:02 +00:00
Mario Montoya 114aa994bf Fix output of binary, Identity, Address for SQL output and the 'Display' of them to show a full hex value (#1087) 2024-06-10 16:49:46 +00:00
Zeke Foppa 2d09485f74 Bump version to 0.10.0 (#1349)
Co-authored-by: Zeke Foppa <github.com/bfops>
2024-06-10 16:25:02 +00:00
Ingvar Stepanyan d11c83e53c Add explicit parameter for table visibility (#1359) 2024-06-10 13:38:38 +00:00
joshua-spacetime c2831d06d0 test(1329): Row limit from system table (#1355) 2024-06-10 10:31:18 +00:00
Kim Altintop 1044ebc652 core: Store address, owner and program bytes in st_module (#1305) 2024-06-10 10:25:16 +00:00
joshua-spacetime ccaad88130 fix(1353): Remove underscore based table access checks (#1354) 2024-06-10 09:58:51 +00:00
Kurtis Mullins b5252479a1 Add Jenkinsfile to run internal automation (#1232) 2024-06-09 14:41:49 +00:00
joshua-spacetime 61ee5def83 feat: System table based slow query logging (#1350) 2024-06-07 21:37:34 +00:00
Noa a54399495d Prune bindings deps (#1290) 2024-06-07 20:36:33 +00:00
Ingvar Stepanyan 7bafc7f1c7 Switch to shared BSATN support (#97)
## Description of Changes

See https://github.com/clockworklabs/SpacetimeDB/pull/1312 for the main
description and API breakages.

In the process extracted and simplified various common bits from
generated code into the SDK itself to make generated code more concise.

 - Closes #67.
 - Closes #68.
 - Closes #73.
 - Closes #76.

## API

 - [x] This is an API breaking change to the SDK

*If the API is breaking, please state below what will break*


## Requires SpacetimeDB PRs

https://github.com/clockworklabs/SpacetimeDB/pull/1312
2024-06-07 20:22:59 +01:00
Ingvar Stepanyan d1033b5d93 Shared C# codegen for BSATN (#1312)
Signed-off-by: Ingvar Stepanyan <me@rreverser.com>
Co-authored-by: james gilles <jameshgilles@gmail.com>
Co-authored-by: John Detter <no-reply@boppygames.gg>
2024-06-07 19:22:02 +00:00
Zeke Foppa c86e3daca6 Revert "Update docs for #[spacetimedb(table)] (#61)" (#62)
This reverts commit fce4df6f66.
2024-06-06 16:48:05 -04:00
Zeke Foppa fce4df6f66 Update docs for #[spacetimedb(table)] (#61)
* [bfops/public-tables]: update docs for #[spacetimedb(table)]

* [bfops/public-tables]: review

---------

Co-authored-by: Zeke Foppa <github.com/bfops>
2024-06-06 13:41:59 -07:00
Zeke Foppa 4af892a122 [bfops/update-quickstart]: do thing (#1348)
Co-authored-by: Zeke Foppa <github.com/bfops>
2024-06-06 20:40:45 +00:00
joshua-spacetime b3339c80bc feat(1329): System table for system variables (#1342)
Closes #1329.

Used to persist global parameters for slow query logging and cardinality limits.
2024-06-06 20:30:07 +00:00
Zeke Foppa 8f3f6bd9d7 Fix Config.save failing if /tmp is on a different filesystem (#1346)
* [bfops/fix-config-saving]:  do thing

* [bfops/fix-config-saving]: review

* [bfops/fix-config-saving]: fix smoketests

* [bfops/fix-config-saving]: use create_new to avoid race condition

---------

Co-authored-by: Zeke Foppa <github.com/bfops>
2024-06-06 16:28:17 +00:00
Snoppy 335c5b6e45 chore: fix typos (#1241)
* chore: fix typos

Signed-off-by: snoppy <michaleli@foxmail.com>

* Update lib.rs

Signed-off-by: Tyler Cloutier <cloutiertyler@users.noreply.github.com>

---------

Signed-off-by: snoppy <michaleli@foxmail.com>
Signed-off-by: Tyler Cloutier <cloutiertyler@users.noreply.github.com>
Co-authored-by: Tyler Cloutier <cloutiertyler@users.noreply.github.com>
2024-06-06 00:05:54 -04:00
Zeke Foppa b06b2e59f1 Fix bug with Lockfile sticking around (#1341)
* [bfops/fix-config-lock]: do thing

* [bfops/fix-config-lock]: review

* [bfops/fix-config-lock]: review

* [bfops/fix-config-lock]: fix

* [bfops/fix-config-lock]: TODOs

* [bfops/fix-config-lock]: review

* [bfops/fix-config-lock]: review

* [bfops/fix-config-lock]: review

* [bfops/fix-config-lock]: review

---------

Co-authored-by: Zeke Foppa <github.com/bfops>
2024-06-05 22:40:24 +00:00
Phoebe Goldman 8c5f40db8d Add the snapshot crate, which implements snapshotting at a low level (#1340)
* Add the `snapshot` crate, which implements snapshotting at a low level

- Requires making `BlobHash` be `Serialize` and `Deserialize`.
  For arcane macro-ology reasons, this requires writing `BlobHash::SIZE`
  instead of `Self::SIZE` (it gets embedded in a visitor struct or something).
- Requires adding two new operators to `BlobStore`.
- Adds a return value to `Page::save_content_hash`, for convenience.
- Impls `DerefMut` for `Pages`.
- **Scary change:** adds `Table::pages_mut`.
  I think possibly this operator should be `unsafe`,
  since write access to the `Pages` allows an undisciplined caller
  to violate the `Table`'s assumptions by corrupting a `Page`.
  It seems like an anti-pattern to mark a method `unsafe` on the grounds that
  misusing its return value can cause UB,
  but I don't see a plausible alternative
  without making most methods on `Page` unsafe.
  Open to feedback on this one!

* Nix `Table::pages_mut`

* Address Mazdak's feedback

* Use `thiserror` rather than `anyhow` for better error hygiene
2024-06-05 21:58:12 +00:00
Phoebe Goldman f9cc84e3b4 Define DirTrie, a git-like on-disk object store (#1336)
* Define `DirTrie`, a git-like on-disk object store

* Remove unused iteration code; add simple tests

* Address Mazdak's review
2024-06-05 17:16:59 +00:00
Mazdak Farrokhzad f08644f840 make update_database insensitive to table access changes (#1338) 2024-06-05 16:31:07 +00:00
Kim Altintop ff851ae5fa commitlog: Make bitflip test a proptest (#1333)
* commitlog: Make bitflip test a proptest

The test sometimes fails. As a proptest, we'll be able to seed it with
failing inputs.

Fixes: #1167

* commitlog: Fix the bitflip test

Turns out we sometimes flipped a bit in the CRC32 itself, which makes
things go wrong in not the expected way.
2024-06-05 05:53:41 +00:00
Phoebe Goldman 697a581886 Make both TX offset counters agree (#1332)
* Make both TX offset counters agree

Prior to this commit, `CommittedState::next_tx_offset` got out of sync
with the commitlog/durability's notion of the tx offset,
because the former counted all committed TXes,
while the latter excluded certain empty TXes
(namely, empty TXes
which were not `__identity_connected__` or `__identity_disconnected__` reducers).

With this commit, the skipping logic is moved earlier into `CommittedState`,
so that it can maintain a counter consistent with that used by the commitlog.

* Remove duplicated increment
2024-06-04 17:57:00 +00:00
Phoebe Goldman db34ff6a8e Create new crate fs-utils; move Lockfile and create_parent_dir (#1334)
* Create new crate `fs-utils`; move `Lockfile` and `create_parent_dir`

The snapshot crate will need to create lockfiles.
Rather than duplicating code to do so, we choose to move our definition of `Lockfile`
into a crate that can be depended on by both `cli` and `snapshot`.
No existing crate seems like an obvious choice for this
-- a `Lockfile` is not really a data structure, so `data-structures` seems wrong --
so we add a new crate, `fs-utils`.
Currently this contains only `Lockfile` and `create_parent_dir`,
but a follow-up PR will add `DirTrie`, a Git-like on-disk object store.

* Deduplicate `map_err` closure

* Zeke's nit: simplify control flow

Co-authored-by: Zeke Foppa <196249+bfops@users.noreply.github.com>
Signed-off-by: Phoebe Goldman <phoebe@goldman-tribe.org>

---------

Signed-off-by: Phoebe Goldman <phoebe@goldman-tribe.org>
Co-authored-by: Zeke Foppa <196249+bfops@users.noreply.github.com>
2024-06-04 16:57:28 +00:00
Phoebe Goldman a214f78f0b Impl Serialize, Deserialize for Page (#1335)
* Impl `Serialize`, `Deserialize` for `Page`

Snapshotting needs to write `Page`s to files and read them back again.
To that effect, this commit implements `Serialize` and `Deserialize` for `Page`.

* Address Mazdak's review

- Fix soundness in `FixedBitSet` by moving an assert.
- Add commentary to test.
- Add commentary to `spacetimedb-lib` dependency.
2024-06-04 15:49:27 +00:00
Jeremie Pelletier da23401368 Jeremie/notify sql (#1198)
* Notify subscriptions from SQL code path

* Remove blocking_broadcast_event

(From another PR, but helps tests to pass)

* Update from review

* Update from rebase

* cargo fmt

* cargo fmt

* cargo fmt

* update space.rs
2024-06-03 22:51:05 +00:00
Phoebe Goldman 18aa1d4299 Fix commitlog fold_transactions_from ignoring requested offset (#1330)
* Fix commitlog `fold_transactions_from` ignoring requested offset

Prior to this commit, `fold_transactions_from` on a durability backed by a commitlog
would discard the requested offset and unconditionally yield all txes in the relevant segments.

This commit changes that behavior so that `fold_transactions_from`
skips commitlog commits (which contain many txes) less than the reqested offset,
and skips txes using `consume_record`.

* Add `Decoder::skip_record`

Lucky I asked Kim whether I was using `consume_record` and `decode_record` correctly,
because I wasn't.

This commit adds methods to `Decoder` and `Visitor` for skipping records and rows,
causing them to be extracted from the reader but not folded.

* Fix test

Add new methods to `Decoder` and `Visitor` hidden away in a test I missed.
2024-06-03 22:37:43 +00:00
Mazdak Farrokhzad be9c958d21 Flatten ColumnOp so that we box less (#1234) 2024-06-03 17:36:44 +00:00
Mazdak Farrokhzad 89aecd15e3 Split ColumnOp into one with row indices and one with FieldName & other enabled changes (#1207)
* 1. Split ColumnOp into ColumnOp & FieldOp, former storing ColId
2. Shrink SqlAst to 80 bytes, so it can be passed in registers
3. Store end-result Header in IndexSemiJoin
4. Remove operational use of Header in ColumnOp & build_query
5. Simplify RowRef::{get, project, project_owned}

* Make parts of build_query actually infallible.

1. Make IndexSemiJoin::filter infallible.
2. Make ColumnOp::compare and friends infallible.
3. Make RowRef::{get, project, project_owned} infallible.

* Make RelOps::next itself infallible

* 1. with_select{_cmp}: ensure type safety o query exec cannot panic
2. Document RelValue::{get, read_or_take_column, project_owned}
3. Refactor optimize_select
4. Ensure in optimize_select that conditions are merged with preceding selects

* remove RelOps::{head, row_count}; head is redundant & row_count is useless

* remove Relation trait; it does not carry its weight

* make build_query infallible

* simplify IndexSemiJoin, make it slightly less branchy

* simplify try_index_join

* split IndexSemiJoin into Left & Right parts

* move get_field_pos to test code

* move test version of build_query to test code
2024-06-03 16:45:32 +00:00