Releases: porcupin26/skaidb-ruby
Release list
v1.0.3
Release automation: published from GitHub Actions. No code change.
Changed
- The gemspec no longer sets
rubygems_mfa_required: rubygems.org refused
the 1.0.2 push with "Rubygem requires owners to enable MFA" because the
account behind the CI key has no MFA yet. Put it back once MFA ("UI and
gem signin") is enabled on that account. publish.ymlturns a refused push into an actionable error (MFA to
enable, or a key without the push scope) instead of a bare exit code.
Install: gem install skaidb (https://rubygems.org/gems/skaidb), or gem "skaidb", "~> 1.0" in a Gemfile. The built skaidb-1.0.3.gem is attached below for installs without registry access (gem install ./skaidb-1.0.3.gem).
v1.0.1
Published to RubyGems.org as skaidb.
Install instructions only; no code change.
Changed
- Install:
gem install skaidb, orgem "skaidb", "~> 1.0"in a Gemfile.
The README,docs/getting-started.mdand the release notes no longer
point at the GitHub release asset or the git tag as the install channel;
the built.gemstays attached to every GitHub release.
Install: gem install skaidb (https://rubygems.org/gems/skaidb), or gem "skaidb", "~> 1.0" in a Gemfile. The built skaidb-1.0.1.gem is attached below for installs without registry access (gem install ./skaidb-1.0.1.gem).
v1.0.0
First release as a standalone repository
(github.com/porcupin26/skaidb-ruby), carrying its full history over from
the skaidb monorepo. The version series restarts at 1.0.0. This is also the
first release verified end to end against a live skaidb server (connect,
DDL, typed inserts of every value type, bound SELECT, UPDATE counts,
batches, a 2 500-row stream, error handling, and the drivers table showing
ruby / 1.0.0).
Added
Skaidb::Uuid: a value wrapper so a UUID can be bound with the Uuid type
tag (Skaidb::Uuid.new(str),.random,.from_bytes); results still
decode to the canonical String, and aUuidcompares equal to it.- Typed binding of
BigDecimal(Decimal, exact 128-bit mantissa + scale)
and of binary Strings (Encoding::BINARY→ Bytes) on the prepared path.
Before, aBigDecimalparameter raisedcannot bind value of type BigDecimaland raw bytes were sent as a String. Symbolparameters bind as String.- Unit tests with an in-process fake server (framing, SCRAM-SHA-256,
Hello, the value codec for every type, prepare/execute with typed
parameters,exec_batch, streaming chunks including the abandon/drain
rule, multi-set replies, failover, reconnect, the pool,subscribe), a
Hello-version-equals-package-version check, and a live end-to-end test
(test/live/, opt-in withSKAIDB_LIVE=1, skipped otherwise). - CI on Ruby 3.1, 3.2, 3.3 and 3.4; a publish workflow on
v*tags that
gates on tag == version, attaches the built gem to a GitHub Release and
pushes to RubyGems.org only whenRUBYGEMS_API_KEYis configured. - Documentation: README plus
docs/(getting started, API reference,
types, TLS, streaming, pooling) and runnableexamples/. LICENSE(SSPL-1.0),CHANGELOG.md,Rakefile,.gitignore.
Fixed
- README: the Examples section claimed every script takes
host port user password [database];tls.rbtakes[ca.crt]instead of a database and
subscribe.rbtakes a further[stream]. Each script's arguments are now
listed. Timeparameters were converted to milliseconds throughFloat
(to_f * 1000), which can be off by one millisecond for some instants;
the conversion is now exact (Rational) and truncates towards negative
infinity, so a decoded Timestamp equals the bound one.- An
Integeroutside the signed 64-bit range raised a rawRangeError
frompack; it now raisesSkaidb::QueryErrornaming the limit. - When the server refused to prepare a statement and the client-side
fallback could not render a parameter (an Array or a Hash), the error was
cannot bind value of type Array, hiding the real cause — usually a SQL
mistake such as a reserved word used as a column name. The server's reason
for the refusal is now appended to that error. - A bare
?in a statement that has parameters was sent to the server as
a placeholder and failed late withstatement expects N parameters, got 0; it is now rejected before anything is sent, with a message saying the
driver's placeholders are$1, $2, …. - The frame read buffer is created as a binary String, so appending socket
bytes can never trigger an encoding conversion. - On the prepared path (
exec_params,exec_batch) a parameter that no
$Nplaceholder referenced was dropped silently:exec_params("… WHERE id = $1", [1, "extra"])ran, and a batch row one value too long was
truncated to the placeholders and applied. Both now raiseQueryError
(more parameters (N) than placeholders ($M)) before anything is sent,
as the text path always did. - Documentation: a Document result's
Hashkeys arrive in the order the
server sends them (it stores documents with keys sorted at every level),
not in binding order as the type tables claimed; the Install section says
that Bundler compilesbigdecimalfrom RubyGems.org, which needs the Ruby
headers and a C toolchain.
Changed
- The version is defined once, as
Skaidb::VERSIONinlib/skaidb.rb; the
gemspec reads it and the Hello frame carries it, and CI asserts both. - Gem metadata: homepage, source, changelog, documentation and bug-tracker
URLs point at this repository; licenseSSPL-1.0;LICENSEand
CHANGELOG.mdship in the gem;bigdecimalis declared as a dependency
because it is a bundled gem since Ruby 3.4. - The example moved to
examples/basic.rb.
Install: download skaidb-1.0.0.gem below and run gem install ./skaidb-1.0.0.gem, or gem 'skaidb', git: 'https://github.com/porcupin26/skaidb-ruby', tag: 'v1.0.0' in a Gemfile.