lmdbnet and mvx-lmdbd are gone; a shared database is postgres
The driver pushed nothing down -- no select_where, select_order,
count_where, sum_where, join or explain -- so every WITH streamed the whole
id list to the verb and filtered it there, over a network. postgres answers
those in SQL, holds record locks across sessions, and is not ours to
maintain (mvx#327).
deployment.md loses the daemon sections and gains the shape that replaced
them: a connection profile, so the committed BINDINGS record names only
`@salesdb` and carries no address and no password. The namespace section
survives in the form that is still true -- namespace is the postgres schema
and the mongo database, it still defaults to the account name, and naming
someone else's is still the Q-pointer analog. The page is called
Deployment now rather than Deployment and the Daemon.
containers.md: two images, not three, and the compose demo wires a stock
postgres:16-alpine to the two app accounts instead of our daemon. The
password reaches it as MVXCONN_SHARED_PASSWORD from the environment rather
than being written to disk.
A correction while sweeping: files.md said locks are held in the backend
for "the mvx-lmdbd daemon, or a Postgres file (via session-level advisory
locks)". The postgres half is accurate -- pg_lock/pg_unlock are wired into
its vtable (mvx#16) -- so cross-process locking survives the removal.
Also getting-started.md (mvx-lmdbd was named in the build output and the
installed-binary table), Home.md (the drivers list and the binary table),
client-library.md (a bind example), and statements.md (the list of backends
with no transaction bracket).
The client library: driving an account from C
The surface mv-connect and any language binding is built on, documented as a
consumer meets it rather than as the header lists it: the session and what
connecting to an account actually does (runs its LOGIN, at @LEVEL 1), values as
MV data rather than flattened strings, the read_into loop that is the difference
between a malloc per record and none, and mvxc_bind_file handing a decision back
because the library does not own the screen.
The string-lifetime rule is given its own section near the top. It is the one
thing in the API that will bite someone, it has already bitten twice in two
different tests, and it is a property of the interface rather than a mistake
someone else makes.
Ends with what is not there yet -- the remote transport, a C++ wrapper (#304),
and bindings -- so nobody has to read the header to find out.