Skip to content

Blog

Notes, arguments and the decisions they turned into

A dated record of what we discussed, what broke afterwards and what we chose to do about it — kept as written rather than tidied up. It continues into the work in front of us: databases, SQL and NoSQL, LLMs and agents.

RSS feed → GitHub ↗

EngineeringDatabases

What one interface across seventeen engines actually costs

One tree, one editor and one results grid for relational, document, key-value, analytical, search and federated engines — and the capability flags that stop that promise from breaking on the fourth engine.

EngineeringSecurity

The admin-only audit trail of executed queries

A searchable history of statements, outcomes and error detail, readable by admins only, and on this engine it also records what the agent was permitted to run.

EngineeringDatabasesSecurity

What a pasted managed PostgreSQL URL configures

Host-heuristic SSL turns encryption on without verifying the certificate, and two sslmode values are declined by name rather than guessed at.

EngineeringDatabases

Browsing an un-indexed Couchbase collection

On recent server versions a sequential scan makes an un-indexed keyspace open slowly, so a primary index is a recommendation now rather than a prerequisite.

EngineeringDatabases

MongoDB has no constraint for a diagram to discover

The empty relation list here means impossible rather than none found, and the relationships a document model leaves for you to know live in the shape and in the pipeline.

EngineeringDatabasesSecurity

Trino refuses a password over plain HTTP

Measured against a coordinator with authentication switched off, a basic auth header over plain HTTP still answers 401, so the connection is refused early.

EngineeringDatabases

A SQLite connection is a path on the server

There is no network protocol, so the form collapses to one input and a remote user of a hosted deployment cannot open a file from their own machine.

Engineering

The tool goes to the data

Why a database IDE belongs in the network beside the database, and what that constraint forces the architecture to look like.

EngineeringDatabases

CQL has no EXPLAIN, so the tab is hidden

The keyword is not in the grammar at all, and the only alternative profiles a statement that has already run, which is not a plan and is not offered as one.

EngineeringDatabases

Writing SQL++ that starts with the document key

Selecting everything nests the document and drops the key, so generated statements project it explicitly, and that alias is why cell editing is switched off.

EngineeringDatabases

Read-only is Druid here, not the integration

Update and delete are not in this SQL anywhere, create is not in the grammar, and the refusals are surfaced word for word instead of rewritten.

EngineeringDatabases

A SQLite plan tree with no numbers on it

The query plan returns step descriptions and nothing else, so the rendering shows structure and answers index questions rather than cost questions.

EngineeringDatabases

A MySQL ER diagram is bounded by one database

Every introspection query binds to the connected database, so a reference that crosses schemas simply does not appear as an edge on the diagram.

EngineeringDatabases

Foreign-key diagrams on a schema with a hundred tables

The schema tree renders before relationships arrive, and every introspection CTE is materialized on purpose: a 122-table read measured about 295 seconds before the change and about 2.6 seconds after.

EngineeringDatabases

Querying Parquet and CSV from the DuckDB editor

File-reaching SQL works on the writable editor connection and is refused under the read-only agent handle, so the capability has to be stated with that split.

EngineeringDatabases

How the editor bounds a PostgreSQL result set

Automatic LIMIT injection applies to unbounded SELECT and CTE-SELECT statements only, and there is one statement shape it deliberately leaves alone.

EngineeringDatabases

Four other servers behind one Redis connection

There is no separate connection type and no per-server branch, so the version panel shows the compatibility level a server publishes, not its product release.

EngineeringDatabases

Monitoring a query engine that stores nothing

Nodes, sessions, slow queries and per-catalog connectors all report, while database size is N/A rather than zero, because there is no storage to measure.

EngineeringDatabases

Monitoring ClickHouse from its own system tables

Every ClickHouse monitoring panel is a read of a catalog the server already maintains, with two boundaries: a setting that empties one panel, and a counter nobody publishes.

EngineeringDatabases

DuckDB plans are estimates here, permanently

The timing form of EXPLAIN executes the statement it was asked to explain, so it is never emitted and no measured node timings are published.

EngineeringDatabases

Connecting to a self-hosted libSQL server

A server started without authentication takes no token at all, and sending an empty one is rejected rather than treated as an anonymous connection.

EngineeringDatabases

Opening a LibreDB file takes an exclusive lock

There is no host, no port and no server, and the lock sidecar means command-line tooling cannot hold the same file while a connection is open.

EngineeringDatabases

Trino plans are planned, never analyzed

Only the planning form is ever emitted, because the analyze form executes the statement and a plan view reaching object storage twice is a real invoice.

EngineeringDatabases

A Druid plan tree with no cost anywhere on it

The plan returns the native query the cluster will run, rendered in its own operator vocabulary, and the planner publishes no cost and no row estimate.

EngineeringDatabasesSecurity

On libSQL: read-only is a credential you create

The server refuses the pragma a database-native read-only profile depends on, so the boundary moves from the session to the token the database issues.

EngineeringDatabases

There is no SQLite server to monitor

Health is an integrity check, a journal mode and file sizes, and one per-table figure depends on which built-in driver the deployment is running.

EngineeringDatabasesSecurity

Oracle monitoring depth is a privilege question

A least-privilege application user gets a dashboard that renders with gaps, because each dynamic-view read is guarded on its own rather than as one block.

EngineeringDatabasesSecurity

Steering a plan-mode draft away from the query DSL

A plan run once answered with a native aggregation body, correct for the cluster and unrunnable in the editor, so the contract now names the dialect outright.

EngineeringDatabases

Reading ClickHouse plans as JSON trees

The estimated plan is the only plan there is, because this engine never executes the statement to produce one, so nothing in the view was measured.