Skip to content

Commit 199e1bc

Browse files
committed
fix tests post rebase
1 parent 365c3e1 commit 199e1bc

1 file changed

Lines changed: 31 additions & 4 deletions

File tree

ffi/src/scan.rs

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1729,11 +1729,18 @@ mod tests {
17291729
free_scan, scan_builder, scan_builder_build, scan_builder_with_predicate,
17301730
scan_declarative_metadata_plan, EnginePredicate,
17311731
};
1732+
use crate::error::EngineExecResult;
17321733
use crate::expressions::kernel_visitor::{
17331734
visit_expression_literal_bool, KernelExpressionVisitorState,
17341735
};
1735-
use crate::ffi_test_utils::{ok_or_panic, setup_snapshot};
1736-
use crate::{free_engine, free_snapshot, OptionalValue};
1736+
use crate::ffi_test_utils::{allocate_err, ok_or_panic, setup_snapshot};
1737+
use crate::handle::Handle;
1738+
use crate::plans::result::CPlanResult;
1739+
use crate::plans::{get_plan_based_engine, get_plan_executor};
1740+
use crate::{
1741+
free_engine, free_snapshot, KernelBytesSlice, NullableCvoid, OptionalValue,
1742+
SharedExternEngine,
1743+
};
17371744

17381745
extern "C" fn visit_false(
17391746
_predicate: *mut c_void,
@@ -1742,6 +1749,22 @@ mod tests {
17421749
visit_expression_literal_bool(state, false)
17431750
}
17441751

1752+
extern "C" fn unreachable_executor(
1753+
_context: NullableCvoid,
1754+
_plan_proto: KernelBytesSlice,
1755+
_out: *mut EngineExecResult<CPlanResult>,
1756+
) {
1757+
unreachable!("plan executor does not run: these tables have no checkpoint");
1758+
}
1759+
1760+
/// Wrap a fallback engine in a `PlanBasedEngine` so it exposes a `PlanExecutor`.
1761+
unsafe fn plan_based_engine(
1762+
fallback: &Handle<SharedExternEngine>,
1763+
) -> Handle<SharedExternEngine> {
1764+
let executor = unsafe { get_plan_executor(None, unreachable_executor) };
1765+
unsafe { get_plan_based_engine(executor, fallback.shallow_copy(), allocate_err) }
1766+
}
1767+
17451768
#[tokio::test]
17461769
async fn returns_query_plan_bytes() {
17471770
let (engine, snapshot) = setup_snapshot(actions_to_string(vec![
@@ -1753,9 +1776,10 @@ mod tests {
17531776

17541777
let builder = unsafe { scan_builder(snapshot.shallow_copy()) };
17551778
let scan = unsafe { ok_or_panic(scan_builder_build(builder, engine.shallow_copy())) };
1779+
let plan_engine = unsafe { plan_based_engine(&engine) };
17561780

17571781
let result = unsafe {
1758-
scan_declarative_metadata_plan(scan.shallow_copy(), engine.shallow_copy())
1782+
scan_declarative_metadata_plan(scan.shallow_copy(), plan_engine.shallow_copy())
17591783
};
17601784
let bytes = match ok_or_panic(result) {
17611785
OptionalValue::Some(bytes) => unsafe { bytes.into_vec() },
@@ -1770,6 +1794,7 @@ mod tests {
17701794

17711795
unsafe { free_scan(scan) };
17721796
unsafe { free_snapshot(snapshot) };
1797+
unsafe { free_engine(plan_engine) };
17731798
unsafe { free_engine(engine) };
17741799
}
17751800

@@ -1795,9 +1820,10 @@ mod tests {
17951820
))
17961821
};
17971822
let scan = unsafe { ok_or_panic(scan_builder_build(builder, engine.shallow_copy())) };
1823+
let plan_engine = unsafe { plan_based_engine(&engine) };
17981824

17991825
let result = unsafe {
1800-
scan_declarative_metadata_plan(scan.shallow_copy(), engine.shallow_copy())
1826+
scan_declarative_metadata_plan(scan.shallow_copy(), plan_engine.shallow_copy())
18011827
};
18021828
assert!(
18031829
matches!(ok_or_panic(result), OptionalValue::None),
@@ -1806,6 +1832,7 @@ mod tests {
18061832

18071833
unsafe { free_scan(scan) };
18081834
unsafe { free_snapshot(snapshot) };
1835+
unsafe { free_engine(plan_engine) };
18091836
unsafe { free_engine(engine) };
18101837
}
18111838
}

0 commit comments

Comments
 (0)