core/vtab: Mark VTabModuleImpl as Send and Sync

This commit is contained in:
Pekka Enberg
2025-09-17 11:46:14 +03:00
parent 6472a71ae7
commit d7977c25a8
2 changed files with 7 additions and 2 deletions

View File

@@ -412,7 +412,7 @@ impl Drop for ExtVirtualTableCursor {
}
}
pub trait InternalVirtualTable: std::fmt::Debug {
pub trait InternalVirtualTable: std::fmt::Debug + Send + Sync {
fn name(&self) -> String;
fn open(
&self,
@@ -427,7 +427,7 @@ pub trait InternalVirtualTable: std::fmt::Debug {
fn sql(&self) -> String;
}
pub trait InternalVirtualTableCursor {
pub trait InternalVirtualTableCursor: Send + Sync {
/// next returns `Ok(true)` if there are more rows, and `Ok(false)` otherwise.
fn next(&mut self) -> Result<bool, LimboError>;
fn rowid(&self) -> i64;

View File

@@ -30,6 +30,11 @@ pub struct VTabModuleImpl {
pub best_idx: BestIdxFn,
}
// SAFETY: VTabModuleImpl contains function pointers and a name pointer that are
// immutable after creation and, therefore, safe to share between threads.
unsafe impl Send for VTabModuleImpl {}
unsafe impl Sync for VTabModuleImpl {}
#[repr(C)]
pub struct VTabCreateResult {
pub code: ResultCode,