reifydb_core/value/column/
mod.rs1use reifydb_type::{Fragment, Type};
5
6mod columns;
7mod compressed;
8mod data;
9pub mod frame;
10pub mod headers;
11#[allow(dead_code, unused_variables)]
12pub mod pool;
13pub mod push;
14mod transform;
15mod view;
16
17pub use columns::Columns;
18pub use compressed::{CompressedColumn, CompressionType};
19pub use data::ColumnData;
20pub use view::group_by::{GroupByView, GroupKey};
21
22#[derive(Clone, Debug, PartialEq)]
23pub struct Column {
24 pub name: Fragment,
25 pub data: ColumnData,
26}
27
28impl Column {
29 pub fn new(name: impl Into<Fragment>, data: ColumnData) -> Self {
30 Self {
31 name: name.into(),
32 data,
33 }
34 }
35
36 pub fn get_type(&self) -> Type {
37 self.data.get_type()
38 }
39
40 pub fn with_new_data(&self, data: ColumnData) -> Column {
41 Column {
42 name: self.name.clone(),
43 data,
44 }
45 }
46
47 pub fn name(&self) -> &Fragment {
48 &self.name
49 }
50
51 pub fn name_owned(&self) -> Fragment {
52 self.name.clone()
53 }
54
55 pub fn data(&self) -> &ColumnData {
56 &self.data
57 }
58
59 pub fn data_mut(&mut self) -> &mut ColumnData {
60 &mut self.data
61 }
62
63 pub fn to_static(&self) -> Column {
65 Column {
66 name: self.name.clone(),
67 data: self.data.clone(),
68 }
69 }
70
71 pub fn int1(name: impl Into<Fragment>, data: impl IntoIterator<Item = i8>) -> Self {
72 Column {
73 name: name.into(),
74 data: ColumnData::int1(data),
75 }
76 }
77
78 pub fn int1_with_bitvec(
79 name: impl Into<Fragment>,
80 data: impl IntoIterator<Item = i8>,
81 bitvec: impl Into<crate::BitVec>,
82 ) -> Self {
83 Column {
84 name: name.into(),
85 data: ColumnData::int1_with_bitvec(data, bitvec),
86 }
87 }
88
89 pub fn int2(name: impl Into<Fragment>, data: impl IntoIterator<Item = i16>) -> Self {
90 Column {
91 name: name.into(),
92 data: ColumnData::int2(data),
93 }
94 }
95
96 pub fn int2_with_bitvec(
97 name: impl Into<Fragment>,
98 data: impl IntoIterator<Item = i16>,
99 bitvec: impl Into<crate::BitVec>,
100 ) -> Self {
101 Column {
102 name: name.into(),
103 data: ColumnData::int2_with_bitvec(data, bitvec),
104 }
105 }
106
107 pub fn int4(name: impl Into<Fragment>, data: impl IntoIterator<Item = i32>) -> Self {
108 Column {
109 name: name.into(),
110 data: ColumnData::int4(data),
111 }
112 }
113
114 pub fn int4_with_bitvec(
115 name: impl Into<Fragment>,
116 data: impl IntoIterator<Item = i32>,
117 bitvec: impl Into<crate::BitVec>,
118 ) -> Self {
119 Column {
120 name: name.into(),
121 data: ColumnData::int4_with_bitvec(data, bitvec),
122 }
123 }
124
125 pub fn int8(name: impl Into<Fragment>, data: impl IntoIterator<Item = i64>) -> Self {
126 Column {
127 name: name.into(),
128 data: ColumnData::int8(data),
129 }
130 }
131
132 pub fn int8_with_bitvec(
133 name: impl Into<Fragment>,
134 data: impl IntoIterator<Item = i64>,
135 bitvec: impl Into<crate::BitVec>,
136 ) -> Self {
137 Column {
138 name: name.into(),
139 data: ColumnData::int8_with_bitvec(data, bitvec),
140 }
141 }
142
143 pub fn int16(name: impl Into<Fragment>, data: impl IntoIterator<Item = i128>) -> Self {
144 Column {
145 name: name.into(),
146 data: ColumnData::int16(data),
147 }
148 }
149
150 pub fn int16_with_bitvec(
151 name: impl Into<Fragment>,
152 data: impl IntoIterator<Item = i128>,
153 bitvec: impl Into<crate::BitVec>,
154 ) -> Self {
155 Column {
156 name: name.into(),
157 data: ColumnData::int16_with_bitvec(data, bitvec),
158 }
159 }
160
161 pub fn uint1(name: impl Into<Fragment>, data: impl IntoIterator<Item = u8>) -> Self {
162 Column {
163 name: name.into(),
164 data: ColumnData::uint1(data),
165 }
166 }
167
168 pub fn uint1_with_bitvec(
169 name: impl Into<Fragment>,
170 data: impl IntoIterator<Item = u8>,
171 bitvec: impl Into<crate::BitVec>,
172 ) -> Self {
173 Column {
174 name: name.into(),
175 data: ColumnData::uint1_with_bitvec(data, bitvec),
176 }
177 }
178
179 pub fn uint2(name: impl Into<Fragment>, data: impl IntoIterator<Item = u16>) -> Self {
180 Column {
181 name: name.into(),
182 data: ColumnData::uint2(data),
183 }
184 }
185
186 pub fn uint2_with_bitvec(
187 name: impl Into<Fragment>,
188 data: impl IntoIterator<Item = u16>,
189 bitvec: impl Into<crate::BitVec>,
190 ) -> Self {
191 Column {
192 name: name.into(),
193 data: ColumnData::uint2_with_bitvec(data, bitvec),
194 }
195 }
196
197 pub fn uint4(name: impl Into<Fragment>, data: impl IntoIterator<Item = u32>) -> Self {
198 Column {
199 name: name.into(),
200 data: ColumnData::uint4(data),
201 }
202 }
203
204 pub fn uint4_with_bitvec(
205 name: impl Into<Fragment>,
206 data: impl IntoIterator<Item = u32>,
207 bitvec: impl Into<crate::BitVec>,
208 ) -> Self {
209 Column {
210 name: name.into(),
211 data: ColumnData::uint4_with_bitvec(data, bitvec),
212 }
213 }
214
215 pub fn uint8(name: impl Into<Fragment>, data: impl IntoIterator<Item = u64>) -> Self {
216 Column {
217 name: name.into(),
218 data: ColumnData::uint8(data),
219 }
220 }
221
222 pub fn uint8_with_bitvec(
223 name: impl Into<Fragment>,
224 data: impl IntoIterator<Item = u64>,
225 bitvec: impl Into<crate::BitVec>,
226 ) -> Self {
227 Column {
228 name: name.into(),
229 data: ColumnData::uint8_with_bitvec(data, bitvec),
230 }
231 }
232
233 pub fn uint16(name: impl Into<Fragment>, data: impl IntoIterator<Item = u128>) -> Self {
234 Column {
235 name: name.into(),
236 data: ColumnData::uint16(data),
237 }
238 }
239
240 pub fn uint16_with_bitvec(
241 name: impl Into<Fragment>,
242 data: impl IntoIterator<Item = u128>,
243 bitvec: impl Into<crate::BitVec>,
244 ) -> Self {
245 Column {
246 name: name.into(),
247 data: ColumnData::uint16_with_bitvec(data, bitvec),
248 }
249 }
250
251 pub fn float4(name: impl Into<Fragment>, data: impl IntoIterator<Item = f32>) -> Self {
252 Column {
253 name: name.into(),
254 data: ColumnData::float4(data),
255 }
256 }
257
258 pub fn float4_with_bitvec(
259 name: impl Into<Fragment>,
260 data: impl IntoIterator<Item = f32>,
261 bitvec: impl Into<crate::BitVec>,
262 ) -> Self {
263 Column {
264 name: name.into(),
265 data: ColumnData::float4_with_bitvec(data, bitvec),
266 }
267 }
268
269 pub fn float8(name: impl Into<Fragment>, data: impl IntoIterator<Item = f64>) -> Self {
270 Column {
271 name: name.into(),
272 data: ColumnData::float8(data),
273 }
274 }
275
276 pub fn float8_with_bitvec(
277 name: impl Into<Fragment>,
278 data: impl IntoIterator<Item = f64>,
279 bitvec: impl Into<crate::BitVec>,
280 ) -> Self {
281 Column {
282 name: name.into(),
283 data: ColumnData::float8_with_bitvec(data, bitvec),
284 }
285 }
286
287 pub fn bool(name: impl Into<Fragment>, data: impl IntoIterator<Item = bool>) -> Self {
288 Column {
289 name: name.into(),
290 data: ColumnData::bool(data),
291 }
292 }
293
294 pub fn bool_with_bitvec(
295 name: impl Into<Fragment>,
296 data: impl IntoIterator<Item = bool>,
297 bitvec: impl Into<crate::BitVec>,
298 ) -> Self {
299 Column {
300 name: name.into(),
301 data: ColumnData::bool_with_bitvec(data, bitvec),
302 }
303 }
304
305 pub fn utf8(name: impl Into<Fragment>, data: impl IntoIterator<Item = String>) -> Self {
306 Column {
307 name: name.into(),
308 data: ColumnData::utf8(data),
309 }
310 }
311
312 pub fn utf8_with_bitvec(
313 name: impl Into<Fragment>,
314 data: impl IntoIterator<Item = String>,
315 bitvec: impl Into<crate::BitVec>,
316 ) -> Self {
317 Column {
318 name: name.into(),
319 data: ColumnData::utf8_with_bitvec(data, bitvec),
320 }
321 }
322
323 pub fn undefined(name: impl Into<Fragment>, row_count: usize) -> Self {
324 Column {
325 name: name.into(),
326 data: ColumnData::undefined(row_count),
327 }
328 }
329
330 pub fn uuid4(name: impl Into<Fragment>, data: impl IntoIterator<Item = reifydb_type::Uuid4>) -> Self {
331 Column {
332 name: name.into(),
333 data: ColumnData::uuid4(data),
334 }
335 }
336
337 pub fn uuid4_with_bitvec(
338 name: impl Into<Fragment>,
339 data: impl IntoIterator<Item = reifydb_type::Uuid4>,
340 bitvec: impl Into<crate::BitVec>,
341 ) -> Self {
342 Column {
343 name: name.into(),
344 data: ColumnData::uuid4_with_bitvec(data, bitvec),
345 }
346 }
347
348 pub fn uuid7(name: impl Into<Fragment>, data: impl IntoIterator<Item = reifydb_type::Uuid7>) -> Self {
349 Column {
350 name: name.into(),
351 data: ColumnData::uuid7(data),
352 }
353 }
354
355 pub fn uuid7_with_bitvec(
356 name: impl Into<Fragment>,
357 data: impl IntoIterator<Item = reifydb_type::Uuid7>,
358 bitvec: impl Into<crate::BitVec>,
359 ) -> Self {
360 Column {
361 name: name.into(),
362 data: ColumnData::uuid7_with_bitvec(data, bitvec),
363 }
364 }
365}