mirror of
https://github.com/isar/rusqlite.git
synced 2025-10-29 04:48:55 +08:00
Introduce IndexConstraintUsage
This commit is contained in:
@@ -95,21 +95,13 @@ impl IndexInfo {
|
||||
}
|
||||
|
||||
/// if `argv_index` > 0, constraint is part of argv to xFilter
|
||||
pub fn set_argv_index(&mut self, constraint_idx: usize, argv_index: libc::c_int) {
|
||||
unsafe {
|
||||
let mut constraint_usages = slice::from_raw_parts_mut((*self.0).aConstraintUsage,
|
||||
(*self.0).nConstraint as usize);
|
||||
constraint_usages[constraint_idx].argvIndex = argv_index;
|
||||
}
|
||||
}
|
||||
/// if `omit`, do not code a test for this constraint
|
||||
pub fn set_omit(&mut self, constraint_idx: usize, omit: bool) {
|
||||
unsafe {
|
||||
let mut constraint_usages = slice::from_raw_parts_mut((*self.0).aConstraintUsage,
|
||||
(*self.0).nConstraint as usize);
|
||||
constraint_usages[constraint_idx].omit = if omit { 1 } else { 0 };
|
||||
}
|
||||
pub fn constraint_usage(&mut self, constraint_idx: usize) -> IndexConstraintUsage {
|
||||
let mut constraint_usages = unsafe {
|
||||
slice::from_raw_parts_mut((*self.0).aConstraintUsage, (*self.0).nConstraint as usize)
|
||||
};
|
||||
IndexConstraintUsage(&mut constraint_usages[constraint_idx])
|
||||
}
|
||||
|
||||
/// Number used to identify the index
|
||||
pub fn set_idx_num(&mut self, idx_num: libc::c_int) {
|
||||
unsafe {
|
||||
@@ -168,6 +160,19 @@ impl<'a> IndexConstraint<'a> {
|
||||
}
|
||||
}
|
||||
|
||||
pub struct IndexConstraintUsage<'a>(&'a mut ffi::Struct_sqlite3_index_constraint_usage);
|
||||
|
||||
impl<'a> IndexConstraintUsage<'a> {
|
||||
/// if `argv_index` > 0, constraint is part of argv to xFilter
|
||||
pub fn set_argv_index(&mut self, argv_index: libc::c_int) {
|
||||
self.0.argvIndex = argv_index;
|
||||
}
|
||||
/// if `omit`, do not code a test for this constraint
|
||||
pub fn set_omit(&mut self, omit: bool) {
|
||||
self.0.omit = if omit { 1 } else { 0 };
|
||||
}
|
||||
}
|
||||
|
||||
/// Virtual table cursor trait.
|
||||
pub trait VTabCursor<V: VTab<Self>>: Sized {
|
||||
/// Accessor to the associated virtual table.
|
||||
|
||||
Reference in New Issue
Block a user