<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>LibreDB Studio — blog</title><description>LibreDB Studio is the open-source database IDE that deploys next to your data instead of onto your laptop — one browser tab for PostgreSQL, MySQL, MongoDB, Redis and thirteen more engines, with SSO and audit built in.</description><link>https://libredb.org/</link><language>en</language><item><title>Building a Universal Database Provider Architecture in TypeScript Without JDBC</title><link>https://libredb.org/blog/building-universal-database-provider-typescript/</link><guid isPermaLink="true">https://libredb.org/blog/building-universal-database-provider-typescript/</guid><description>How to architect a unified DatabaseProvider interface that bridges 15+ heterogeneous database engines without JDBC, managing dynamic module loading, schema normalization, and AI agent isolation at scale.</description><pubDate>Sun, 13 Sep 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><category>Architecture</category><author>Cevheri &amp; LibreDB Engineering</author></item><item><title>Twenty-eight models, six surfaces, eight hundred and forty runs</title><link>https://libredb.org/blog/twenty-eight-models-six-surfaces-840-runs/</link><guid isPermaLink="true">https://libredb.org/blog/twenty-eight-models-six-surfaces-840-runs/</guid><description>What it took to make a local model drive a database agent, and why the model was almost never the problem. Nearly every time a model failed, the ledger showed our own server holding the sentence that would have unblocked it.</description><pubDate>Tue, 08 Sep 2026 20:30:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>A forum comment found a bug that 100% coverage did not</title><link>https://libredb.org/blog/a-comment-found-a-bug-coverage-did-not/</link><guid isPermaLink="true">https://libredb.org/blog/a-comment-found-a-bug-coverage-did-not/</guid><description>A reader asked how one create-table form reconciles SQL Server&apos;s identity column with PostgreSQL&apos;s sequences. It did not, and on SQLite it failed silently rather than loudly. What the fix took, and why a fully covered test suite had nothing to say about any of it.</description><pubDate>Tue, 08 Sep 2026 13:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>Moving the SQL client off the laptop: four problems nobody warns you about</title><link>https://libredb.org/blog/four-problems-a-server-side-sql-client-creates/</link><guid isPermaLink="true">https://libredb.org/blog/four-problems-a-server-side-sql-client-creates/</guid><description>A database client on a server next to the data removes two unwritten requirements and creates four new ones, because the client is now a multi-tenant network service holding every connection your team owns.</description><pubDate>Tue, 08 Sep 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Security</category><author>LibreDB</author></item><item><title>How many databases? Sixteen, twenty-six, or forty-two</title><link>https://libredb.org/blog/counting-databases/</link><guid isPermaLink="true">https://libredb.org/blog/counting-databases/</guid><description>Three different true answers to the simplest question anyone asks about a database tool, and why the registry behind them records a refusal as carefully as it records a success.</description><pubDate>Sat, 29 Aug 2026 14:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>What one interface across seventeen engines actually costs</title><link>https://libredb.org/blog/what-one-interface-costs/</link><guid isPermaLink="true">https://libredb.org/blog/what-one-interface-costs/</guid><description>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.</description><pubDate>Sat, 29 Aug 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>The admin-only audit trail of executed queries</title><link>https://libredb.org/blog/postgresql-query-audit-trail-admin-only/</link><guid isPermaLink="true">https://libredb.org/blog/postgresql-query-audit-trail-admin-only/</guid><description>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.</description><pubDate>Tue, 25 Aug 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Security</category><author>LibreDB</author></item><item><title>Nine servers, one connection type, different answers</title><link>https://libredb.org/blog/mysql-wire-compatible-engines-one-provider/</link><guid isPermaLink="true">https://libredb.org/blog/mysql-wire-compatible-engines-one-provider/</guid><description>MariaDB, Percona, TiDB, Vitess and five more arrive through the same MySQL connection, and protocol compatibility is not capability compatibility.</description><pubDate>Sun, 23 Aug 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>What a pasted managed PostgreSQL URL configures</title><link>https://libredb.org/blog/postgresql-managed-url-ssl-modes/</link><guid isPermaLink="true">https://libredb.org/blog/postgresql-managed-url-ssl-modes/</guid><description>Host-heuristic SSL turns encryption on without verifying the certificate, and two sslmode values are declined by name rather than guessed at.</description><pubDate>Thu, 20 Aug 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><category>Security</category><author>LibreDB</author></item><item><title>MongoDB slow queries stay empty until you enable the profiler</title><link>https://libredb.org/blog/mongodb-profiler-slow-queries/</link><guid isPermaLink="true">https://libredb.org/blog/mongodb-profiler-slow-queries/</guid><description>The panel names the command to run instead of showing a blank table, and the metrics beside it are omitted rather than reported as zero.</description><pubDate>Mon, 17 Aug 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>With performance_schema off, MySQL metrics are absent not zero</title><link>https://libredb.org/blog/mysql-performance-schema-off-metrics-absent/</link><guid isPermaLink="true">https://libredb.org/blog/mysql-performance-schema-off-metrics-absent/</guid><description>Cache hit ratio, queries per second and buffer-pool usage are omitted rather than defaulted, and two more figures mean less than their names suggest.</description><pubDate>Fri, 14 Aug 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>Which PostgreSQL health numbers need an extension or a grant</title><link>https://libredb.org/blog/postgresql-health-panels-extension-gated/</link><guid isPermaLink="true">https://libredb.org/blog/postgresql-health-panels-extension-gated/</guid><description>A tour of the health surface organised by what is missing and why, because a panel that reads Not measured is the only version an operator can act on.</description><pubDate>Tue, 11 Aug 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>Connecting ScyllaDB through the Cassandra integration</title><link>https://libredb.org/blog/cassandra-scylladb-through-one-provider/</link><guid isPermaLink="true">https://libredb.org/blog/cassandra-scylladb-through-one-provider/</guid><description>The editor, the object browser and every CQL type read back identically, and the panels that go quiet do so because one virtual keyspace is not there.</description><pubDate>Sun, 09 Aug 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>Redis over TLS, and what the rediss scheme does not decide</title><link>https://libredb.org/blog/redis-tls-rediss-verification/</link><guid isPermaLink="true">https://libredb.org/blog/redis-tls-rediss-verification/</guid><description>A pasted rediss URL selects encryption without verification, because nothing in a URL says whose certificate to trust; verification stays an explicit choice.</description><pubDate>Thu, 06 Aug 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><category>Security</category><author>LibreDB</author></item><item><title>Browsing an un-indexed Couchbase collection</title><link>https://libredb.org/blog/couchbase-unindexed-collection-scan/</link><guid isPermaLink="true">https://libredb.org/blog/couchbase-unindexed-collection-scan/</guid><description>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.</description><pubDate>Mon, 03 Aug 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>MongoDB has no constraint for a diagram to discover</title><link>https://libredb.org/blog/mongodb-no-foreign-keys-diagram/</link><guid isPermaLink="true">https://libredb.org/blog/mongodb-no-foreign-keys-diagram/</guid><description>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.</description><pubDate>Fri, 31 Jul 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>Trino refuses a password over plain HTTP</title><link>https://libredb.org/blog/trino-password-requires-tls/</link><guid isPermaLink="true">https://libredb.org/blog/trino-password-requires-tls/</guid><description>Measured against a coordinator with authentication switched off, a basic auth header over plain HTTP still answers 401, so the connection is refused early.</description><pubDate>Wed, 29 Jul 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><category>Security</category><author>LibreDB</author></item><item><title>TLS to ClickHouse, and why a self-signed node fails</title><link>https://libredb.org/blog/clickhouse-tls-platform-trust-store/</link><guid isPermaLink="true">https://libredb.org/blog/clickhouse-tls-platform-trust-store/</guid><description>An https URL sets TLS and moves the default port, but only the platform trust store applies, so a custom CA has nowhere to go on this transport.</description><pubDate>Sun, 26 Jul 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><category>Security</category><author>LibreDB</author></item><item><title>DuckDB storage answers, sessions and slow queries do not exist</title><link>https://libredb.org/blog/duckdb-storage-panels-no-sessions/</link><guid isPermaLink="true">https://libredb.org/blog/duckdb-storage-panels-no-sessions/</guid><description>Two catalog functions other engines have are absent here, so both panels stay empty carrying the engine own error, and table bytes are block-granular.</description><pubDate>Thu, 23 Jul 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>A SQLite connection is a path on the server</title><link>https://libredb.org/blog/sqlite-server-side-file-path/</link><guid isPermaLink="true">https://libredb.org/blog/sqlite-server-side-file-path/</guid><description>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.</description><pubDate>Mon, 20 Jul 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>Reading MySQL EXPLAIN FORMAT=JSON as a plan tree</title><link>https://libredb.org/blog/mysql-explain-format-json-plan-tree/</link><guid isPermaLink="true">https://libredb.org/blog/mysql-explain-format-json-plan-tree/</guid><description>What the plan tree answers on MySQL, and where the surrounding introspection runs out: index figures here are estimates of distinct values.</description><pubDate>Fri, 17 Jul 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>The Explain button runs your query, the agent plan read does not</title><link>https://libredb.org/blog/postgresql-explain-analyze-executes/</link><guid isPermaLink="true">https://libredb.org/blog/postgresql-explain-analyze-executes/</guid><description>Two EXPLAIN forms with different consequences: the editor emits the executing one, and the agent path emits the planning one only.</description><pubDate>Wed, 15 Jul 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>The tool goes to the data</title><link>https://libredb.org/blog/the-tool-goes-to-the-data/</link><guid isPermaLink="true">https://libredb.org/blog/the-tool-goes-to-the-data/</guid><description>Why a database IDE belongs in the network beside the database, and what that constraint forces the architecture to look like.</description><pubDate>Tue, 14 Jul 2026 09:00:00 GMT</pubDate><category>Engineering</category><author>LibreDB</author></item><item><title>CQL has no EXPLAIN, so the tab is hidden</title><link>https://libredb.org/blog/cassandra-no-explain-in-cql/</link><guid isPermaLink="true">https://libredb.org/blog/cassandra-no-explain-in-cql/</guid><description>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.</description><pubDate>Sun, 12 Jul 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>What Redis monitoring reads and what returns nothing</title><link>https://libredb.org/blog/redis-monitoring-info-slowlog/</link><guid isPermaLink="true">https://libredb.org/blog/redis-monitoring-info-slowlog/</guid><description>Health, performance, slow log and clients all derive from Redis introspection commands, while the table and index panels come back empty because Redis has neither.</description><pubDate>Thu, 09 Jul 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>Writing SQL++ that starts with the document key</title><link>https://libredb.org/blog/couchbase-sqlpp-document-key/</link><guid isPermaLink="true">https://libredb.org/blog/couchbase-sqlpp-document-key/</guid><description>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.</description><pubDate>Mon, 06 Jul 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>The MongoDB editor takes a JSON command, not shell syntax</title><link>https://libredb.org/blog/mongodb-json-command-editor/</link><guid isPermaLink="true">https://libredb.org/blog/mongodb-json-command-editor/</guid><description>A statement beginning db. cannot run here at all, and the two operations that look alike have very different default bounds on the result set.</description><pubDate>Sat, 04 Jul 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>Paging Trino, and the session settings that do not stick</title><link>https://libredb.org/blog/trino-offset-before-limit-stateless-session/</link><guid isPermaLink="true">https://libredb.org/blog/trino-offset-before-limit-stateless-session/</guid><description>The clause order is transposed for you and a trailing semicolon is a syntax error, while a session setting succeeds and then affects nothing.</description><pubDate>Wed, 01 Jul 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>Read-only is Druid here, not the integration</title><link>https://libredb.org/blog/druid-sql-cannot-write/</link><guid isPermaLink="true">https://libredb.org/blog/druid-sql-cannot-write/</guid><description>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.</description><pubDate>Sun, 28 Jun 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>Hiding an edit control that could only ever fail</title><link>https://libredb.org/blog/clickhouse-row-editing-alter-update/</link><guid isPermaLink="true">https://libredb.org/blog/clickhouse-row-editing-alter-update/</guid><description>A bare update statement answers not implemented on this engine, so no editable cell is offered, and the documented route reports zero rows changed.</description><pubDate>Thu, 25 Jun 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>One DuckDB file admits one process, readers included</title><link>https://libredb.org/blog/duckdb-single-process-file-lock/</link><guid isPermaLink="true">https://libredb.org/blog/duckdb-single-process-file-lock/</guid><description>A second read-only process is refused with the same lock error as a second writer, which makes two Studio replicas on one file a broken configuration.</description><pubDate>Mon, 22 Jun 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>A SQLite plan tree with no numbers on it</title><link>https://libredb.org/blog/sqlite-query-plan-without-costs/</link><guid isPermaLink="true">https://libredb.org/blog/sqlite-query-plan-without-costs/</guid><description>The query plan returns step descriptions and nothing else, so the rendering shows structure and answers index questions rather than cost questions.</description><pubDate>Sat, 20 Jun 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>The widest DMV surface here, and the grant it depends on</title><link>https://libredb.org/blog/sqlserver-view-server-state-monitoring/</link><guid isPermaLink="true">https://libredb.org/blog/sqlserver-view-server-state-monitoring/</guid><description>Real blocked-session detection and real index seek and scan counts are things most engines cannot give, and a restricted login still sees none of them.</description><pubDate>Wed, 17 Jun 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><category>Security</category><author>LibreDB</author></item><item><title>Connecting to Oracle without installing the Instant Client</title><link>https://libredb.org/blog/oracle-thin-mode-service-name/</link><guid isPermaLink="true">https://libredb.org/blog/oracle-thin-mode-service-name/</guid><description>Thin mode is the default and needs no native client, and the field people get wrong is the one Oracle actually connects to: a service, not a database name.</description><pubDate>Sun, 14 Jun 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>A MySQL ER diagram is bounded by one database</title><link>https://libredb.org/blog/mysql-er-diagram-single-database-scope/</link><guid isPermaLink="true">https://libredb.org/blog/mysql-er-diagram-single-database-scope/</guid><description>Every introspection query binds to the connected database, so a reference that crosses schemas simply does not appear as an edge on the diagram.</description><pubDate>Thu, 11 Jun 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>Foreign-key diagrams on a schema with a hundred tables</title><link>https://libredb.org/blog/postgresql-er-diagram-two-phase-introspection/</link><guid isPermaLink="true">https://libredb.org/blog/postgresql-er-diagram-two-phase-introspection/</guid><description>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.</description><pubDate>Tue, 09 Jun 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>The quoting mistake that returns zero rows and no error</title><link>https://libredb.org/blog/opensearch-sql-grammar-surprises/</link><guid isPermaLink="true">https://libredb.org/blog/opensearch-sql-grammar-surprises/</guid><description>A double-quoted identifier is a string literal here, so a filter on one compares two literals and answers nothing with a perfectly successful response.</description><pubDate>Sat, 06 Jun 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>This editor sends Elasticsearch SQL, not the query DSL</title><link>https://libredb.org/blog/elasticsearch-sql-not-query-dsl/</link><guid isPermaLink="true">https://libredb.org/blog/elasticsearch-sql-not-query-dsl/</guid><description>There are no writes in this grammar at all, no second page, and a trailing semicolon is a syntax error, so the list of edges is the useful part.</description><pubDate>Wed, 03 Jun 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>Three Cassandra panels refuse rather than report a zero</title><link>https://libredb.org/blog/cassandra-monitoring-panels-that-refuse/</link><guid isPermaLink="true">https://libredb.org/blog/cassandra-monitoring-panels-that-refuse/</guid><description>Table, index and storage statistics send no statement at all and carry the measurement behind the refusal, because no honest count or size exists to publish.</description><pubDate>Sun, 31 May 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>Three ways a panel can say nothing, and why they differ</title><link>https://libredb.org/blog/libredb-monitoring-refusal-taxonomy/</link><guid isPermaLink="true">https://libredb.org/blog/libredb-monitoring-refusal-taxonomy/</guid><description>Two panels refuse with their reason, one stays empty in the engine&apos;s own words, a third reads not measured, and each of those is a different claim about the database.</description><pubDate>Thu, 28 May 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>A user star row in the Redis tree is not an object</title><link>https://libredb.org/blog/redis-key-prefixes-derived-groupings/</link><guid isPermaLink="true">https://libredb.org/blog/redis-key-prefixes-derived-groupings/</guid><description>Prefix groups come from a bounded cursor scan, so several per-row actions are hidden rather than offered against something no command can address.</description><pubDate>Tue, 26 May 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>Couchbase plan trees are estimates, and minus one means none</title><link>https://libredb.org/blog/couchbase-plan-tree-estimates/</link><guid isPermaLink="true">https://libredb.org/blog/couchbase-plan-tree-estimates/</guid><description>This dialect has no analyze form, so the direct action and the background pre-warm show the same estimate, and a negative cost renders as no estimate.</description><pubDate>Sat, 23 May 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>The MongoDB field list is inferred from a hundred documents</title><link>https://libredb.org/blog/mongodb-inferred-schema-sample/</link><guid isPermaLink="true">https://libredb.org/blog/mongodb-inferred-schema-sample/</guid><description>There is no catalog to read, so the sidebar samples each collection and states its own reach - three levels deep, arrays closed, two hundred fields.</description><pubDate>Wed, 20 May 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>Why a Trino diagram draws boxes and never edges</title><link>https://libredb.org/blog/trino-no-keys-boxes-without-edges/</link><guid isPermaLink="true">https://libredb.org/blog/trino-no-keys-boxes-without-edges/</guid><description>The catalog views a connector could declare a key through do not exist here, so the empty edge set is the engine answer rather than an empty schema.</description><pubDate>Sun, 17 May 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>Druid has no query sessions, so the panel shows tasks</title><link>https://libredb.org/blog/druid-sessions-are-ingestion-tasks/</link><guid isPermaLink="true">https://libredb.org/blog/druid-sessions-are-ingestion-tasks/</guid><description>Rows come from the task table and every column is relabelled to say so, because there is no session catalog and no query log anywhere to read.</description><pubDate>Thu, 14 May 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>ClickHouse diagrams show structure without relations</title><link>https://libredb.org/blog/clickhouse-no-foreign-keys-diagram/</link><guid isPermaLink="true">https://libredb.org/blog/clickhouse-no-foreign-keys-diagram/</guid><description>An empty edge list here is the engine answer, not an unfinished read: no engine, no table setting and no DDL declares a foreign key anywhere.</description><pubDate>Tue, 12 May 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>Querying Parquet and CSV from the DuckDB editor</title><link>https://libredb.org/blog/duckdb-parquet-csv-editor-versus-agent/</link><guid isPermaLink="true">https://libredb.org/blog/duckdb-parquet-csv-editor-versus-agent/</guid><description>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.</description><pubDate>Sat, 09 May 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>Connecting to a hosted libSQL database with a token</title><link>https://libredb.org/blog/libsql-turso-url-and-auth-token/</link><guid isPermaLink="true">https://libredb.org/blog/libsql-turso-url-and-auth-token/</guid><description>The credential is an auth token rather than a password and the database is the host, so the dialog renders no user name and no database input at all.</description><pubDate>Wed, 06 May 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>On a shared instance a SQLite path is an access decision</title><link>https://libredb.org/blog/sqlite-path-is-the-trust-boundary/</link><guid isPermaLink="true">https://libredb.org/blog/sqlite-path-is-the-trust-boundary/</guid><description>Path validation rejects a null byte and nothing else, so any logged-in user can open any SQLite file the Studio process is able to read.</description><pubDate>Sun, 03 May 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Security</category><author>LibreDB</author></item><item><title>Three quiet fidelity limits in a T-SQL result grid</title><link>https://libredb.org/blog/sqlserver-result-grid-numeric-fidelity/</link><guid isPermaLink="true">https://libredb.org/blog/sqlserver-result-grid-numeric-fidelity/</guid><description>Wide integers and high-scale decimals arrive as JavaScript numbers, only the first result set of a batch is read, and one paged statement is not recognised.</description><pubDate>Fri, 01 May 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>Two Oracle types that lose information on the way to a grid</title><link>https://libredb.org/blog/oracle-number-and-timestamp-fidelity/</link><guid isPermaLink="true">https://libredb.org/blog/oracle-number-and-timestamp-fidelity/</guid><description>A wide NUMBER arrives as a double and drops digits, and a timestamp with a zone folds its offset into UTC, so both are recorded rather than smoothed over.</description><pubDate>Tue, 28 Apr 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>A MySQL connection URI skips your SSL and timezone settings</title><link>https://libredb.org/blog/mysql-connection-uri-ssl-ignored/</link><guid isPermaLink="true">https://libredb.org/blog/mysql-connection-uri-ssl-ignored/</guid><description>Supplying a connection string takes a different branch entirely, so the SSL panel, the timezone and cloud detection stop applying and must live in the URI.</description><pubDate>Sat, 25 Apr 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><category>Security</category><author>LibreDB</author></item><item><title>How the editor bounds a PostgreSQL result set</title><link>https://libredb.org/blog/postgresql-editor-automatic-row-limits/</link><guid isPermaLink="true">https://libredb.org/blog/postgresql-editor-automatic-row-limits/</guid><description>Automatic LIMIT injection applies to unbounded SELECT and CTE-SELECT statements only, and there is one statement shape it deliberately leaves alone.</description><pubDate>Wed, 22 Apr 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>Connecting to OpenSearch when the security plugin is on</title><link>https://libredb.org/blog/opensearch-security-plugin-tls/</link><guid isPermaLink="true">https://libredb.org/blog/opensearch-security-plugin-tls/</guid><description>A default distribution serves HTTPS with a self-signed certificate on the same port, and no custom CA can be supplied on this transport.</description><pubDate>Sun, 19 Apr 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><category>Security</category><author>LibreDB</author></item><item><title>The mapping is the schema, and selecting everything is not</title><link>https://libredb.org/blog/elasticsearch-mapping-is-the-schema/</link><guid isPermaLink="true">https://libredb.org/blog/elasticsearch-mapping-is-the-schema/</guid><description>An index that maps container fields answers a select-everything statement with no columns at all, so the schema tree is built from the mapping instead.</description><pubDate>Fri, 17 Apr 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>The Cassandra field no other connection asks for</title><link>https://libredb.org/blog/cassandra-local-data-center-field/</link><guid isPermaLink="true">https://libredb.org/blog/cassandra-local-data-center-field/</guid><description>The driver refuses to build a load-balancing policy without a local data centre, which is why that field sits in the open rather than under Advanced.</description><pubDate>Tue, 14 Apr 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>Five verbs over an ordered keyspace, with a catalog on top</title><link>https://libredb.org/blog/libredb-five-verb-command-grammar/</link><guid isPermaLink="true">https://libredb.org/blog/libredb-five-verb-command-grammar/</guid><description>The whole grammar is get, put, delete, prefix and range, and yet the tree still shows declared columns for the namespaces that have them.</description><pubDate>Sat, 11 Apr 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>Four other servers behind one Redis connection</title><link>https://libredb.org/blog/redis-compatible-servers-one-type-id/</link><guid isPermaLink="true">https://libredb.org/blog/redis-compatible-servers-one-type-id/</guid><description>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.</description><pubDate>Wed, 08 Apr 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>The Couchbase role your monitoring panels depend on</title><link>https://libredb.org/blog/couchbase-monitoring-catalog-role/</link><guid isPermaLink="true">https://libredb.org/blog/couchbase-monitoring-catalog-role/</guid><description>Without the query system catalog role, slow queries and sessions are empty and denied metrics are omitted rather than reported as zero.</description><pubDate>Mon, 06 Apr 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><category>Security</category><author>LibreDB</author></item><item><title>The MongoDB login failure that is not a wrong password</title><link>https://libredb.org/blog/mongodb-authsource-connection-failure/</link><guid isPermaLink="true">https://libredb.org/blog/mongodb-authsource-connection-failure/</guid><description>authSource names the database the credentials live in, not the one you are opening, and getting it wrong fails exactly like a bad password.</description><pubDate>Fri, 03 Apr 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>Monitoring a query engine that stores nothing</title><link>https://libredb.org/blog/trino-monitoring-owns-no-storage/</link><guid isPermaLink="true">https://libredb.org/blog/trino-monitoring-owns-no-storage/</guid><description>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.</description><pubDate>Tue, 31 Mar 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>Connecting to Apache Druid on the Router or the Broker</title><link>https://libredb.org/blog/druid-router-or-broker-connection/</link><guid isPermaLink="true">https://libredb.org/blog/druid-router-or-broker-connection/</guid><description>Both ports serve the identical SQL endpoint and nothing in the connection knows which it reached, and there is no database field because there is one catalog.</description><pubDate>Sat, 28 Mar 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>Monitoring ClickHouse from its own system tables</title><link>https://libredb.org/blog/clickhouse-monitoring-system-tables/</link><guid isPermaLink="true">https://libredb.org/blog/clickhouse-monitoring-system-tables/</guid><description>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.</description><pubDate>Wed, 25 Mar 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>DuckDB plans are estimates here, permanently</title><link>https://libredb.org/blog/duckdb-explain-estimates-only/</link><guid isPermaLink="true">https://libredb.org/blog/duckdb-explain-estimates-only/</guid><description>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.</description><pubDate>Mon, 23 Mar 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>Connecting to a self-hosted libSQL server</title><link>https://libredb.org/blog/libsql-self-hosted-sqld/</link><guid isPermaLink="true">https://libredb.org/blog/libsql-self-hosted-sqld/</guid><description>A server started without authentication takes no token at all, and sending an empty one is rejected rather than treated as an anonymous connection.</description><pubDate>Fri, 20 Mar 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>Why the SQLite editor has no transaction controls</title><link>https://libredb.org/blog/sqlite-no-transaction-controls/</link><guid isPermaLink="true">https://libredb.org/blog/sqlite-no-transaction-controls/</guid><description>The provider holds no session across two requests, so the begin, commit and rollback controls are withheld rather than offered and then failed.</description><pubDate>Tue, 17 Mar 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>A plan that needs a session, and a path that has none</title><link>https://libredb.org/blog/sqlserver-no-execution-plan-shown/</link><guid isPermaLink="true">https://libredb.org/blog/sqlserver-no-execution-plan-shown/</guid><description>The showplan setting is session-level state and the explain path sends one statement, so the capability is declared false and the action is hidden.</description><pubDate>Sat, 14 Mar 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>Why there is no Explain action on an Oracle connection</title><link>https://libredb.org/blog/oracle-no-explain-plan-rendering/</link><guid isPermaLink="true">https://libredb.org/blog/oracle-no-explain-plan-rendering/</guid><description>Oracle has EXPLAIN PLAN and DBMS_XPLAN; what is missing is a two-statement wrapper, so the capability is declared false and the action is hidden.</description><pubDate>Thu, 12 Mar 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>Connecting to MySQL in a container, and what the pool honours</title><link>https://libredb.org/blog/mysql-connect-docker-pool-limits/</link><guid isPermaLink="true">https://libredb.org/blog/mysql-connect-docker-pool-limits/</guid><description>Port 3306 with the fixture credentials, the container-network case, and the pool settings that are quietly ignored because the driver model differs.</description><pubDate>Mon, 09 Mar 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>Connecting Studio to PostgreSQL running in Docker</title><link>https://libredb.org/blog/postgresql-connect-docker-container/</link><guid isPermaLink="true">https://libredb.org/blog/postgresql-connect-docker-container/</guid><description>The container-to-container case is the one that breaks: when Studio is itself a container, localhost is its own loopback and the service name is the fix.</description><pubDate>Fri, 06 Mar 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>One closed index and the storage figure becomes N/A</title><link>https://libredb.org/blog/opensearch-monitoring-partial-absence/</link><guid isPermaLink="true">https://libredb.org/blog/opensearch-monitoring-partial-absence/</guid><description>A failed cluster read produces no storage row at all rather than one claiming zero bytes, and a partial sum is refused for exactly the same reason.</description><pubDate>Tue, 03 Mar 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>When the index says two documents and the query says one</title><link>https://libredb.org/blog/elasticsearch-document-counts-and-empty-metrics/</link><guid isPermaLink="true">https://libredb.org/blog/elasticsearch-document-counts-and-empty-metrics/</guid><description>Nested elements are stored as documents of their own, so the panel and the editor legitimately disagree, and one panel asks the cluster nothing at all.</description><pubDate>Sat, 28 Feb 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>Paging CQL, and the running statement you cannot stop</title><link>https://libredb.org/blog/cassandra-cql-paging-and-cancellation/</link><guid isPermaLink="true">https://libredb.org/blog/cassandra-cql-paging-and-cancellation/</guid><description>A second page is refused with its reason rather than silently re-serving the first, and there is no cancel path at all on this engine to fall back on.</description><pubDate>Thu, 26 Feb 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>Opening a LibreDB file takes an exclusive lock</title><link>https://libredb.org/blog/libredb-embedded-file-exclusive-lock/</link><guid isPermaLink="true">https://libredb.org/blog/libredb-embedded-file-exclusive-lock/</guid><description>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.</description><pubDate>Mon, 23 Feb 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>Telling a plan-mode model what its Redis inventory really is</title><link>https://libredb.org/blog/redis-agent-plan-bounded-inventory/</link><guid isPermaLink="true">https://libredb.org/blog/redis-agent-plan-bounded-inventory/</guid><description>Because the rows are groupings from a bounded scan, the plan rules carry a sentence saying so, what a command may name instead, and how far the list reaches.</description><pubDate>Fri, 20 Feb 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><category>Security</category><author>LibreDB</author></item><item><title>Connecting to Couchbase Capella and the bucket you type in</title><link>https://libredb.org/blog/couchbase-capella-connection/</link><guid isPermaLink="true">https://libredb.org/blog/couchbase-capella-connection/</guid><description>A managed endpoint carries neither a port nor a bucket path, so the scheme supplies the port and the TLS mode while the bucket is typed by hand and nothing is invented for it.</description><pubDate>Tue, 17 Feb 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>Connecting to MongoDB Atlas and what the URI decides for you</title><link>https://libredb.org/blog/mongodb-atlas-srv-tls-modes/</link><guid isPermaLink="true">https://libredb.org/blog/mongodb-atlas-srv-tls-modes/</guid><description>An SRV URI implies TLS in the driver and maps the form to a verifying mode, but two of the five SSL choices build the same options object.</description><pubDate>Sat, 14 Feb 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><category>Security</category><author>LibreDB</author></item><item><title>Trino plans are planned, never analyzed</title><link>https://libredb.org/blog/trino-explain-format-json-only/</link><guid isPermaLink="true">https://libredb.org/blog/trino-explain-format-json-only/</guid><description>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.</description><pubDate>Thu, 12 Feb 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>A Druid plan tree with no cost anywhere on it</title><link>https://libredb.org/blog/druid-plan-tree-without-costs/</link><guid isPermaLink="true">https://libredb.org/blog/druid-plan-tree-without-costs/</guid><description>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.</description><pubDate>Mon, 09 Feb 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>Connecting to ClickHouse over the HTTP interface</title><link>https://libredb.org/blog/clickhouse-http-interface-8123/</link><guid isPermaLink="true">https://libredb.org/blog/clickhouse-http-interface-8123/</guid><description>Port 8123 is the whole transport, the native port is never used, and a permission denial arrives as a 500, so failures are read by exception code.</description><pubDate>Fri, 06 Feb 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>DuckDB diagrams are scoped to the catalog you opened</title><link>https://libredb.org/blog/duckdb-er-diagram-current-database-scope/</link><guid isPermaLink="true">https://libredb.org/blog/duckdb-er-diagram-current-database-scope/</guid><description>Foreign keys come from a single bulk read of the constraint catalog, and every catalog statement the DuckDB provider issues is scoped to the current database.</description><pubDate>Tue, 03 Feb 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>On libSQL: read-only is a credential you create</title><link>https://libredb.org/blog/libsql-read-only-token-boundary/</link><guid isPermaLink="true">https://libredb.org/blog/libsql-read-only-token-boundary/</guid><description>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.</description><pubDate>Sun, 01 Feb 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><category>Security</category><author>LibreDB</author></item><item><title>There is no SQLite server to monitor</title><link>https://libredb.org/blog/sqlite-health-without-a-server/</link><guid isPermaLink="true">https://libredb.org/blog/sqlite-health-without-a-server/</guid><description>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.</description><pubDate>Thu, 29 Jan 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>SQL Server connects encrypted but unauthenticated by default</title><link>https://libredb.org/blog/sqlserver-encrypted-not-authenticated/</link><guid isPermaLink="true">https://libredb.org/blog/sqlserver-encrypted-not-authenticated/</guid><description>Encryption is on out of the box while certificate validation is off for any host that is not the recognised managed one, and two named modes do not pin a CA.</description><pubDate>Mon, 26 Jan 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><category>Security</category><author>LibreDB</author></item><item><title>Oracle monitoring depth is a privilege question</title><link>https://libredb.org/blog/oracle-monitoring-privilege-question/</link><guid isPermaLink="true">https://libredb.org/blog/oracle-monitoring-privilege-question/</guid><description>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.</description><pubDate>Fri, 23 Jan 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><category>Security</category><author>LibreDB</author></item><item><title>Stopping a runaway MySQL query is cancellation, not a timeout</title><link>https://libredb.org/blog/mysql-cancel-runaway-query/</link><guid isPermaLink="true">https://libredb.org/blog/mysql-cancel-runaway-query/</guid><description>No server-side statement timeout is wired into the pool, so nothing kills a long query on its own and cancellation is an explicit act with a caveat.</description><pubDate>Tue, 20 Jan 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>Where the read-only boundary lives on a PostgreSQL agent run</title><link>https://libredb.org/blog/postgresql-agent-read-only-boundary/</link><guid isPermaLink="true">https://libredb.org/blog/postgresql-agent-read-only-boundary/</guid><description>Containment is the database itself - a read-only transaction, exactly one statement on the extended protocol, then ROLLBACK and DISCARD ALL.</description><pubDate>Sun, 18 Jan 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><category>Security</category><author>LibreDB</author></item><item><title>Steering a plan-mode draft away from the query DSL</title><link>https://libredb.org/blog/opensearch-agent-plan-sql-not-dsl/</link><guid isPermaLink="true">https://libredb.org/blog/opensearch-agent-plan-sql-not-dsl/</guid><description>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.</description><pubDate>Thu, 15 Jan 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><category>Security</category><author>LibreDB</author></item><item><title>Connecting to Elasticsearch with four fields and no database</title><link>https://libredb.org/blog/elasticsearch-connect-four-fields/</link><guid isPermaLink="true">https://libredb.org/blog/elasticsearch-connect-four-fields/</guid><description>An index has no namespace above it, so a database selector would be a control with no effect, and a self-signed cluster certificate has nowhere to go here.</description><pubDate>Mon, 12 Jan 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><category>Security</category><author>LibreDB</author></item><item><title>No constraints to discover, and a column order to rebuild</title><link>https://libredb.org/blog/cassandra-column-order-and-no-foreign-keys/</link><guid isPermaLink="true">https://libredb.org/blog/cassandra-column-order-and-no-foreign-keys/</guid><description>The catalog reports no position for regular columns and sorts by name, so the tree rebuilds the order a where clause actually needs.</description><pubDate>Fri, 09 Jan 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>What a plan-mode model is told about a LibreDB file</title><link>https://libredb.org/blog/libredb-agent-plan-derived-namespaces/</link><guid isPermaLink="true">https://libredb.org/blog/libredb-agent-plan-derived-namespaces/</guid><description>The grounding read is bounded by the provider itself, and the plan rules say outright that the rows are groupings derived from one scan.</description><pubDate>Wed, 07 Jan 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><category>Security</category><author>LibreDB</author></item><item><title>Connecting to Redis with an ACL user that cannot run INFO</title><link>https://libredb.org/blog/redis-acl-user-degraded-connection/</link><guid isPermaLink="true">https://libredb.org/blog/redis-acl-user-degraded-connection/</guid><description>A Redis ACL user without the INFO grant connects and browses keys, while health, overview and performance raise a permission error and the connection test reports degraded.</description><pubDate>Sun, 04 Jan 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><category>Security</category><author>LibreDB</author></item><item><title>You configure the management port, the query port is discovered</title><link>https://libredb.org/blog/couchbase-bucket-and-discovered-query-port/</link><guid isPermaLink="true">https://libredb.org/blog/couchbase-bucket-and-discovered-query-port/</guid><description>Only the management port is stored, and the query endpoint comes from the cluster&apos;s own node services, preferring the external address it advertises.</description><pubDate>Thu, 01 Jan 2026 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>Plan mode on MongoDB, where the safety checks decline</title><link>https://libredb.org/blog/mongodb-agent-plan-declining-checks/</link><guid isPermaLink="true">https://libredb.org/blog/mongodb-agent-plan-declining-checks/</guid><description>The read-only guard and the identifier reader are SQL readers, so on a MongoDB draft they record that they do not apply instead of passing it.</description><pubDate>Mon, 29 Dec 2025 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><category>Security</category><author>LibreDB</author></item><item><title>On a Trino connection the database field is a catalog</title><link>https://libredb.org/blog/trino-database-field-is-a-catalog/</link><guid isPermaLink="true">https://libredb.org/blog/trino-database-field-is-a-catalog/</guid><description>Pinning a catalog scopes the whole tree two levels deep, and a connection that pins none still connects and runs fully qualified statements with no tree.</description><pubDate>Fri, 26 Dec 2025 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>A missing Druid datasource is an availability question first</title><link>https://libredb.org/blog/druid-catalog-shows-what-is-servable/</link><guid isPermaLink="true">https://libredb.org/blog/druid-catalog-shows-what-is-servable/</guid><description>Marking segments unused removes a datasource from the catalog entirely, and a stopped node makes an existing one answer with the same error as a typo.</description><pubDate>Wed, 24 Dec 2025 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>Reading ClickHouse plans as JSON trees</title><link>https://libredb.org/blog/clickhouse-explain-json-plan-trees/</link><guid isPermaLink="true">https://libredb.org/blog/clickhouse-explain-json-plan-trees/</guid><description>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.</description><pubDate>Sun, 21 Dec 2025 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>Read-only mode is not the DuckDB boundary, external access is</title><link>https://libredb.org/blog/duckdb-agent-external-access-boundary/</link><guid isPermaLink="true">https://libredb.org/blog/duckdb-agent-external-access-boundary/</guid><description>Under read-only access alone, file copies, exports, extension installs and filesystem reads all succeeded while an insert was refused in the same session.</description><pubDate>Thu, 18 Dec 2025 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><category>Security</category><author>LibreDB</author></item><item><title>Stateless requests mean there is no session to count</title><link>https://libredb.org/blog/libsql-monitoring-stateless-hrana/</link><guid isPermaLink="true">https://libredb.org/blog/libsql-monitoring-stateless-hrana/</guid><description>Active connections are absent rather than zero and no connection ceiling is published, while table and index bytes are real because the storage view answers.</description><pubDate>Mon, 15 Dec 2025 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>Two controls, because one was not enough on SQLite</title><link>https://libredb.org/blog/sqlite-agent-read-only-two-controls/</link><guid isPermaLink="true">https://libredb.org/blog/sqlite-agent-read-only-two-controls/</guid><description>A read-only open reads the query-only pragma back as off, so the profile sets it too and re-verifies it before every statement it sends.</description><pubDate>Sat, 13 Dec 2025 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><category>Security</category><author>LibreDB</author></item><item><title>What silently degrades on a managed SQL Server database</title><link>https://libredb.org/blog/sqlserver-azure-sql-restricted-dmvs/</link><guid isPermaLink="true">https://libredb.org/blog/sqlserver-azure-sql-restricted-dmvs/</guid><description>The one managed host the code recognises by name switches certificate validation on, and the same move narrows the monitoring and maintenance surface.</description><pubDate>Wed, 10 Dec 2025 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>Oracle diagrams are scoped to the connecting user</title><link>https://libredb.org/blog/oracle-er-diagram-owner-scoped/</link><guid isPermaLink="true">https://libredb.org/blog/oracle-er-diagram-owner-scoped/</guid><description>Five bulk dictionary reads build the tree regardless of table count, and every one of them is filtered by owner, so other schemas are simply not drawn.</description><pubDate>Sun, 07 Dec 2025 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><author>LibreDB</author></item><item><title>Agent plan mode on MySQL drafts; it does not execute</title><link>https://libredb.org/blog/mysql-agent-plan-mode-grounded-drafts/</link><guid isPermaLink="true">https://libredb.org/blog/mysql-agent-plan-mode-grounded-drafts/</guid><description>The tool-using run ends engine-unsupported here, so the useful post is what plan mode does instead: read the real schema and hand a statement to a person.</description><pubDate>Thu, 04 Dec 2025 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><category>Security</category><author>LibreDB</author></item><item><title>Creating the PostgreSQL role agent mode will accept</title><link>https://libredb.org/blog/postgresql-agent-least-privilege-role/</link><guid isPermaLink="true">https://libredb.org/blog/postgresql-agent-least-privilege-role/</guid><description>Agent AUTO mode refuses a superuser connection outright, so the deployment task is a login holding CONNECT, USAGE and SELECT and nothing else.</description><pubDate>Mon, 01 Dec 2025 09:00:00 GMT</pubDate><category>Engineering</category><category>Databases</category><category>Security</category><author>LibreDB</author></item></channel></rss>