mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-09-27 15:45:36 +00:00
feat: add prepared batch write primitives (#9186)
* refactor: expose shared operator test fixtures Signed-off-by: WenyXu <wenymedia@gmail.com> * feat: convert prepared table rows to Arrow batches Signed-off-by: WenyXu <wenymedia@gmail.com> * feat: write prepared table batches through bulk insert Signed-off-by: WenyXu <wenymedia@gmail.com> * feat: define prepared batch submission interface Signed-off-by: WenyXu <wenymedia@gmail.com> * fix: validate prepared batch values and clarify write contracts Signed-off-by: WenyXu <wenymedia@gmail.com> * fix: reuse JSON2 array schema alignment for prepared writes Signed-off-by: WenyXu <wenymedia@gmail.com> * ci: refresh compatibility window for v1.2.1 Signed-off-by: WenyXu <wenymedia@gmail.com> --------- Signed-off-by: WenyXu <wenymedia@gmail.com>
This commit is contained in:
@@ -1033,6 +1033,17 @@ pub fn proto_value_type(value: &v1::Value) -> Option<ColumnDataType> {
|
||||
Some(value_type)
|
||||
}
|
||||
|
||||
/// Checks protobuf value types using the write-path compatibility rules.
|
||||
/// Binary values also represent JSON and vector columns.
|
||||
pub fn proto_value_type_match(column_type: ColumnDataType, value_type: ColumnDataType) -> bool {
|
||||
match (column_type, value_type) {
|
||||
(ct, vt) if ct == vt => true,
|
||||
(ColumnDataType::Vector, ColumnDataType::Binary) => true,
|
||||
(ColumnDataType::Json, ColumnDataType::Binary) => true,
|
||||
_ => false,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn vectors_to_rows<'a>(
|
||||
columns: impl Iterator<Item = &'a VectorRef>,
|
||||
row_count: usize,
|
||||
@@ -2085,4 +2096,18 @@ mod tests {
|
||||
let value = decode_json_value(&proto);
|
||||
assert_eq!(json.as_ref(), value);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_proto_value_type_match() {
|
||||
for (column, value, expected) in [
|
||||
(ColumnDataType::Int32, ColumnDataType::Int32, true),
|
||||
(ColumnDataType::Json, ColumnDataType::Binary, true),
|
||||
(ColumnDataType::Vector, ColumnDataType::Binary, true),
|
||||
(ColumnDataType::Float64, ColumnDataType::List, false),
|
||||
(ColumnDataType::Float64, ColumnDataType::Struct, false),
|
||||
(ColumnDataType::Binary, ColumnDataType::Json, false),
|
||||
] {
|
||||
assert_eq!(expected, proto_value_type_match(column, value));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user