Insert
The update function takes a record object notation and mutates the dataset to append lines.
the insert record stream asks for insert strategy and pipes it through insert tablet streams. insert tablet stream writes the records as lines at the end of the tablet. at the end of the record stream the tablet content is grouped to a valid form by sorting.
To learn more about the architecture of csvs, see other User Guides, the Reference and the Requirements.
insert in dataset
FS -> Dir -> List Entry -> IO List Entry
pipe each query to insert stream to returninsert stream
FS -> Dir -> Entry -> IO List Entry
schema = select schema for each entry strategy = insert strategy with schema, query for each tablet of strategy append insert tablet stream for each tablet of strategy sort tablet pipe query to each insert tablet stream to returntest cases
- duplicate
- query: record 2001
- initial: default
- expected: duplicate
- duplicate leaf
- query: record 2001 edited
- initial: default
- expected: duplicate leaf
- add
- query: record added
- initial: default
- expected: added
insert strategy
Schema -> Entry -> List Tablet
This describes all tablets needed to delete an entry
base = entry._ crown = find crown with schema, base for each branch of crown for each trunk of schema.branch.trunks return { filename: trunk-branch.csv, trunk: trunk, branch: branch, }insert tablet stream
FS -> Dir -> Tablet -> Entry -> IO
Entryfilepath = dir/tablet.filename // in order to start other tablet streams enqueue entry grains = mow query with tablet.trunk, tablet.branch for each grain append grain.key,grain.value to filepath