Repository navigation
Consolidate Shopify patches onto v0.9.30-shopify-patches - #38
Merged
Merged
Conversation
Intercepts raw HTTP responses before tonic-web gRPC-web framing to capture the actual response body when the server returns a non-gRPC response. This helps diagnose 'Invalid header bit N expected 0 or 1' errors by logging the HTTP status, content-type, and response body preview. (cherry picked from commit 11e180e)
vectorParseSqliteText stores each vector element in a 1025-byte stack buffer whose final byte must remain NUL. The length guard used `>`, so a 1025-character element overwrote that terminator before the guard fired; the following error path then formatted the buffer with `%s`, reading past the end of the stack buffer. Reject the element once it reaches MAX_FLOAT_CHAR_SZ characters so the terminator is preserved, regenerate the bundled amalgamations, and add boundary regression tests for every vector function that parses TEXT. (cherry picked from commit 553cb83)
libsql-sqlite3/test/rust_suite has no committed Cargo.lock, so CI resolves its transitive dependencies fresh on every run. Several of those now require a newer compiler than the pinned 1.85.0 (icu_* and wasm-encoder/wast declare rust-version 1.88; yoke-derive 0.8.3 declares none but uses str::from_utf8 as an inherent method, stabilized in 1.87). This breaks the Extensions Tests job and the rusttestwasm step of make-sqlite3 on main. Pin current stable (1.98.1) rather than the minimum that compiles today (1.88.0, verified green in CI), so crate MSRV bumps do not break CI again in the near term. Document the constraint next to the unlocked test crate. (cherry picked from commit e48d754)
CI compiles with RUSTFLAGS="-D warnings", so lints added since 1.85.0 fail the build: - mismatched_lifetime_syntaxes (new in 1.89): eleven signatures elide a lifetime on the input side (&self / &str) but hide it on the output type (Vec<Column>, PageHdrIter, CursorStep<S>, Cow<str>). Spell the output lifetime as '_ as the compiler suggests. No semantic change; this is the lifetime rustc already inferred. - unused_assignments: `frameno` in bottomless-cli's restore loop was only ever copied into BatchReader::new and then incremented, never read. BatchReader tracks its own next_frame_no and the function returns the separate last_received_frame_no, so the local was dead since it was introduced in 4a71b20. Remove it and pass first_frame_no directly. Verified locally on 1.98.1 with the same flags as CI: cargo check --all-targets --all-features, cargo fmt --check, and cargo check -p libsql --no-default-features for core/replication/remote. (cherry picked from commit c22cc62)
mostafa-yassine
approved these changes
Oct 2, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Make
v0.9.30-shopify-patcheshold every Shopify change. This PR brings in the work that landed elsewhere.Today the shipped code and
mainhave split:libsql-rs-v0.9.30+connection-initialization-patch+admin-metrics-auth-exempt(856b4d2020, this branch's tip).+diagnostic-loggingis a sibling tag. It is not in the deployed tag.main. No consumer has them.Commits (cherry-picked with
-x, no code changes)11e180eaddAdd diagnostic logging for non-gRPC HTTP responses (from tag+diagnostic-logging)553cb83a9cFix out-of-bounds read when formatting overlong vector text elements (Fix out-of-bounds read when formatting overlong vector text elements #32)e48d754dbeBump pinned Rust toolchain to 1.98.1 (Bump pinned Rust toolchain to 1.98.1 #34)c22cc620e8Fix lints surfaced by Rust 1.98.1 under-D warnings(Bump pinned Rust toolchain to 1.98.1 #34)All four apply with no conflicts.
git range-diffshows only the addedcherry picked fromtrailer.Verification
Ran locally on 1.98.1 with
RUSTFLAGS="-D warnings --cfg tokio_unstable":cargo fmt --checkcargo check --all-targets --all-featurescargo check -p libsql --no-default-features --features {core,replication,remote}All clean.
Merge
Use a merge commit, not squash. Separate commits keep each patch easy to drop or replay on a new upstream base.
After merge
libsql-rs-v0.9.30+shopify.1.Plan: make this branch the default branch and keep
mainas an upstream mirror.