Skip to content

Latest commit

 

History

History
92 lines (62 loc) · 6.51 KB

File metadata and controls

92 lines (62 loc) · 6.51 KB

Changelog

All notable changes to PlanetScale Discovery Tools will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

[1.3.1] - 2026-08-24

Fixed

  • MySQL schema object counts were multiplied on servers with an empty schema. A scoped (PlanetScale/Vitess-style) information_schema is now proven with SHOW TABLES before falling back to per-database iteration, and that iteration drops identical rows when merging. Previously a schema holding no base tables triggered the fallback, which re-ran every cross-database query once per schema.
  • Column metadata was lost on MySQL 5.6 and MariaDB before 10.2. The column query is retried without generation_expression (MySQL 5.7.6+), rather than the whole statement failing and leaving column_analysis empty.
  • Binlog retention was always blank before MySQL 8.0. @@binlog_expire_logs_seconds (8.0+) and @@expire_logs_days (removed in 8.4) are read independently, so a missing variable no longer skips the other.
  • Failed sub-queries are now reported. add_error keeps the underlying exception, and analyzer errors and warnings appear as analysis gaps, so an empty section is distinguishable from a section that genuinely found nothing.
  • The information_schema.check_constraints version guard (MySQL 8.0.16+) now runs, instead of the missing table being filed as a generic query failure.
  • MySQL feature detection reported features that no client used. LOCK TABLES now comes from Com_lock_tables instead of Table_locks_immediate, Galera requires wsrep_on=ON with a real provider instead of any wsrep_* variable, and XA reads the Com_xa_* counters instead of innodb_support_xa. Each of the three old signals is true on a server that never uses the feature.

Changed

  • Refreshed the runtime dependencies (boto3, botocore, s3transfer) and the development dependencies (cryptography, mypy, responses, and others) to current versions.

[1.3.0] - 2026-07-10

Added

  • Config-driven runs. The configuration file is now the source of truth. Running ps-discovery with no subcommand loads ./config.yaml (auto-discovered) or the file passed to --config and runs whatever database and/or cloud modules it declares. Subcommands (database, cloud, both) remain available to run a single scope directly.
  • Global run options (--config, --engine, --providers, --output-dir, --log-level) may now be given before or without a subcommand, e.g. ps-discovery --config config.yaml.
  • Optional modules: list in the config file to explicitly select which modules run; when omitted, modules are inferred from the config contents.
  • setup.sh now uses arrow-key selectors for engine and cloud provider (or the PSDISCOVERY_ENGINE / PSDISCOVERY_PROVIDER environment variables for non-interactive/CI use) and writes a starter config.yaml, never clobbering an existing one (writes new-config.yaml instead).

Changed

  • Minimum supported Python raised to 3.10 (3.9 is end-of-life); CI test matrix is now Python 3.10–3.14.
  • Refreshed runtime and development dependencies to current versions, and regrouped Dependabot updates into production, development, and github-actions groups on a 14-day cooldown to reduce PR volume.

Removed

  • Configuration is now YAML-only; JSON config input is no longer supported.
  • config-template no longer accepts --format; the output path must end in .yaml or .yml.

[1.2.0] - 2026-05-26

Added

  • MySQL and Vitess database discovery alongside PostgreSQL, with engine selection via --engine. MySQL engine recognition in AWS and GCP cloud discovery (RDS MySQL, Aurora MySQL, Cloud SQL MySQL) (guide)
  • Neon cloud discovery provider for projects, branches, and compute endpoints (guide)

Fixed

  • AWS Aurora: exclude rdsadmin from the database catalog to avoid permission errors
  • Skip per-backend temporary schemas during schema analysis on clusters with very large pg_namespace

[1.1.0] - 2026-03-09

Initial public release of PlanetScale Discovery Tools — a comprehensive suite for analyzing PostgreSQL databases and cloud infrastructure environments to support migration planning.

Database Discovery

  • Configuration Analysis: PostgreSQL server version, runtime settings, and tuning parameters
  • Schema Analysis: Tables, columns, indexes, constraints, views, functions, triggers, sequences, and partitions
  • Performance Analysis: Connection stats, query performance (via pg_stat_statements), cache hit ratios, index usage, lock analysis, replication lag, and wait events
  • Security Analysis: Users, roles, permissions, row-level security policies, SSL configuration, and privilege escalation risks
  • Advanced Features Analysis: Extensions, custom data types, foreign data wrappers, PostGIS, and other PostgreSQL-specific features
  • Data Size Analysis (opt-in): Large column detection and LOB identification for migration sizing

Cloud Infrastructure Discovery

  • AWS: RDS instances, Aurora clusters, VPC topology (subnets, security groups, NACLs, route tables, NAT gateways), and focused single-database analysis mode
  • GCP: Cloud SQL instances, AlloyDB clusters with storage usage via Cloud Monitoring API, VPC networks, and firewall rules
  • Supabase: Managed PostgreSQL project inventory, connection pooling configuration, and database details
  • Heroku: Postgres add-ons, PgBouncer pooling detection, follower/replica databases, cross-app attachments, and plan-based resource specifications

CLI and Reporting

  • Unified ps-discovery CLI with database, cloud, and both subcommands
  • YAML configuration-driven execution for repeatable discovery runs
  • JSON output containing complete structured analysis results
  • Optional local markdown summary for quick review (--local-summary)
  • Focused analysis mode (--target-database) for single-database cloud infrastructure scoping
  • Configurable analyzer selection (--analyzers) to run only the modules you need

Reliability and Safety

  • Metadata-only collection — no actual table data is ever accessed
  • Graceful degradation on permission errors — one module failure does not stop the entire discovery
  • 5-minute query timeout to prevent runaway queries
  • Read-only operation with minimal database performance impact
  • Output files restricted to owner-only permissions (0600)
  • 372 unit tests covering all analyzers