mirror of
https://github.com/aljazceru/turso.git
synced 2026-02-23 00:45:37 +01:00
rename subvector to vector_slice
This commit is contained in:
@@ -632,7 +632,7 @@ The `vector` extension is compatible with libSQL native vector search.
|
||||
| vector_distance_cos(x, y) | Yes | |
|
||||
| vector_distance_l2(x, y) | Yes |Euclidean distance|
|
||||
| vector_concat(x, y) | Yes | |
|
||||
| subvector(x, start_index, length) | Yes | |
|
||||
| vector_slice(x, start_index, length) | Yes | |
|
||||
|
||||
### Time
|
||||
|
||||
|
||||
@@ -179,7 +179,7 @@ impl Display for VectorFunc {
|
||||
// We use `distance_l2` to reduce user input
|
||||
Self::VectorDistanceEuclidean => "vector_distance_l2".to_string(),
|
||||
Self::VectorConcat => "vector_concat".to_string(),
|
||||
Self::VectorSlice => "subvector".to_string(),
|
||||
Self::VectorSlice => "vector_slice".to_string(),
|
||||
};
|
||||
write!(f, "{str}")
|
||||
}
|
||||
@@ -843,7 +843,7 @@ impl Func {
|
||||
"vector_distance_cos" => Ok(Self::Vector(VectorFunc::VectorDistanceCos)),
|
||||
"vector_distance_l2" => Ok(Self::Vector(VectorFunc::VectorDistanceEuclidean)),
|
||||
"vector_concat" => Ok(Self::Vector(VectorFunc::VectorConcat)),
|
||||
"subvector" => Ok(Self::Vector(VectorFunc::VectorSlice)),
|
||||
"vector_slice" => Ok(Self::Vector(VectorFunc::VectorSlice)),
|
||||
_ => crate::bail_parse_error!("no such function: {}", name),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ use crate::types::{
|
||||
use crate::util::normalize_ident;
|
||||
use crate::vdbe::insn::InsertFlags;
|
||||
use crate::vdbe::registers_to_ref_values;
|
||||
use crate::vector::{subvector, vector_concat};
|
||||
use crate::vector::{vector_concat, vector_slice};
|
||||
use crate::{
|
||||
error::{
|
||||
LimboError, SQLITE_CONSTRAINT, SQLITE_CONSTRAINT_NOTNULL, SQLITE_CONSTRAINT_PRIMARYKEY,
|
||||
@@ -4563,7 +4563,7 @@ pub fn op_function(
|
||||
state.registers[*dest] = Register::Value(result);
|
||||
}
|
||||
VectorFunc::VectorSlice => {
|
||||
let result = subvector(&state.registers[*start_reg..*start_reg + arg_count])?;
|
||||
let result = vector_slice(&state.registers[*start_reg..*start_reg + arg_count])?;
|
||||
state.registers[*dest] = Register::Value(result)
|
||||
}
|
||||
},
|
||||
|
||||
@@ -128,7 +128,7 @@ pub fn vector_concat(args: &[Register]) -> Result<Value> {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn subvector(args: &[Register]) -> Result<Value> {
|
||||
pub fn vector_slice(args: &[Register]) -> Result<Value> {
|
||||
if args.len() != 3 {
|
||||
return Err(LimboError::ConversionError(
|
||||
"vector_sub requires exactly three arguments".to_string(),
|
||||
@@ -145,7 +145,7 @@ pub fn subvector(args: &[Register]) -> Result<Value> {
|
||||
));
|
||||
}
|
||||
|
||||
let result = vector_types::subvector(&vector, start_index as usize, length as usize)?;
|
||||
let result = vector_types::vector_slice(&vector, start_index as usize, length as usize)?;
|
||||
|
||||
match result.vector_type {
|
||||
VectorType::Float32 => Ok(vector_serialize_f32(result)),
|
||||
|
||||
@@ -334,7 +334,7 @@ pub fn vector_concat(v1: &Vector, v2: &Vector) -> Result<Vector> {
|
||||
})
|
||||
}
|
||||
|
||||
pub fn subvector(vector: &Vector, start_idx: usize, length: usize) -> Result<Vector> {
|
||||
pub fn vector_slice(vector: &Vector, start_idx: usize, length: usize) -> Result<Vector> {
|
||||
fn extract_bytes<T, const N: usize>(
|
||||
slice: &[T],
|
||||
start: usize,
|
||||
@@ -343,7 +343,7 @@ pub fn subvector(vector: &Vector, start_idx: usize, length: usize) -> Result<Vec
|
||||
) -> Result<Vec<u8>> {
|
||||
if start + len > slice.len() {
|
||||
return Err(LimboError::ConversionError(
|
||||
"Subvector range out of bounds".into(),
|
||||
"vector_slice range out of bounds".into(),
|
||||
));
|
||||
}
|
||||
|
||||
@@ -663,12 +663,12 @@ mod tests {
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_subvector() {
|
||||
fn test_vector_slice() {
|
||||
let input = "[1.0, 2.0, 3.0, 4.0, 5.0]";
|
||||
let value = Value::from_text(input);
|
||||
let vector = parse_string_vector(VectorType::Float32, &value).unwrap();
|
||||
|
||||
let result = subvector(&vector, 1, 3).unwrap();
|
||||
let result = vector_slice(&vector, 1, 3).unwrap();
|
||||
|
||||
assert_eq!(result.dims, 3);
|
||||
assert_eq!(result.vector_type, VectorType::Float32);
|
||||
|
||||
Reference in New Issue
Block a user