Skip to content

feat(autocomplete): complete identifiers in the case the server folds them to - #3731

Merged
datlechin merged 3 commits into
mainfrom
feat/2527-identifier-case-completion
Oct 21, 2026
Merged

datlechin merged 3 commits into
mainfrom
feat/2527-identifier-case-completion

Conversation

@datlechin

Copy link
Copy Markdown
Member

Summary

  • Server Dashboard now covers Oracle, MongoDB and Redis.
  • Oracle: sessions from V$SESSION with the statement from V$SQL, metrics from V$SYSMETRIC (or V$CON_SYSMETRIC in a pluggable database) and V$INSTANCE, slow queries as active calls over a second. Terminate is ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE; Cancel is ALTER SYSTEM CANCEL SQL from 18c.
  • MongoDB: operations from currentOp (own operations only without inprog), metrics from serverStatus, slow queries from the browsed database's system.profile. Cancel is killOp; there is no Terminate.
  • MongoDB dashboard reads go through a new DatabaseDriver.executeRead, which runs the script read-only, so a shell function an earlier statement redefined cannot write.
  • Redis: clients from CLIENT LIST minus the dashboard's own CLIENT ID, metrics from INFO, slow queries from SLOWLOG GET 20. Terminate is CLIENT KILL ID; Cancel is CLIENT UNBLOCK … ERROR for a blocked client.
  • Redis driver: SLOWLOG GET returns a grid (id, time, duration, quoted command, client, name). OUTSIDEBLOCK <command> runs a server command held back, not queued, while the user's MULTI block is open; every dashboard command uses it. slowlog|get joins the curated cluster routing table so Redis 6 clusters fan it out too.
  • The query classifier reads past OUTSIDEBLOCK the way it reads past DB <n>, so OUTSIDEBLOCK FLUSHALL stays destructive.
  • MCP: get_server_dashboard and stop_server_session now work on the three engines. A paired client with tools:read can read their sessions, metrics and slow queries; with tools:write and the user's approval it can cancel or kill a session there. The tool description no longer lists engines.
  • DurationFormatting gains a sub-second form for slow log durations.
  • Tests changed on purpose: ServerDashboardViewModelTests.redisHasNoDashboard is replaced (Redis now has a dashboard), and DashboardProviderSQLTests.callerExclusions names how the three new engines leave out their own session.

Test plan

  • New: OracleDashboardProviderTests, MongoDBDashboardProviderTests, RedisDashboardProviderTests, RedisDashboardCommandTests (parser, slow log grid, held back inside a MULTI block), the OUTSIDEBLOCK classifier case, the slowlog|get routing case, RedisServerInfo whole-name reads.
  • Oracle SQL run by hand on Oracle 23.26 Free, in FREEPDB1 and in the root: sessions with statement text, both metric views, uptime, CANCEL SQL (ORA-01013 in the victim, session kept) and KILL SESSION (ORA-03113).
  • MongoDB server commands run by hand on 8.3: own operation, server threads and monitoring hello left out; profiler entries listed.
  • Redis on 8.10: CLIENT LIST, SLOWLOG GET shape, CLIENT UNBLOCK on a BLPOP, and apple/scripts/probes/check-redis-command-routing.sh against the curated table.

Fixes #3609

@datlechin
datlechin merged commit ea98f40 into main Oct 21, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Server Dashboard for Oracle, MongoDB and Redis

1 participant