MCPcopy Create free account
hub / github.com/cosdata/cosdata / append

Method append

src/models/durable_wal.rs:69–165  ·  view source on GitHub ↗
(&mut self, op: VectorOp)

Source from the content-addressed store, hash-verified

67 }
68
69 pub fn append(&mut self, op: VectorOp) -> Result<(), BufIoError> {
70 let mut buf = Vec::new();
71
72 buf.extend([u8::MAX; 4]);
73
74 match op {
75 VectorOp::Upsert(vectors) => {
76 self.records_upserted += vectors.len() as u32;
77 write_len(&mut buf, vectors.len() as u32);
78 for vector in &*vectors {
79 write_len(&mut buf, vector.id.len() as u32);
80 buf.extend(vector.id.as_bytes());
81 if let Some(document_id) = &vector.document_id {
82 write_len(&mut buf, document_id.len() as u32);
83 buf.extend(document_id.as_bytes());
84 } else {
85 write_len(&mut buf, 0);
86 }
87 if let Some(dense_values) = &vector.dense_values {
88 write_len(&mut buf, dense_values.len() as u32);
89 for val in dense_values {
90 buf.extend(val.to_le_bytes());
91 }
92 } else {
93 write_len(&mut buf, 0);
94 }
95 if let Some(metadata) = &vector.metadata {
96 write_len(&mut buf, metadata.len() as u32);
97 for (field, val) in metadata {
98 write_len(&mut buf, field.len() as u32);
99 buf.extend(field.as_bytes());
100
101 match val {
102 FieldValue::Int(int) => {
103 buf.push(0);
104 buf.extend(int.to_le_bytes());
105 }
106 FieldValue::String(str) => {
107 buf.push(1);
108 write_len(&mut buf, str.len() as u32);
109 buf.extend(str.as_bytes());
110 }
111 }
112 }
113 } else {
114 write_len(&mut buf, 0);
115 }
116
117 if let Some(sparse_values) = &vector.sparse_values {
118 write_len(&mut buf, sparse_values.len() as u32);
119 for pair in sparse_values {
120 buf.extend(pair.0.to_le_bytes());
121 buf.extend(pair.1.to_le_bytes());
122 }
123 } else {
124 write_len(&mut buf, 0);
125 }
126

Callers 5

test_durabilityFunction · 0.45

Calls 8

write_to_end_of_fileMethod · 0.80
open_cursorMethod · 0.80
close_cursorMethod · 0.80
write_lenFunction · 0.70
lenMethod · 0.45
pushMethod · 0.45
flushMethod · 0.45

Tested by 5

test_durabilityFunction · 0.36