
The September 14–21 brief turns pgAdmin's four new CVEs, two Milvus patches, a Weaviate repair wave, and a four-engine benchmark of PostgreSQL text-search indexes into concrete upgrade gates for backend teams.
| Date (UTC-08:00) | Engine / Component | Verified change | Upgrade gate & trade-off | Immediate action |
|---|---|---|---|---|
| 2026-09-17 | pgAdmin 4 v9.18 | Four CVE fixes, including a Webserver-mode authentication bypass and connection-string injection in the Backup, Restore and Maintenance tools 1 | A client reaching a server-mode pgAdmin could assert any identity, an administrator's included; the Backup flaw could redirect the connection and the password exported in PGPASSWORD | Upgrade, or restrict header-asserted identity to named trusted proxies with a shared secret |
| 2026-09-20 | Milvus 3.0.2 | Removed an atomic refcount hotspot in scalar filter evaluation measured at roughly 48% of leaf CPU time in search; added HTTP 429 with Retry-After on RESTful v2 DQL when the proxy query queue fills 3 | Data-correctness fixes ride along: Storage V2 compaction could misalign packed column indexes, and an incomplete binlog chunk could be treated as fully read | Patch 3.0.x clusters, and teach clients to honour the 429 rather than retrying blindly |
| 2026-09-16 | Milvus 2.6.24 | Lower peak memory during segment loading, knapsack-based force-merge planning, and a fix for strong-consistency queries failing with channel tsafe stalled under heavy upserts 4 | The 2.6 branch receives the same hot-path work as 3.0, so staying on 2.6 remains a live option | Patch 2.6 deployments and re-run strong-consistency upsert tests on staging |
| 2026-09-18 | Milvus Go client v3.0.0 | First stable 3.0 client: the module path moves to client/v3, protobuf types move to milvus-proto/go-api/v3, and ExportSnapshot returns a job ID instead of a path 5 | Breaking at the import and type level; client telemetry is on by default; the release states no guaranteed compatibility with Milvus 2.6 servers | Upgrade the cluster before the client, and make the telemetry decision explicit |
| 2026-09-14 to 2026-09-18 | Weaviate v1.37.17, v1.38.15, v1.38.16, v1.39.5 | One repair set across three branches, then a further batch: shifted weaviate_module_error_total labels, a qna-openai nil-response panic, a tombstoned HNSW entrypoint, orphaned schema class data 67 | v1.38.16 removes the /v1/modules endpoint and the contextionary extension handlers | Check for /v1/modules callers first, then patch the branch you run |
| 2026-09-19 | Weaviate v1.40.0-rc.1 | Release candidate carrying Namespaces GA, alter-schema drop-vector-index GA, HFresh MUVERA, and 4-bit rotational quantization 8 | Pre-release: the feature set is frozen, the build is not | Read it for roadmap planning only |
| 2026-09-16 | PlanetScale TIN v1.0.2 | Matched benchmark of four PostgreSQL 18.6 text-search engines on one instance: TIN, ParadeDB 0.25.2, pg_textsearch 1.4.0, and the built-in GIN index 2 | Scope-limited to text search on a standalone single node, and the winning index ships on one managed platform | Calibrate expectations from the numbers, and price the platform dependency as part of the choice |
| 2026-09-21 | PostgreSQL logical replication slots | Documented failure mode: promoting a replica whose logical slots are not synchronized drops the change stream for every downstream consumer 9 | The fix needs failover = true on each slot plus hot_standby_feedback and sync_replication_slots on, and that pair pins the primary's vacuum horizon | Audit CDC slots before the next planned failover |
| 2026-09-21 | Percona Server for MySQL 9.7.2-2 | DISTANCE() and its VECTOR_DISTANCE() alias added with five distance metrics and runtime SIMD dispatch 10 | Scoring without an approximate index turns an ordered similarity query into a full table scan | Use it on small or pre-filtered sets; wait for ANN indexing before redesigning retrieval |
| 2026-09-15 | Percona Server for MySQL 8.4.11-11 | InnoDB buffer-pool work: narrowed LRU mutex scope on page reads, per-buffer-pool LRU manager threads, and a fixed inverted old/young check 11 | A fork-only gain at present, and the same high-thread-count degradation is reported in upstream MySQL 8.4.11 | Benchmark at your peak thread count before you schedule the upgrade |
get_user() fell back to reading the WEBSERVER_REMOTE_USER name from inbound request headers whenever that value was missing. A header is written by whoever sends the request, so any client able to reach pgAdmin could assert any identity, an administrator's included, without a credential. The fix makes header-asserted identity opt-in and limits it to a configured list of trusted proxies with an optional shared secret 12.pg_dump argument vector as a bare positional value; because getopt_long permutes arguments, a value beginning with a dash could supply options such as --file and override the storage-confined output path, and because libpq expands a database name containing an equals sign into a full connection string, the same field could redirect the connection and the password exported in PGPASSWORD to a host of the caller's choosing. The name now travels through PGDATABASE, which libpq never expands, and the Restore and Maintenance tools received the same treatment for the value they passed to --dbname. CVE-2026-86861 closes a time-of-check to time-of-use gap in the File Manager's save_file endpoint behind the Query Tool: the path was validated and then opened with a plain open(), so a symbolic link planted between the two steps was followed and the write landed outside the user's storage directory 12.'unsafe-inline' with 'unsafe-eval', and LLM API requests refuse HTTP redirects rather than following a Location header to a destination the allowlist never examined 12. Because the exposure is a network-reachable instance, the audit that finds unpatched copies should also confirm which of them are reachable from outside a private network.channel tsafe stalled (error code 505) under heavy upsert workloads by isolating online write execution from segment loading on the query node, and stops a replica's channels from all landing on one query node and causing repeated out-of-memory kills 4.client/v3, applications using generated Milvus messages must migrate from milvus-proto/go-api/v2 to v3 because the two protobuf type sets are not interchangeable, and ExportSnapshot returns an int64 job ID instead of a snapshot path, so callers poll GetExportSnapshotState for progress. Client telemetry is also enabled by default, collecting request counts, errors, latency including p99, heartbeats and server-pushed commands, and ClientConfig.TelemetryConfig.Enabled set to false turns it off — a governance decision for regulated deployments and easier to settle while the dependency is open for the import-path change.weaviate_module_error_total labels and the nil-response panic in the qna-openai module, so monitoring built on that counter has been misattributing module errors on every affected branch; they also carry node-level query admission control, tolerance for an HNSW entrypoint whose node slot was nil, and schema handling that drops class data the schema no longer names 715. The one change that can break a running deployment is the removal of the /v1/modules REST endpoint and the contextionary extension and concept handlers in v1.38.16, which start returning errors to any health probe, inventory script or older client wrapper still calling them 6.i7i.8xlarge instance with local NVMe storage, on PostgreSQL 18.6, with shared_buffers and maintenance_work_mem each at 24 GB and max_parallel_workers at 8. Traffic came from a forked build of the ParadeDB Benchmarker, modified to pre-warm before measurement and to add bytes-read and WAL-bytes metrics, running on the same instance. The corpus was a Stack Exchange question-and-answer export of 85 GB across 150 million documents, queried with 3,762 generated substrings of two to fifteen terms, each read as a conjunction, a disjunction, and a phrase 2.| Index | Total build time | Index size | RAM required for the build |
|---|---|---|---|
| TIN 1.0.2 | 8m10s | 50.7 GB | 32 GB |
| ParadeDB 0.25.2 | 19m20s | 52.1 GB | 64 GB |
| pg_textsearch 1.4.0 | 26m49s | 41.5 GB | 128 GB |
| PostgreSQL GIN (18.6) | 2h09m04s | 28.0 GB | 64 GB |
| Workload | Engine | QPS | p99 latency | MB read per query | Updates completed in the run |
|---|---|---|---|---|---|
| Mixed conjunction, disjunction and phrase, top-10 by BM25, read-only | TIN | 199 | 256 ms | 65 | — |
| Same workload, with a concurrent writer | TIN | 172 | 284 ms | 88 | 271,398 |
| Same workload, with a concurrent writer | ParadeDB | 6.0 | 7,990 ms | 591 | 193,487 |
| Conjunction and phrase, top-10, read-only | TIN | 242 | 212 ms | 73 | — |
| Conjunction and phrase, top-10, read-only | ParadeDB | 24 | 1,279 ms | 668 | — |
| Conjunction and phrase, top-10, read-only | GIN (18.6) | 0.4 | 288,066 ms | 595 | — |
| Disjunction, top-10, with a concurrent writer | TIN | 125 | 354 ms | 77 | 270,279 |
| Disjunction, top-10, with a concurrent writer | ParadeDB | 2.2 | 12,634 ms | 394 | 185,584 |
| Disjunction, top-10, with a concurrent writer | pg_textsearch | 3.5 | 8,409 ms | 11,656 | 735 |
| Count of matches, disjunction, Wikipedia extract, index resident | TIN | 10,260 | 2 ms | 1.7 | — |
| Count of matches, disjunction, Wikipedia extract, index resident | ParadeDB | 291 | 95 ms | 22 | — |
| Count of matches, disjunction, Wikipedia extract, index resident | GIN (18.6) | 1.4 | 30,292 ms | 2.5 | — |
failover = true on every logical slot at creation or through ALTER_REPLICATION_SLOT ... (FAILOVER true), the platform told each slot's name so it survives on the replica, and hot_standby_feedback and sync_replication_slots both on 9. Those last two are off by default for a reason, and the reason is the trade-off: hot_standby_feedback lets a replica pin the primary's vacuum horizon for correctness and adds bloat to the primary, while turning sync_replication_slots on without it means the copied slot state can be invalidated the first time vacuum runs past the slot's horizon. A team with long-running read transactions against replicas is choosing between a safer change stream and a heavier vacuum. The post also notes that the operator detects misconfigured slots and blocks planned cutovers that would drop one, then releases a blocked cutover after a grace period, which buys time to fix the configuration rather than removing the failure.DISTANCE() and its VECTOR_DISTANCE() alias in Percona Server for MySQL 9.7.2-2, which scores two vectors directly in SQL with five metrics: EUCLIDEAN, EUCLIDEAN_SQUARED, MANHATTAN, COSINE and DOT 10. MySQL's native DISTANCE() and VECTOR_DISTANCE() functions exist only in HeatWave MySQL on OCI and cover three metrics, so adding the primitive to a server that runs anywhere widens where the capability is available and adds squared Euclidean and Manhattan distance. Distance evaluation dispatches at startup to the best SIMD tier the CPU offers, with the vendor reporting roughly 2–3×, 4–6× and 8–12× speedups over scalar at the SSE4.2/NEON, AVX2 and AVX-512F tiers — SIMD-tier claims rather than end-to-end query measurements. The same post states the caveat that decides how far the feature goes: without an approximate-nearest-neighbour index, ORDER BY DISTANCE(...) LIMIT k over a large table is a full table scan, correct and vectorized per row and still linear in table size, with HNSW and IVF named as the next milestone 10.bson_new_from_buffer, an allocation fault in Windows Secure Channel, and error handling in SCRAM authentication 2021. MongoDB C++11 Driver 4.6.0 on September 16 requires C Driver 2.5.3 or newer and repeats the standing warning that ABI stability is unsupported for entities declared in the v_noabi namespace 22.tsvector and GIN now has a comparison to reproduce and a migration question to price, which is a different position from the one where the only visible option was a separate search cluster.DISTANCE() puts five metrics and runtime SIMD dispatch into a server that runs anywhere, and the same post states that an ordered similarity query over a large table is a full scan until an approximate index exists 10. The missing index caps what the feature replaces today: a similarity filter over a pre-filtered candidate set is now cheap and local, while large-scale nearest-neighbour retrieval still points at a dedicated vector engine.client/v3, migrates protobuf types to milvus-proto/go-api/v3, and requires polling for export job state, and it states no guaranteed compatibility with Milvus 2.6 servers, so the cluster upgrade leads 5./v1/modules callers before applying the Weaviate wave. v1.38.16 removes that endpoint along with the contextionary handlers, and the repair set lands on the 1.37, 1.38 and 1.39 branches 6.failover = true, the platform needs its name, and hot_standby_feedback and sync_replication_slots must be on, with the vacuum-horizon cost understood before either is enabled 9.postgresql.org
planetscale.com
github.com
github.com
github.com
github.com
github.com
github.com
planetscale.com
pgadmin.org
github.com
github.com
github.com
github.com
planetscale.com
planetscale.com
forums.mysql.com
mongodb.com
mongodb.com
mongodb.com
postgresql.org
github.com
github.com
db-engines.com
This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.