mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-10-28 22:56:19 +00:00
feat: Add sequences and value_types to Batch
This commit is contained in:
@@ -5,7 +5,7 @@ mod schema;
|
||||
use std::mem;
|
||||
use std::sync::Arc;
|
||||
|
||||
use datatypes::vectors::VectorRef;
|
||||
use datatypes::vectors::{UInt64Vector, UInt8Vector, VectorRef};
|
||||
use store_api::storage::{SequenceNumber, ValueType};
|
||||
|
||||
use crate::error::Result;
|
||||
@@ -58,6 +58,8 @@ pub enum RowOrdering {
|
||||
|
||||
pub struct Batch {
|
||||
pub keys: Vec<VectorRef>,
|
||||
pub sequences: UInt64Vector,
|
||||
pub value_types: UInt8Vector,
|
||||
pub values: Vec<VectorRef>,
|
||||
}
|
||||
|
||||
|
||||
@@ -3,9 +3,9 @@ use std::collections::{btree_map, BTreeMap};
|
||||
use std::ops::Bound;
|
||||
use std::sync::{Arc, RwLock};
|
||||
|
||||
use datatypes::prelude::*;
|
||||
use datatypes::value::Value;
|
||||
use datatypes::vectors::VectorBuilder;
|
||||
use datatypes::vectors::VectorRef;
|
||||
use datatypes::vectors::{UInt64VectorBuilder, UInt8VectorBuilder, VectorBuilder};
|
||||
use store_api::storage::{SequenceNumber, ValueType};
|
||||
|
||||
use crate::error::Result;
|
||||
@@ -101,9 +101,13 @@ impl BTreeIterator {
|
||||
let iter = MapIterWrapper::new(iter);
|
||||
|
||||
let mut keys = Vec::with_capacity(self.ctx.batch_size);
|
||||
let mut sequences = UInt64VectorBuilder::with_capacity(self.ctx.batch_size);
|
||||
let mut value_types = UInt8VectorBuilder::with_capacity(self.ctx.batch_size);
|
||||
let mut values = Vec::with_capacity(self.ctx.batch_size);
|
||||
for (inner_key, row_value) in iter.take(self.ctx.batch_size) {
|
||||
keys.push(inner_key);
|
||||
sequences.push(Some(inner_key.sequence));
|
||||
value_types.push(Some(inner_key.value_type.as_u8()));
|
||||
values.push(row_value);
|
||||
}
|
||||
|
||||
@@ -114,6 +118,8 @@ impl BTreeIterator {
|
||||
|
||||
Some(Batch {
|
||||
keys: Self::keys_to_vectors(&keys),
|
||||
sequences: sequences.finish(),
|
||||
value_types: value_types.finish(),
|
||||
values: Self::values_to_vectors(&values),
|
||||
})
|
||||
}
|
||||
|
||||
@@ -10,3 +10,9 @@ pub enum ValueType {
|
||||
/// Put operation.
|
||||
Put,
|
||||
}
|
||||
|
||||
impl ValueType {
|
||||
pub fn as_u8(&self) -> u8 {
|
||||
*self as u8
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user