Commit graph

798 commits

Author SHA1 Message Date
Martin Kleppmann
975338900c Document another suspected bug
Testing this is harder because I need to construct a tree in which list
elements are split across multiple tree nodes, and the number of list
elements required to trigger this condition depends on the branching
factor of the tree, which I don't really want to hard-code into the
tests in case we change it...
2022-03-30 13:12:07 -04:00
Martin Kleppmann
361db06eb5 Delete unnecessary code
This check is not needed because the case `e == HEAD` can only happen if
`self.op` is a list insertion operation, and an insertion operation
always has empty `preds`, so it can never overwrite any existing list
element.
2022-03-30 13:12:07 -04:00
Martin Kleppmann
ba177c3d83 Fix broken handling of conflicts on list elements 2022-03-30 13:12:07 -04:00
Martin Kleppmann
fa0a8953dc More tests and comments 2022-03-30 13:12:07 -04:00
Martin Kleppmann
cf508a94a9 Slight simplification 2022-03-30 13:12:07 -04:00
Martin Kleppmann
289dd95196 Fix index calculation for insertions at the head 2022-03-30 13:12:07 -04:00
Martin Kleppmann
c908979372 Fix search for the correct insertion position 2022-03-30 13:12:07 -04:00
Martin Kleppmann
7025bb6541 Tests and fixes for list patches 2022-03-30 13:12:07 -04:00
Martin Kleppmann
145969152a Fix conversion of OpId to ExId when referring to root object 2022-03-30 13:12:07 -04:00
Martin Kleppmann
94ff10f690 Rename and reformat a bit 2022-03-30 13:12:07 -04:00
Martin Kleppmann
26efee509d First patch implementation from pairing session with Orion 2022-03-30 13:12:01 -04:00
Andrew Jeffery
3039efca9b Use pending_ops rather than direct len of operations 2022-03-30 12:18:44 +01:00
Andrew Jeffery
a989e294f8 Use entry api in index 2022-03-29 21:05:09 +01:00
Andrew Jeffery
3c294d8fca Document some fields on structs 2022-03-29 21:05:03 +01:00
Andrew Jeffery
0af471a1a1 Document object_type function 2022-03-29 20:45:20 +01:00
Andrew Jeffery
0da8ceddce Use iter() in IntoIterator 2022-03-29 20:34:20 +01:00
Orion Henry
be8f367d07 missing test tag 2022-03-29 11:39:25 -04:00
Orion Henry
93082ad6a9
Merge pull request #319 from jeffa5/experiment-broken-list
Add broken list tests
2022-03-29 11:14:46 -04:00
Orion Henry
fb586455dd
Merge branch 'experiment' into experiment-broken-list 2022-03-29 11:14:35 -04:00
Orion Henry
5d9880e1e1
Merge pull request #320 from jeffa5/experiment-last-elem
Fix nth query's last_elem
2022-03-29 11:08:31 -04:00
Andrew Jeffery
f002e7261b Update comments 2022-03-28 10:37:14 +01:00
Andrew Jeffery
636fe75647 Simplify query_node for insert and nth 2022-03-28 10:34:00 +01:00
Andrew Jeffery
1c6032bee0 Reset B to 16 2022-03-28 10:33:42 +01:00
Andrew Jeffery
fb6f2787b2 Remove last_elem in nth query 2022-03-28 10:18:15 +01:00
Andrew Jeffery
ece1e22283 Fix clippy 2022-03-28 10:18:15 +01:00
Andrew Jeffery
8f201562c3 Add better comments 2022-03-28 10:18:15 +01:00
Andrew Jeffery
a19aae484c Don't set last_seen unless the elemid was actually visible 2022-03-28 10:18:15 +01:00
Andrew Jeffery
b280138f84 Remove explicit len on index 2022-03-28 10:18:13 +01:00
Andrew Jeffery
1b5730c0ae Fix insert query to not skip past insert positions
When inserting and we have seen enough elements then look for the first
index to insert at rather than skipping over it.
2022-03-28 10:17:46 +01:00
Andrew Jeffery
49c4bf4911 Rename has to has_visible 2022-03-28 10:17:46 +01:00
Andrew Jeffery
a30bdc3888 Add broken list tests 2022-03-28 10:17:46 +01:00
Andrew Jeffery
e945ebbe74 Remove last_elem from nth_at 2022-03-27 15:35:44 +01:00
Andrew Jeffery
20229ee2d0 Remove last_elem in nth query 2022-03-27 15:28:49 +01:00
Andrew Jeffery
83d298ce8d Add test for broken last_elem 2022-03-27 15:28:49 +01:00
Andrew Jeffery
192356c099
Merge pull request #318 from jeffa5/experiment-query-consts
Remove unnecessary consts in queries
2022-03-26 12:35:39 -05:00
Andrew Jeffery
666782896d Remove unnecessary consts in queries 2022-03-26 09:11:41 +00:00
Andrew Jeffery
edbfce056c
Merge pull request #317 from jeffa5/experiment-nonzero-start_op
Make start_op be nonzero to prevent bad loads
2022-03-24 12:17:28 -05:00
Andrew Jeffery
9cb52d127f
Merge pull request #316 from jeffa5/experiment-errors
Expose encoding and decoding errors
2022-03-24 12:17:12 -05:00
Andrew Jeffery
ed244d980a Make start_op be nonzero to prevent bad loads 2022-03-24 16:42:46 +00:00
Andrew Jeffery
ec3785ab2b Expose encoding and decoding errors 2022-03-24 16:20:23 +00:00
Orion Henry
f5e8b998ca expose getChangeByHash in wasm 2022-03-23 09:34:44 -04:00
Orion Henry
9e1a063bc0 v20 - object replacement char 2022-03-14 14:47:54 -04:00
Andrew Jeffery
a4e8d20266 Optimise getting number of ops when applying tx or changes 2022-03-11 12:25:34 +00:00
Andrew Jeffery
ac18f7116f And fixup IntoIterator 2022-03-11 12:25:18 +00:00
Andrew Jeffery
67251f4d53 Have splice take IntoIterator 2022-03-11 12:24:02 +00:00
Andrew Jeffery
2e49561ab2 Make splice take iterator instead of vec 2022-03-11 12:13:11 +00:00
Andrew Jeffery
927c867884 Replace no longer returns an op 2022-03-11 12:04:00 +00:00
Andrew Jeffery
288b4674a0
Merge pull request #308 from jeffa5/experiment-redundant-objid
Remove obj and change from Op
2022-03-11 11:40:52 +00:00
Andrew Jeffery
488df55385 Remove change field on Op as unused
This field was never read from.
2022-03-11 11:40:42 +00:00
Andrew Jeffery
a2cb15e936 Remove obj from the op as it can be gotten from the optree
This makes the Op struct smaller, helping memory usage and cache
coherence.
2022-03-11 11:40:28 +00:00