From 60191e7c7b77869bc789d8bb7146e7317d101567 Mon Sep 17 00:00:00 2001 From: Pekka Enberg Date: Mon, 30 Jun 2025 10:23:40 +0300 Subject: [PATCH] Move series extension to core It's part of upstream SQLite too. --- Cargo.lock | 22 ---------------- Cargo.toml | 2 -- core/Cargo.toml | 3 ++- core/ext/mod.rs | 2 ++ core/lib.rs | 2 ++ .../series/src/lib.rs => core/series.rs | 9 ++++--- extensions/series/Cargo.toml | 25 ------------------- 7 files changed, 12 insertions(+), 53 deletions(-) rename extensions/series/src/lib.rs => core/series.rs (98%) delete mode 100644 extensions/series/Cargo.toml diff --git a/Cargo.lock b/Cargo.lock index 4f2f3d57a..22195a942 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -852,16 +852,6 @@ dependencies = [ "regex", ] -[[package]] -name = "env_logger" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a19187fea3ac7e84da7dacf48de0c45d63c6a76f9490dae389aead16c243fce3" -dependencies = [ - "log", - "regex", -] - [[package]] name = "env_logger" version = "0.10.2" @@ -1791,16 +1781,6 @@ dependencies = [ "turso_ext", ] -[[package]] -name = "limbo_series" -version = "0.1.0-pre.2" -dependencies = [ - "mimalloc", - "quickcheck", - "quickcheck_macros", - "turso_ext", -] - [[package]] name = "limbo_sim" version = "0.1.0-pre.2" @@ -2618,8 +2598,6 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "588f6378e4dd99458b60ec275b4477add41ce4fa9f64dcba6f15adccb19b50d6" dependencies = [ - "env_logger 0.8.4", - "log", "rand 0.8.5", ] diff --git a/Cargo.toml b/Cargo.toml index 1ead70d31..f5796bdae 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,7 +17,6 @@ members = [ "extensions/csv", "extensions/percentile", "extensions/regexp", - "extensions/series", "extensions/tests", "macros", "simulator", @@ -47,7 +46,6 @@ limbo_ipaddr = { path = "extensions/ipaddr", version = "0.1.0-pre.2" } turso_macros = { path = "macros", version = "0.1.0-pre.2" } limbo_percentile = { path = "extensions/percentile", version = "0.1.0-pre.2" } limbo_regexp = { path = "extensions/regexp", version = "0.1.0-pre.2" } -limbo_series = { path = "extensions/series", version = "0.1.0-pre.2" } turso_sqlite3_parser = { path = "vendored/sqlite3-parser", version = "0.1.0-pre.2" } limbo_uuid = { path = "extensions/uuid", version = "0.1.0-pre.2" } strum = { version = "0.26", features = ["derive"] } diff --git a/core/Cargo.toml b/core/Cargo.toml index 84658a177..21cf55315 100644 --- a/core/Cargo.toml +++ b/core/Cargo.toml @@ -15,7 +15,7 @@ path = "lib.rs" [features] antithesis = ["dep:antithesis_sdk"] -default = ["fs", "uuid", "time", "json"] +default = ["fs", "uuid", "time", "json", "series"] fs = ["turso_ext/vfs"] json = [] uuid = ["dep:uuid"] @@ -25,6 +25,7 @@ fuzz = [] omit_autovacuum = [] simulator = ["fuzz", "serde"] serde = ["dep:serde"] +series = [] [target.'cfg(target_os = "linux")'.dependencies] io-uring = { version = "0.7.5", optional = true } diff --git a/core/ext/mod.rs b/core/ext/mod.rs index 1517385e4..4d0cfdd7b 100644 --- a/core/ext/mod.rs +++ b/core/ext/mod.rs @@ -174,6 +174,8 @@ impl Connection { let mut ext_api = self.build_turso_ext(); #[cfg(feature = "uuid")] crate::uuid::register_extension(&mut ext_api); + #[cfg(feature = "series")] + crate::series::register_extension(&mut ext_api); #[cfg(feature = "fs")] { let vfslist = add_builtin_vfs_extensions(Some(ext_api)).map_err(|e| e.to_string())?; diff --git a/core/lib.rs b/core/lib.rs index ff12a6b0f..3c55a083a 100644 --- a/core/lib.rs +++ b/core/lib.rs @@ -16,6 +16,8 @@ mod pragma; mod pseudo; pub mod result; mod schema; +#[cfg(feature = "series")] +mod series; mod storage; #[allow(dead_code)] #[cfg(feature = "time")] diff --git a/extensions/series/src/lib.rs b/core/series.rs similarity index 98% rename from extensions/series/src/lib.rs rename to core/series.rs index 644121ba0..a4be8da78 100644 --- a/extensions/series/src/lib.rs +++ b/core/series.rs @@ -1,12 +1,15 @@ use std::sync::Arc; use turso_ext::{ - register_extension, Connection, ResultCode, VTabCursor, VTabKind, VTabModule, VTabModuleDerive, + Connection, ExtensionApi, ResultCode, VTabCursor, VTabKind, VTabModule, VTabModuleDerive, VTable, Value, }; -register_extension! { - vtabs: { GenerateSeriesVTabModule } +pub fn register_extension(ext_api: &mut ExtensionApi) { + // FIXME: Add macro magic to register functions automatically. + unsafe { + GenerateSeriesVTabModule::register_GenerateSeriesVTabModule(ext_api); + } } macro_rules! try_option { diff --git a/extensions/series/Cargo.toml b/extensions/series/Cargo.toml deleted file mode 100644 index 028cb3f7b..000000000 --- a/extensions/series/Cargo.toml +++ /dev/null @@ -1,25 +0,0 @@ -[package] -name = "limbo_series" -version.workspace = true -authors.workspace = true -edition.workspace = true -license.workspace = true -repository.workspace = true -description = "Limbo series extension" - -[features] -static = ["turso_ext/static"] - -[lib] -crate-type = ["cdylib", "lib"] - - -[dependencies] -turso_ext = { workspace = true, features = ["static"] } - -[target.'cfg(not(target_family = "wasm"))'.dependencies] -mimalloc = { version = "0.1", default-features = false } - -[dev-dependencies] -quickcheck = "1.0.3" -quickcheck_macros = "1.0.0"