rename subvector to vector_slice

This commit is contained in:
bit-aloo
2025-07-30 13:34:49 +05:30
parent b5d46803b5
commit 96a99ca48a
5 changed files with 11 additions and 11 deletions

View File

@@ -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

View File

@@ -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),
}
}

View File

@@ -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)
}
},

View File

@@ -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)),

View File

@@ -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);