# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [0.5.0] - 2026-02-04

### Added
- Automated HammerDB benchmark workflow (pre-cleanup → build → test → post-cleanup)
- Support for PostgreSQL and Oracle databases
- TPROC-C (OLTP) benchmark support
- TPROC-H (Analytics) benchmark support
- JSON-based configuration system (`config/appsettings.json`)
- Comprehensive HTML reports with visual metrics
- Multiple export formats: JSON, CSV (3 types), and plain text
- Automatic result organization into `logs/` and `reports/` directories
- Pre-bundled HammerDB 5.0 for Windows
- Pre-bundled Oracle Instant Client 19.29
- PowerShell automation script (`run.ps1`)
- Configuration validation and error handling
- Automatic environment variable setup for Oracle
- Password masking in console output
- Professional HTML reports with:
  - Performance metrics with consolidated results (green highlight)
  - Execution timeline with success/failure indicators
  - Configuration details
  - Color-coded status indicators
  - Sections ordered: Performance Metrics → Execution Timeline → Configuration

### Security
- Passwords stored with basic encoding in `appsettings.json` - use test credentials only
- Console output masks passwords during execution

## [0.4.0] - 2026-02-04

### Added
- Self-contained JMeter 5.6.3 package for Windows
- Pre-bundled Java Runtime Environment (JRE 8)
- Pre-configured JDBC drivers for PostgreSQL and Oracle
- Automated database benchmark test script (`test/benchmark_test.ps1`)
- Progressive load testing (50 to 400 users in 25-user increments)
- Automatic threshold detection:
  - Error rate threshold (1%)
  - P95 response time threshold (10 seconds)
  - Connection pool error detection
- Support for both PostgreSQL and Oracle databases
- JMeter test plans for both database types:
  - `Oracle-MaxUsers-DBBenchmark.jmx`
  - `Postgres-MaxUsers-DBBenchmark.jmx`
- Cross-platform launcher scripts:
  - `run.ps1` for Windows (PowerShell)
  - `run.sh` for Linux/macOS (Bash)
- Configuration system via `config/appsettings.json`
- Automatic Java detection and validation
- Real-time progress reporting during tests
- Result file generation (`.jtl` format)
- Comprehensive troubleshooting documentation

### Security
- Database credentials passed as command-line parameters
- No credential storage in configuration files

## [0.3.0] - 2026-01-01

### Added

- Connection validation for Oracle and PostgreSQL before executing Option 1 (Full Migration)
- Automatic rollback of column and user permissions if errors occur during data migration

### Changed

- Option 1 (Full Migration) now combines all migration options: Full Migration, Partial Migration, and Partial Migration with Custom SQL Files
- Script now respects `max_table_import` setting for both structure migrations and table migrations

### Fixed

- Invalid Oracle objects are no longer migrated
- Script no longer hangs when errors occur while retrieving Oracle DDLs
- Script now properly fails when required tables, sequences, or types are missing in PostgreSQL

## [0.2.0] - 2025-11-10

### Added

- Option to choose between Oracle SID or Service string for the MTK toolkit

### Fixed

- DBUpgrade path is now properly quoted/wrapped to handle paths with spaces
- BLOB tables can now be migrated independently without requiring non-BLOB tables to be present

### Changed

- Default number of table batches for migration reduced from 500 to 100
- `Ignoreoracleobjects_schema_ts.txt` is now created and updated after every batch of tables

## [0.1.0] - 2025-10-01

### Added

- Initial release