diff --git a/Cargo.lock b/Cargo.lock index f43f0c068..44ad79c98 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5915,9 +5915,9 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "turso_core" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58e5f09aaead5dfc87c5a22a2b3e95fb85e2d666e27e5f4a2474c42198af20ec" +checksum = "4fa832d4ab648bf139f1b18b29bef6d653b18fbd4a77b0e4846c57aaf28c215c" dependencies = [ "aegis", "aes 0.8.4", @@ -5987,9 +5987,9 @@ dependencies = [ [[package]] name = "turso_ext" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3902472c63d19191d5982d28542595d1babef787a8482175422ecf7f28100261" +checksum = "07d9b915ee3c37d552597b07c05c127702a926ca0eac8843f248d693f4368155" dependencies = [ "chrono", "getrandom 0.4.3", @@ -5998,9 +5998,9 @@ dependencies = [ [[package]] name = "turso_macros" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63bd5f0f7186707a8b4cf54bbaddff9056c218823befab15508ef6e7502c2340" +checksum = "476aa46d793a8aaae6d7a12f591d85eff039129264b1d441586528c88c3feacd" dependencies = [ "proc-macro2", "quote", @@ -6009,9 +6009,9 @@ dependencies = [ [[package]] name = "turso_parser" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25b6d3428f16fff69a13bf7f966628d9fc8e0d097fec6cd84ce1af3d5a9be6b1" +checksum = "7e03bf6489a80da2e9bf08f22d0b8af4eb391dfa5e6f71e787031cd61a921a3c" dependencies = [ "bitflags 2.13.2", "memchr", diff --git a/crates/bashkit/tests/integration/sqlite_differential_tests.rs b/crates/bashkit/tests/integration/sqlite_differential_tests.rs index c6de07119..c1a2ec932 100644 --- a/crates/bashkit/tests/integration/sqlite_differential_tests.rs +++ b/crates/bashkit/tests/integration/sqlite_differential_tests.rs @@ -58,8 +58,14 @@ macro_rules! require_sqlite3 { /// Run `sqlite3 :memory: ` with the given flags. Returns stdout /// (errors go through `unwrap` since we control the inputs). fn run_real_sqlite3(flags: &[&str], sql: &str) -> String { - let mut child = Command::new("sqlite3") - .args(flags) + let mut command = Command::new("sqlite3"); + command.args(flags); + // Newer host shells default CSV rows to CRLF. Pin our LF contract + // without normalizing embedded newlines inside quoted field values. + if flags.contains(&"-csv") { + command.args(["-cmd", r#".separator , "\n""#]); + } + let mut child = command .arg(":memory:") .stdin(Stdio::piped()) .stdout(Stdio::piped()) diff --git a/knowledge/operations/testing.md b/knowledge/operations/testing.md index 6d76f6094..c27e6ded1 100644 --- a/knowledge/operations/testing.md +++ b/knowledge/operations/testing.md @@ -295,6 +295,12 @@ Quarterly import process: 4. CI runs the same feature-complete, network-free lane. Schema, provenance, unique IDs, classifications, and limitation references are test-enforced. +## SQLite CLI Differential Tests + +CSV comparisons explicitly set the host CLI row separator to LF. SQLite +shell releases differ in their default CSV row endings (LF versus CRLF); +field contents, including embedded newlines, remain compared byte-for-byte. + ## Differential Fuzzing Grammar-based property testing using proptest generates random valid bash diff --git a/supply-chain/audits.toml b/supply-chain/audits.toml index 20610d2c7..46e1c37a2 100644 --- a/supply-chain/audits.toml +++ b/supply-chain/audits.toml @@ -607,7 +607,7 @@ notes = "Reviewed the 0.8.0-pre.14 -> 0.8.1 delta: the published source trees ar who = "Mykhailo Chalyi " criteria = "safe-to-deploy" delta = "0.8.1 -> 0.8.2" -notes = "Reviewed published 0.8.1 -> 0.8.2 source delta. Core CDC insert/update/delete emission now uses ColumnLayout physical register offsets and skips virtual columns, preventing virtual-column values from being read as physical registers; record sizing uses non-virtual columns. No new unsafe, ambient IO, execution, or dependencies. Extension, macros and parser source unchanged; manifests update package and sibling versions only." +notes = "Reviewed complete published package diff. Only Rust change fixes CDC UPDATE register indexing for virtual generated columns: skip virtual columns, use ColumnLayout.to_reg_offset, and consistently allocate and serialize twice num_non_virtual_cols registers. Both changed and unchanged column branches use the same mapping. No new unsafe code, host access, build scripts, or dependencies. Other changes are release metadata and matching Turso dependency versions." [[audits.turso_ext]] who = "Mykhailo Chalyi " @@ -631,7 +631,7 @@ notes = "Reviewed the 0.8.0-pre.14 -> 0.8.1 delta: the published source trees ar who = "Mykhailo Chalyi " criteria = "safe-to-deploy" delta = "0.8.1 -> 0.8.2" -notes = "Reviewed published 0.8.1 -> 0.8.2 source delta. Core CDC insert/update/delete emission now uses ColumnLayout physical register offsets and skips virtual columns, preventing virtual-column values from being read as physical registers; record sizing uses non-virtual columns. No new unsafe, ambient IO, execution, or dependencies. Extension, macros and parser source unchanged; manifests update package and sibling versions only." +notes = "Reviewed complete published package diff. Source files are byte-identical; only Cargo.toml, Cargo.lock, and .cargo_vcs_info.json release metadata changes. No runtime, unsafe, host access, or build-script changes." [[audits.turso_macros]] who = "Mykhailo Chalyi " @@ -655,7 +655,7 @@ notes = "Reviewed the 0.8.0-pre.14 -> 0.8.1 delta: the published source trees ar who = "Mykhailo Chalyi " criteria = "safe-to-deploy" delta = "0.8.1 -> 0.8.2" -notes = "Reviewed published 0.8.1 -> 0.8.2 source delta. Core CDC insert/update/delete emission now uses ColumnLayout physical register offsets and skips virtual columns, preventing virtual-column values from being read as physical registers; record sizing uses non-virtual columns. No new unsafe, ambient IO, execution, or dependencies. Extension, macros and parser source unchanged; manifests update package and sibling versions only." +notes = "Reviewed complete published package diff. Source files are byte-identical; only Cargo.toml, Cargo.lock, and .cargo_vcs_info.json release metadata changes. No runtime, unsafe, host access, or build-script changes." [[audits.turso_parser]] who = "Mykhailo Chalyi " @@ -679,7 +679,7 @@ notes = "Reviewed the 0.8.0-pre.14 -> 0.8.1 delta: the published source trees ar who = "Mykhailo Chalyi " criteria = "safe-to-deploy" delta = "0.8.1 -> 0.8.2" -notes = "Reviewed published 0.8.1 -> 0.8.2 source delta. Core CDC insert/update/delete emission now uses ColumnLayout physical register offsets and skips virtual columns, preventing virtual-column values from being read as physical registers; record sizing uses non-virtual columns. No new unsafe, ambient IO, execution, or dependencies. Extension, macros and parser source unchanged; manifests update package and sibling versions only." +notes = "Reviewed complete published package diff. Source files are byte-identical; only Cargo.toml, Cargo.lock, and .cargo_vcs_info.json release metadata changes. No runtime, unsafe, host access, or build-script changes." [[audits.twox-hash]] who = "Mykhailo Chalyi "