From bc08548dc308416d9dd20f30fd4495d8ec0921b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mika=C3=ABl=20Francoeur?= Date: Fri, 22 Aug 2025 12:38:44 -0400 Subject: [PATCH] put json_each behind feature --- core/vtab.rs | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/core/vtab.rs b/core/vtab.rs index 1b60267d7..661552ca7 100644 --- a/core/vtab.rs +++ b/core/vtab.rs @@ -36,16 +36,6 @@ impl VirtualTable { } pub(crate) fn builtin_functions() -> Vec> { - let json_each = JsonEachVirtualTable {}; - - let json_each_virtual_table = VirtualTable { - name: json_each.name(), - columns: Self::resolve_columns(json_each.sql()) - .expect("internal table-valued function schema resolution should not fail"), - kind: VTabKind::TableValuedFunction, - vtab_type: VirtualTableType::Internal(Arc::new(RefCell::new(json_each))), - }; - let mut vtables: Vec> = PragmaVirtualTable::functions() .into_iter() .map(|(tab, schema)| { @@ -60,11 +50,27 @@ impl VirtualTable { }) .collect(); - vtables.push(Arc::new(json_each_virtual_table)); + #[cfg(feature = "json")] + vtables.extend(Self::json_virtual_tables()); vtables } + #[cfg(feature = "json")] + fn json_virtual_tables() -> Vec> { + let json_each = JsonEachVirtualTable {}; + + let json_each_virtual_table = VirtualTable { + name: json_each.name(), + columns: Self::resolve_columns(json_each.sql()) + .expect("internal table-valued function schema resolution should not fail"), + kind: VTabKind::TableValuedFunction, + vtab_type: VirtualTableType::Internal(Arc::new(RefCell::new(json_each))), + }; + + vec![Arc::new(json_each_virtual_table)] + } + pub(crate) fn function(name: &str, syms: &SymbolTable) -> crate::Result> { let module = syms.vtab_modules.get(name); let (vtab_type, schema) = if module.is_some() {