diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index c45b47565..e485327de 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -111,7 +111,7 @@ format, enabling: **Crate name**: `sqlite-diff-rs` (on crates.io) **Edition**: 2024, **License**: MIT -**Repository**: +**Repository**: ### Key Design Decisions diff --git a/Cargo.toml b/Cargo.toml index 0a9d3db9f..91e230ddd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,7 +5,7 @@ edition = "2024" rust-version = "1.87" description = "Build SQLite changeset and patchset binary formats programmatically, without SQLite" license = "MIT" -repository = "https://github.com/LucaCappelletti94/sqlite-diff-rs" +repository = "https://github.com/connetto-rs/sqlite-diff-rs" documentation = "https://docs.rs/sqlite-diff-rs" readme = "README.md" keywords = ["sqlite", "changeset", "patchset", "session", "cdc"] diff --git a/README.md b/README.md index d727c6218..385b4bf2a 100644 --- a/README.md +++ b/README.md @@ -2,10 +2,10 @@ [![Crates.io](https://img.shields.io/crates/v/sqlite-diff-rs.svg)](https://crates.io/crates/sqlite-diff-rs) [![Documentation](https://docs.rs/sqlite-diff-rs/badge.svg)](https://docs.rs/sqlite-diff-rs) -[![CI](https://github.com/LucaCappelletti94/sqlite-diff-rs/actions/workflows/ci.yml/badge.svg)](https://github.com/LucaCappelletti94/sqlite-diff-rs/actions/workflows/ci.yml) -[![AddressSanitizer](https://github.com/LucaCappelletti94/sqlite-diff-rs/actions/workflows/asan.yml/badge.svg)](https://github.com/LucaCappelletti94/sqlite-diff-rs/actions/workflows/asan.yml) -[![Codecov](https://codecov.io/gh/LucaCappelletti94/sqlite-diff-rs/branch/main/graph/badge.svg)](https://codecov.io/gh/LucaCappelletti94/sqlite-diff-rs) -[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/LucaCappelletti94/sqlite-diff-rs/blob/main/LICENSE) +[![CI](https://github.com/connetto-rs/sqlite-diff-rs/actions/workflows/ci.yml/badge.svg)](https://github.com/connetto-rs/sqlite-diff-rs/actions/workflows/ci.yml) +[![AddressSanitizer](https://github.com/connetto-rs/sqlite-diff-rs/actions/workflows/asan.yml/badge.svg)](https://github.com/connetto-rs/sqlite-diff-rs/actions/workflows/asan.yml) +[![Codecov](https://codecov.io/gh/connetto-rs/sqlite-diff-rs/branch/main/graph/badge.svg)](https://codecov.io/gh/connetto-rs/sqlite-diff-rs) +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/connetto-rs/sqlite-diff-rs/blob/main/LICENSE) A Rust library for building SQLite [changeset and patchset](https://www.sqlite.org/sessionintro.html) binary formats programmatically. @@ -214,4 +214,4 @@ This crate is `no_std` compatible (requires `alloc`). It can be used in embedded ## License -MIT License, see [LICENSE](https://github.com/LucaCappelletti94/sqlite-diff-rs/blob/main/LICENSE) for details. +MIT License, see [LICENSE](https://github.com/connetto-rs/sqlite-diff-rs/blob/main/LICENSE) for details. diff --git a/REPORT.md b/REPORT.md index 326355842..fe66b0118 100644 --- a/REPORT.md +++ b/REPORT.md @@ -12,7 +12,7 @@ The downsides are limited compressibility (the binary encoding leaves little red ## Binary Format Overview -![Changeset vs Patchset binary wire format](https://raw.githubusercontent.com/LucaCappelletti94/sqlite-diff-rs/main/docs/format_illustration.svg) +![Changeset vs Patchset binary wire format](https://raw.githubusercontent.com/connetto-rs/sqlite-diff-rs/main/docs/format_illustration.svg) Both formats share the same container structure: one or more table sections, each with a header followed by change records. @@ -42,7 +42,7 @@ Both formats share the same container structure: one or more table sections, eac Comparison of seven serialization formats for identical database operations on a realistic chat schema with UUID primary keys. -![Payload Size vs Operation Count](https://raw.githubusercontent.com/LucaCappelletti94/sqlite-diff-rs/main/integration-tests/payload-size-bench/plots/ops_scaling.svg) +![Payload Size vs Operation Count](https://raw.githubusercontent.com/connetto-rs/sqlite-diff-rs/main/integration-tests/payload-size-bench/plots/ops_scaling.svg) ### Single Operations (bytes) @@ -81,13 +81,13 @@ Protobuf wins on single operations because field numbers take 1 to 2 bytes inste ### Compression Behavior -![Deflate compression](https://raw.githubusercontent.com/LucaCappelletti94/sqlite-diff-rs/main/integration-tests/payload-size-bench/plots/deflate.svg) +![Deflate compression](https://raw.githubusercontent.com/connetto-rs/sqlite-diff-rs/main/integration-tests/payload-size-bench/plots/deflate.svg) -![LZ4 compression](https://raw.githubusercontent.com/LucaCappelletti94/sqlite-diff-rs/main/integration-tests/payload-size-bench/plots/lz4.svg) +![LZ4 compression](https://raw.githubusercontent.com/connetto-rs/sqlite-diff-rs/main/integration-tests/payload-size-bench/plots/lz4.svg) -![Zstd compression](https://raw.githubusercontent.com/LucaCappelletti94/sqlite-diff-rs/main/integration-tests/payload-size-bench/plots/zstd.svg) +![Zstd compression](https://raw.githubusercontent.com/connetto-rs/sqlite-diff-rs/main/integration-tests/payload-size-bench/plots/zstd.svg) -![Compressor comparison for patchset](https://raw.githubusercontent.com/LucaCappelletti94/sqlite-diff-rs/main/integration-tests/payload-size-bench/plots/compressor_comparison_patchset.svg) +![Compressor comparison for patchset](https://raw.githubusercontent.com/connetto-rs/sqlite-diff-rs/main/integration-tests/payload-size-bench/plots/compressor_comparison_patchset.svg) The binary format's compact encoding leaves limited redundancy for compressors. Text-based formats compress more dramatically but still end up larger than uncompressed patchsets. For bandwidth-constrained scenarios, patchsets offer a good balance without compression overhead. @@ -101,7 +101,7 @@ Benchmarks comparing four methods for applying changes to SQLite databases. #### Integer Primary Key -![Method comparison int_pk](https://raw.githubusercontent.com/LucaCappelletti94/sqlite-diff-rs/main/integration-tests/apply-bench-report/plots/method_int_pk.svg) +![Method comparison int_pk](https://raw.githubusercontent.com/connetto-rs/sqlite-diff-rs/main/integration-tests/apply-bench-report/plots/method_int_pk.svg) | Method | Median | Speedup vs SQL | |--------|-------:|---------------:| @@ -112,7 +112,7 @@ Benchmarks comparing four methods for applying changes to SQLite databases. #### UUID Primary Key -![Method comparison uuid_pk](https://raw.githubusercontent.com/LucaCappelletti94/sqlite-diff-rs/main/integration-tests/apply-bench-report/plots/method_uuid_pk.svg) +![Method comparison uuid_pk](https://raw.githubusercontent.com/connetto-rs/sqlite-diff-rs/main/integration-tests/apply-bench-report/plots/method_uuid_pk.svg) | Method | Median | Speedup vs SQL | |--------|-------:|---------------:| @@ -125,19 +125,19 @@ Benchmarks comparing four methods for applying changes to SQLite databases. #### Integer PK -![Scaling int_pk empty](https://raw.githubusercontent.com/LucaCappelletti94/sqlite-diff-rs/main/integration-tests/apply-bench-report/plots/scaling_int_pk_empty.svg) -![Scaling int_pk populated](https://raw.githubusercontent.com/LucaCappelletti94/sqlite-diff-rs/main/integration-tests/apply-bench-report/plots/scaling_int_pk_populated.svg) +![Scaling int_pk empty](https://raw.githubusercontent.com/connetto-rs/sqlite-diff-rs/main/integration-tests/apply-bench-report/plots/scaling_int_pk_empty.svg) +![Scaling int_pk populated](https://raw.githubusercontent.com/connetto-rs/sqlite-diff-rs/main/integration-tests/apply-bench-report/plots/scaling_int_pk_populated.svg) #### UUID PK -![Scaling uuid_pk empty](https://raw.githubusercontent.com/LucaCappelletti94/sqlite-diff-rs/main/integration-tests/apply-bench-report/plots/scaling_uuid_pk_empty.svg) -![Scaling uuid_pk populated](https://raw.githubusercontent.com/LucaCappelletti94/sqlite-diff-rs/main/integration-tests/apply-bench-report/plots/scaling_uuid_pk_populated.svg) +![Scaling uuid_pk empty](https://raw.githubusercontent.com/connetto-rs/sqlite-diff-rs/main/integration-tests/apply-bench-report/plots/scaling_uuid_pk_empty.svg) +![Scaling uuid_pk populated](https://raw.githubusercontent.com/connetto-rs/sqlite-diff-rs/main/integration-tests/apply-bench-report/plots/scaling_uuid_pk_populated.svg) ### Configuration Impact (indexes, triggers, foreign keys) #### Integer PK -![Config variants int_pk](https://raw.githubusercontent.com/LucaCappelletti94/sqlite-diff-rs/main/integration-tests/apply-bench-report/plots/config_int_pk.svg) +![Config variants int_pk](https://raw.githubusercontent.com/connetto-rs/sqlite-diff-rs/main/integration-tests/apply-bench-report/plots/config_int_pk.svg) | Config | SQL overhead | Patchset overhead | |--------|-------------:|------------------:| @@ -148,11 +148,11 @@ Benchmarks comparing four methods for applying changes to SQLite databases. #### UUID PK -![Config variants uuid_pk](https://raw.githubusercontent.com/LucaCappelletti94/sqlite-diff-rs/main/integration-tests/apply-bench-report/plots/config_uuid_pk.svg) +![Config variants uuid_pk](https://raw.githubusercontent.com/connetto-rs/sqlite-diff-rs/main/integration-tests/apply-bench-report/plots/config_uuid_pk.svg) ### Primary Key Type Impact -![PK comparison](https://raw.githubusercontent.com/LucaCappelletti94/sqlite-diff-rs/main/integration-tests/apply-bench-report/plots/pk_comparison.svg) +![PK comparison](https://raw.githubusercontent.com/connetto-rs/sqlite-diff-rs/main/integration-tests/apply-bench-report/plots/pk_comparison.svg) | Method | int_pk | uuid_pk | Overhead | |--------|-------:|--------:|---------:| diff --git a/docs/infographic.svg b/docs/infographic.svg index a0248508d..20d488954 100644 --- a/docs/infographic.svg +++ b/docs/infographic.svg @@ -81,7 +81,7 @@ SQLite Changeset & Patchset Format Binary wire format for database change synchronization Format specification: SQLite 3.9.0 (October 2015) - sqlite-diff-rs: Pure Rust implementation (February 2026), github.com/LucaCappelletti94/sqlite-diff-rs + sqlite-diff-rs: Pure Rust implementation (February 2026), github.com/connetto-rs/sqlite-diff-rs @@ -820,6 +820,6 @@ sqlite-diff-rs Pure Rust implementation of SQLite changeset/patchset format - github.com/LucaCappelletti94/sqlite-diff-rs + github.com/connetto-rs/sqlite-diff-rs diff --git a/fuzz/Cargo.lock b/fuzz/Cargo.lock index 27d32c321..d909d502f 100644 --- a/fuzz/Cargo.lock +++ b/fuzz/Cargo.lock @@ -532,7 +532,7 @@ dependencies = [ [[package]] name = "sqlite-diff-rs" -version = "0.15.0" +version = "0.16.0" dependencies = [ "arbitrary", "hashbrown 0.17.1", diff --git a/integration-tests/schema-aware-roundtrip/Cargo.lock b/integration-tests/schema-aware-roundtrip/Cargo.lock index 1d77dd5dd..50beedbb5 100644 --- a/integration-tests/schema-aware-roundtrip/Cargo.lock +++ b/integration-tests/schema-aware-roundtrip/Cargo.lock @@ -517,7 +517,7 @@ dependencies = [ [[package]] name = "diesel" version = "2.3.14" -source = "git+https://github.com/diesel-rs/diesel#0c16ef378803671f19cdc3cdb986990a0c5e6cfd" +source = "git+https://github.com/diesel-rs/diesel#1b921d29b9e0e5021f5b0c8276cc164f5aca54ac" dependencies = [ "bitflags 2.13.2", "byteorder", @@ -535,7 +535,7 @@ dependencies = [ [[package]] name = "diesel-sqlite-session" version = "0.1.0" -source = "git+https://github.com/LucaCappelletti94/diesel-sqlite-session#398c5e8399ca16e3a0c31fb3919907ece317e58b" +source = "git+https://github.com/connetto-rs/diesel-sqlite-session#3a2e7f728e14339ee60dc4cca3e8edc741449feb" dependencies = [ "diesel", "libsqlite3-sys", @@ -546,7 +546,7 @@ dependencies = [ [[package]] name = "diesel_attribute_parser" version = "0.1.0" -source = "git+https://github.com/diesel-rs/diesel#0c16ef378803671f19cdc3cdb986990a0c5e6cfd" +source = "git+https://github.com/diesel-rs/diesel#1b921d29b9e0e5021f5b0c8276cc164f5aca54ac" dependencies = [ "proc-macro2", "quote", @@ -556,7 +556,7 @@ dependencies = [ [[package]] name = "diesel_derives" version = "2.3.10" -source = "git+https://github.com/diesel-rs/diesel#0c16ef378803671f19cdc3cdb986990a0c5e6cfd" +source = "git+https://github.com/diesel-rs/diesel#1b921d29b9e0e5021f5b0c8276cc164f5aca54ac" dependencies = [ "diesel_attribute_parser", "diesel_table_macro_syntax", @@ -569,7 +569,7 @@ dependencies = [ [[package]] name = "diesel_table_macro_syntax" version = "0.3.0" -source = "git+https://github.com/diesel-rs/diesel#0c16ef378803671f19cdc3cdb986990a0c5e6cfd" +source = "git+https://github.com/diesel-rs/diesel#1b921d29b9e0e5021f5b0c8276cc164f5aca54ac" dependencies = [ "syn 3.0.8", ] @@ -617,7 +617,7 @@ checksum = "117240f60069e65410b3ae1bb213295bd828f707b5bec6596a1afc8793ce0cbc" [[package]] name = "dsl_auto_type" version = "0.2.0" -source = "git+https://github.com/diesel-rs/diesel#0c16ef378803671f19cdc3cdb986990a0c5e6cfd" +source = "git+https://github.com/diesel-rs/diesel#1b921d29b9e0e5021f5b0c8276cc164f5aca54ac" dependencies = [ "darling", "either", @@ -2297,7 +2297,7 @@ dependencies = [ [[package]] name = "sqlite-diff-rs" -version = "0.15.0" +version = "0.16.0" dependencies = [ "hashbrown 0.17.1", "indexmap 2.14.2", diff --git a/integration-tests/schema-aware-roundtrip/Cargo.toml b/integration-tests/schema-aware-roundtrip/Cargo.toml index a3a6feaf1..74703095a 100644 --- a/integration-tests/schema-aware-roundtrip/Cargo.toml +++ b/integration-tests/schema-aware-roundtrip/Cargo.toml @@ -27,7 +27,7 @@ sqlite-diff-rs = { path = "../..", default-features = false, features = [ "maxwell", ] } diesel = { git = "https://github.com/diesel-rs/diesel", features = ["sqlite", "mysql"] } -diesel-sqlite-session = { git = "https://github.com/LucaCappelletti94/diesel-sqlite-session" } +diesel-sqlite-session = { git = "https://github.com/connetto-rs/diesel-sqlite-session" } testcontainers = "0.27" tokio = { version = "1", features = ["full"] } tokio-postgres = "0.7"