Blog
Updates, design notes, and deep dives from the SecantusDB project.
-
secantus-pg 0.1.0-beta.11: refusing a user there is no role for
Summary: secantus-pg 0.1.0-beta.11 adds
--refuse-unknown-users. With it, the Rust PostgreSQL server asks a user name it has no role for to give a password, and the login fails as it does on PostgreSQL. Without it nothing changes. Of 219 login scenarios run against PostgreSQL 15.19, all … -
secantus-mdb 0.5.3-beta.181 fixes distinct, singleBatch and tailable cursors
Summary: secantus-mdb 0.5.3-beta.181 makes distinct compare by value, singleBatch honour batchSize, tailable cursors keep their filter, and min and max bound index keys, after a comparison of the cursor commands with mongod.
distinctonsecantusd-rscould return the same number more than once.db.prices.insert_many([{"p … -
secantus-mdb 0.5.3-beta.180 holds transactions and retryable writes to mongod's rules
Summary: secantus-mdb 0.5.3-beta.180 checks the session fields on every command, remembers a retryable write statement by statement, reports a commit that failed, and aborts an abandoned transaction when its lifetime runs out.
If your tests use transactions or retryable writes on
secantusd-rs, upgrade. Four things in this … -
secantus-mdb 0.5.3-beta.179 stops $out dropping a collection's validator, and checks time-series collections
Summary: secantus-mdb 0.5.3-beta.179 makes $out keep its target's validator and indexes, and gives time-series collections the rules mongod applies: a checked definition, a date in every measurement, and meta-only updates.
If a pipeline on
secantusd-rsends in$outand the target collection has a validator or indexes … -
secantus-pg 0.1.0-beta.10: client certificates and channel binding
Summary: secantus-pg 0.1.0-beta.10 lets the Rust PostgreSQL server say what a TLS connection must show: a client certificate, one that names the user, or one in place of the password. A password login over TLS is offered SCRAM channel binding, the server can refuse a connection in …
-
secantus-mdb 0.5.3-beta.178 sorts and matches strings by collation the way mongod does
Summary: secantus-mdb 0.5.3-beta.178 replaces its hand-written collation with ICU4X, makes a collation reach aggregation, defaults and unique indexes, and fixes renameCollection dropping a collection's validator.
If your tests use a collation on
secantusd-rs, this release changes their answers, and the new ones aremongod's.people.find … -
secantus-pg 0.1.0-beta.9: TLS
Summary: secantus-pg 0.1.0-beta.9 offers TLS. Given a certificate and its key, the Rust PostgreSQL server completes the handshake a client asks for, and psycopg gets the same answer from it as from PostgreSQL 15.19 for every
sslmode. Channel binding and client certificates are not in it … -
secantus-pg 0.1.0-beta.8: a statement sent as text reuses its plan
Summary: secantus-pg 0.1.0-beta.8 plans an unprepared statement once per shape, not once per literal: one row by primary key with a different value each time went from 111 to 43 microseconds on a Mac, against PostgreSQL 15's 40. It also hides the tables of
publicwhenpublic … -
secantus-mdb 0.5.3-beta.177 stops a partial TTL index deleting documents it does not cover
Summary: secantus-mdb 0.5.3-beta.177 fixes TTL indexes that deleted too much and told nobody, and a bulkWrite command that applied half a malformed batch, each found by running the same commands against mongod 8.2.11.
If you use a TTL index with a
partialFilterExpressiononsecantusd-rs0 … -
secantus-mdb 0.5.3-beta.176 stops dropIndexes from dropping the _id index
Summary: secantus-mdb 0.5.3-beta.176 and 0.5.3-beta.175 fix a run of wrong answers on capped collections, views, document validation and indexes, each found by running the same commands against mongod 8.2.11.
If you run
secantusd-rs0.5.3-beta.174 or earlier, upgrade. The two …