diff --git a/.gitmodules b/.gitmodules index 60999020..183acde6 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,3 +4,6 @@ [submodule "vendor/sqlite-vec"] path = vendor/sqlite-vec url = https://github.com/ignatz/sqlite-vec.git +[submodule "vendor/serde_rusqlite"] + path = vendor/serde_rusqlite + url = https://github.com/ignatz/serde_rusqlite.git diff --git a/Cargo.lock b/Cargo.lock index a21f1064..c2aa6b07 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -119,7 +119,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" dependencies = [ "anstyle", - "anstyle-parse", + "anstyle-parse 0.2.7", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstream" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" +dependencies = [ + "anstyle", + "anstyle-parse 1.0.0", "anstyle-query", "anstyle-wincon", "colorchoice", @@ -129,9 +144,9 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" +checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" [[package]] name = "anstyle-parse" @@ -142,6 +157,15 @@ dependencies = [ "utf8parse", ] +[[package]] +name = "anstyle-parse" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" +dependencies = [ + "utf8parse", +] + [[package]] name = "anstyle-query" version = "1.1.5" @@ -638,9 +662,9 @@ dependencies = [ [[package]] name = "axum-tracing-opentelemetry" -version = "0.33.0" +version = "0.33.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dea2f3f7670fb07753f3d41fad35f95200141977a9473267bcd6a4ae2284c011" +checksum = "4bedd2c385488b22a3a35b664fbc7f8e755d3ec6720848bc106b80cb5ae18fd7" dependencies = [ "axum", "futures-core", @@ -969,9 +993,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.2.56" +version = "1.2.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" +checksum = "7a0dd1ca384932ff3641c8718a02769f1698e7563dc6974ffd03346116310423" dependencies = [ "find-msvc-tools", "jobserver", @@ -1102,9 +1126,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.60" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2797f34da339ce31042b27d23607e051786132987f595b02ba4f6a6dffb7030a" +checksum = "b193af5b67834b676abd72466a96c1024e6a6ad978a1f484bd90b85c94041351" dependencies = [ "clap_builder", "clap_derive", @@ -1112,11 +1136,11 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.60" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24a241312cea5059b13574bb9b3861cabf758b879c15190b37b6d6fd63ab6876" +checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" dependencies = [ - "anstream", + "anstream 1.0.0", "anstyle", "clap_lex", "strsim", @@ -1124,9 +1148,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.55" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a92793da1a46a5f2a02a6f4c46c6496b28c43638adea8306fcb0caa1634f24e5" +checksum = "1110bd8a634a1ab8cb04345d8d878267d57c3cf1b38d91b71af6686408bbca6a" dependencies = [ "heck", "proc-macro2", @@ -1136,9 +1160,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a822ea5bc7590f9d40f1ba12c0dc3c2760f3482c6984db1573ad11031420831" +checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" [[package]] name = "client-ip" @@ -1188,9 +1212,9 @@ dependencies = [ [[package]] name = "colorchoice" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" +checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" [[package]] name = "combine" @@ -1910,7 +1934,7 @@ version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2daee4ea451f429a58296525ddf28b45a3b64f1acf6587e2067437bb11e218d" dependencies = [ - "anstream", + "anstream 0.6.21", "anstyle", "env_filter", "jiff", @@ -2963,9 +2987,9 @@ dependencies = [ [[package]] name = "image" -version = "0.25.9" +version = "0.25.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6506c6c10786659413faa717ceebcb8f70731c0a60cbae39795fdf114519c1a" +checksum = "85ab80394333c02fe689eaf900ab500fbd0c2213da414687ebf995a65d5a6104" dependencies = [ "bytemuck", "byteorder-lite", @@ -3006,9 +3030,9 @@ dependencies = [ [[package]] name = "init-tracing-opentelemetry" -version = "0.36.0" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65deb51caab84a57b478f5d23ac418288cd04fbc112f94ccedae98c297b4d945" +checksum = "3910c652151948e4fb51a8c86cad13b8e3d36b9c4268060ca8456ddfad058749" dependencies = [ "opentelemetry", "opentelemetry-otlp", @@ -3349,9 +3373,9 @@ dependencies = [ [[package]] name = "libsqlite3-sys" -version = "0.36.0" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95b4103cffefa72eb8428cb6b47d6627161e51c2739fc5e3b734584157bc642a" +checksum = "b1f111c8c41e7c61a49cd34e44c7619462967221a6443b0ec299e0ac30cfb9b1" dependencies = [ "bindgen", "cc", @@ -3382,9 +3406,9 @@ checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" [[package]] name = "litegis" -version = "0.0.5" +version = "0.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79424339f43ca5f0c9e2573821f029481c9698f4441c22d71525b6633c94731f" +checksum = "fe8d88c3fbb8a8f69cc1d7a7e9e7f49991d3037017b6f3a4f060d22c6ff6fc1c" dependencies = [ "geos", "rusqlite", @@ -3523,6 +3547,12 @@ dependencies = [ "rustix 1.1.4", ] +[[package]] +name = "memo-map" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d1115007560874e373613744c6fba374c17688327a71c1476d1a5954cc857b" + [[package]] name = "mimalloc" version = "0.1.48" @@ -3565,10 +3595,11 @@ dependencies = [ [[package]] name = "minijinja" -version = "2.17.1" +version = "2.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ea5ea1e90055f200af6b8e52a4a34e05e77e7fee953a9fb40c631efdc43cab1" +checksum = "328251e58ad8e415be6198888fc207502727dc77945806421ab34f35bf012e7d" dependencies = [ + "memo-map", "serde", ] @@ -3601,9 +3632,9 @@ dependencies = [ [[package]] name = "moxcms" -version = "0.7.11" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac9557c559cd6fc9867e122e20d2cbefc9ca29d80d027a8e39310920ed2f0a97" +checksum = "bb85c154ba489f01b25c0d36ae69a87e4a1c73a72631fc6c0eb6dde34a73e44b" dependencies = [ "num-traits", "pxfm", @@ -3853,9 +3884,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "once_cell_polyfill" @@ -4303,9 +4334,9 @@ checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" [[package]] name = "portable-atomic-util" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a9db96d7fa8782dd8c15ce32ffe8680bbd1e978a43bf51a34d39483540495f5" +checksum = "091397be61a01d4be58e7841595bd4bfedb15f1cd54977d79b8271e94ed799a3" dependencies = [ "portable-atomic", ] @@ -4514,12 +4545,9 @@ dependencies = [ [[package]] name = "pxfm" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7186d3822593aa4393561d186d1393b3923e9d6163d3fbfd6e825e3e6cf3e6a8" -dependencies = [ - "num-traits", -] +checksum = "b5a041e753da8b807c9255f28de81879c78c876392ff2469cde94799b2896b9d" [[package]] name = "qrcodegen" @@ -4565,9 +4593,9 @@ dependencies = [ [[package]] name = "quick_cache" -version = "0.6.18" +version = "0.6.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ada44a88ef953a3294f6eb55d2007ba44646015e18613d2f213016379203ef3" +checksum = "530e84778a55de0f52645a51d4e3b9554978acd6a1e7cd50b6a6784692b3029e" dependencies = [ "ahash", "equivalent", @@ -5177,9 +5205,9 @@ dependencies = [ [[package]] name = "rusqlite" -version = "0.38.0" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1c93dd1c9683b438c392c492109cb702b8090b2bfc8fed6f6e4eb4523f17af3" +checksum = "a0d2b0146dd9661bf67bb107c0bb2a55064d556eeb3fc314151b957f313bcd4e" dependencies = [ "bitflags", "fallible-iterator", @@ -5447,9 +5475,9 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.28" +version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" +checksum = "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939" dependencies = [ "windows-sys 0.61.2", ] @@ -5637,12 +5665,12 @@ dependencies = [ [[package]] name = "serde_rusqlite" -version = "0.41.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5224145f7ea2188165a3ad4e856c4452474683cd7a72dab3325201f673a2b410" +version = "0.38.0" dependencies = [ "rusqlite", - "serde_core", + "serde", + "serde_bytes", + "serde_derive", ] [[package]] @@ -6011,9 +6039,9 @@ checksum = "016ef9739649996fcc983b9c588fe3d557cf216d4d98503ce1b057ab5a66d689" [[package]] name = "tempfile" -version = "3.26.0" +version = "3.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82a72c767771b47409d2345987fda8628641887d5466101319899796367354a0" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", "getrandom 0.4.2", @@ -6133,9 +6161,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" +checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" dependencies = [ "tinyvec_macros", ] @@ -6477,9 +6505,9 @@ dependencies = [ [[package]] name = "tracing-opentelemetry-instrumentation-sdk" -version = "0.32.3" +version = "0.32.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95d05242e88c440ef1bc997c7ae5e0ed76085c5d817ca29c0be12f0813b024e7" +checksum = "bc2a7ad7b8bd011f482d1fdf95be20377cdd19f45aa9d1f9f902d746eddc3cad" dependencies = [ "http", "opentelemetry", @@ -6500,9 +6528,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.22" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e" +checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" dependencies = [ "matchers", "nu-ansi-term", diff --git a/Cargo.toml b/Cargo.toml index 5834b165..a469ece9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -55,18 +55,18 @@ askama = { version = "0.15.1", default-features = false, features = ["derive", " axum = { version = "^0.8.1", features = ["multipart"] } base64 = { version = "0.22.1", default-features = false, features = ["alloc", "std"] } env_logger = { version = "^0.11.8", default-features = false, features = ["auto-color", "humantime"] } -libsqlite3-sys = { version = "0.36.0", default-features = false, features = ["bundled", "preupdate_hook"] } -litegis = { version = "0.0.5", default-features = false } +libsqlite3-sys = { version = "0.37.0", default-features = false, features = ["bundled", "preupdate_hook"] } +litegis = { version = "0.0.6", default-features = false } minijinja = { version = "2.1.2", default-features = false } parking_lot = { version = "0.12.3", default-features = false, features = ["send_guard", "arc_lock"] } rand = "^0.10.0" reqwest = { version = "0.13.1", default-features = false, features = ["rustls", "json"] } -rusqlite = { version = "0.38.0", default-features = false, features = ["bundled", "cache", "column_decltype", "functions", "backup", "preupdate_hook"] } +rusqlite = { version = "0.39.0", default-features = false, features = ["bundled", "cache", "column_decltype", "functions", "backup", "preupdate_hook"] } rust-embed = { version = "8.4.0", default-features = false, features = ["mime-guess"] } serde = { version = "^1.0.203", features = ["derive"] } serde_json = { version = "^1.0.117" } serde_qs = { version = "1.0.0", default-features = false, features = [] } -serde_rusqlite = { version = "0.41.1" } +serde_rusqlite = { path = "vendor/serde_rusqlite" } sqlite-vec = { path = "vendor/sqlite-vec/bindings/rust", default-features = false } tokio = { version = "^1.38.0", default-features = false, features = ["fs", "io-std", "macros", "net", "rt-multi-thread", "signal", "sync", "time"] } tracing = { version = "0.1.40", default-features = false } diff --git a/crates/extension/Cargo.toml b/crates/extension/Cargo.toml index 74e59aee..46042b0c 100644 --- a/crates/extension/Cargo.toml +++ b/crates/extension/Cargo.toml @@ -22,7 +22,7 @@ parking_lot = { workspace = true } quick_cache = { version = "0.6.18", default-features = false } regex = "1.11.0" # NOTE: rusqlite must not enable "bundled" for the .so built to work. -rusqlite = { version = "0.38.0", default-features = false, features = ["functions"] } +rusqlite = { version = "0.39.0", default-features = false, features = ["functions"] } serde = { workspace = true } serde_json = { workspace = true } thiserror = "2.0.12" diff --git a/crates/sqlite/src/connection.rs b/crates/sqlite/src/connection.rs index a9315e2d..982d3669 100644 --- a/crates/sqlite/src/connection.rs +++ b/crates/sqlite/src/connection.rs @@ -606,14 +606,18 @@ pub fn extract_record_values(case: &PreUpdateCase) -> Option> { .map(|idx| -> Value { accessor .get_new_column_value(idx) - .map_or(rusqlite::types::Value::Null, |v| v.into()) + .map_or(rusqlite::types::Value::Null, |v| { + v.try_into().unwrap_or(rusqlite::types::Value::Null) + }) }) .collect(), PreUpdateCase::Delete(accessor) => (0..accessor.get_column_count()) .map(|idx| -> rusqlite::types::Value { accessor .get_old_column_value(idx) - .map_or(rusqlite::types::Value::Null, |v| v.into()) + .map_or(rusqlite::types::Value::Null, |v| { + v.try_into().unwrap_or(rusqlite::types::Value::Null) + }) }) .collect(), PreUpdateCase::Update { @@ -623,7 +627,9 @@ pub fn extract_record_values(case: &PreUpdateCase) -> Option> { .map(|idx| -> rusqlite::types::Value { accessor .get_new_column_value(idx) - .map_or(rusqlite::types::Value::Null, |v| v.into()) + .map_or(rusqlite::types::Value::Null, |v| { + v.try_into().unwrap_or(rusqlite::types::Value::Null) + }) }) .collect(), PreUpdateCase::Unknown => { diff --git a/vendor/serde_rusqlite b/vendor/serde_rusqlite new file mode 160000 index 00000000..ec15ec4f --- /dev/null +++ b/vendor/serde_rusqlite @@ -0,0 +1 @@ +Subproject commit ec15ec4f4bef473c604862e17a571be90b799c56 diff --git a/vendor/sqlite-vec b/vendor/sqlite-vec index 3a0ce504..c709de0e 160000 --- a/vendor/sqlite-vec +++ b/vendor/sqlite-vec @@ -1 +1 @@ -Subproject commit 3a0ce5044cf9968d4d3bc147b5a3764650ca6ccc +Subproject commit c709de0eb876e1128a94a6d9729d260f4d30ebce