Merge 'core/vtab: Mark VTabModuleImpl as Send and Sync' from Pekka Enberg

Reviewed-by: Jussi Saurio <jussi.saurio@gmail.com>

Closes #3171
This commit is contained in:
Pekka Enberg
2025-09-17 12:25:12 +03:00
committed by GitHub
2 changed files with 7 additions and 2 deletions

View File

@@ -429,7 +429,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,
@@ -444,7 +444,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,