<?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>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>