# 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).
## [0.7.6] - 2026-06-16
### Changed
- Port: migration `ObjectTypes` filter `package` now implicitly includes **`packagebody`** so missing package bodies stay in the differences list
- Port: fixed the CLAIMHIS migration issue by updating the column name from EDIStatus -> ClaimStatus and EDIStatusUpdateDate -> ClaimStatusUpdateDate
- Port: fixed `session_replication_role` setup failing for mixed-case PostgreSQL users (e.g. `UserMixCase`) by sending psql commands through stdin so role-name quotes are preserved

## [0.7.5] - 2026-05-04

### Added
- Cluster: `scripts/fix-tpa-bugs.sh` - 3 TPA certificate bug fixes added to, eliminating the need for scripts or hooks
- Cluster: `config.yml` - Added `autovacuum`, postgres logging, and patroni logging settings

### Changed
- Cluster: removed scripts `fix-patroni-restapi-certs.sh` and `fix-tpa-cert-perms.sh`
- Cluster: removed `cert-fix-post-deploy.yml`
- Cluster: Improved performance of the `post-deploy.yml` hook
- Cluster: `config.yml` - minor var cleanup and organization

## [0.7.4] - 2026-04-28

### Added
- Cluster TPA hooks and config templates, Ubuntu `autoinstall` templates, shell scripts
- Option 8: Run SPL Check on Postgres
- Created new project `README.md`

### Changed
- Port: psql execution improvement and error handling
- Port: Option 7 shows MTK command when fewer than 50 tables 
- Port: `runMTK` tweaks
- Port: PA column capitalization
- Port: Updated `readme.md`, moved to `tools/hs1-port`
- Port: Updated golden DDL `claimhis` table, 2026.1 support
- Renamed `CHANGELOG` to `CHANGELOG.md` and updated pipeline

## [0.7.3] - 2026-04-24

### Changed
- updated signature in the golden dll - appoint_estimate_proc, ptbal_over30

## [0.7.2] - 2026-04-23

### Changed
- updated signature in the golden dll - isrecallactive

## [0.7.1] - 2026-04-20

### Added
- Comparison support for indexes, constraints, and not-null constraints, ignoring tables in the ignore file
 - LIMITATION: will continue to show indexes and constraints in the comparison report even if they are ignored, but they wont be processed
- Execute custom Postgres triggers/constraints in `SQL-PostgreSQL-Indexes-Constraints.sql`

### Changed
- Major refactoring of object migration
- Removed support for non-batched migrations, `MAX_TABLE_IMPORT` is now required

### Fixed
- Some tables had `numeric` columns in the golden DDL
- Sequence count prior to dropping sequences was not correct
- Improved performance of object comparison
- Adjusted logging level of some actions (from error to warning/info)

## [0.7.0] - 2026-04-02

### Added
- Full Migration now requires Oracle db version to be at least 202601
- New reports folder `output\[ORACLE_USER]_[timestamp]_reports`
- New Option 7 - compare table row counts between oracle and postgres and write report to the reports folder. Assesses missing tables in postgres, plus row count mismatches
- Option 7 produces an `ignoreoracleobjects_[ORACLE_USER].txt` for all matches
- Option 7 produces an `[ORACLE_USER]_livecompare.ini` in the reports folder for use with the `livecompare` tool 
- TYPES and TEMPORARY TABLES now run automatically, with autofixers applied
- Autofixer updated to handle `NUMBER(x)` and `NUMBER(x,0)` to integer/smallint
- Autofixer updated to handle `NUMBER(11-38)` and `NUMBER(11-38,0)` to `bigint`
- Autofixer updated to handle `DATE DEFAULT TO_DATE(SYSDATE)` for new tables to `DEFAULT CURRENT_DATE`

### Changed
- Table structure importing is done manually using autofixer to convert numeric to integer
- Postgres and Oracle reports now appear in the new reports folder, instead of in `\output`
- No longer retrying tables with failed rows automatically using the LOB table method
- Database Upgrade errors do not block the remaining steps
- Golden DDL - Updated to 2026.1 pre-release
- Golden DDL - Updated to use int instead of numbers
- Golden DDL - Removed a few MU objects
- Golden DDL - Added more standard objects
- Data migration now uses the truncLoad and -fastCopy flag for all options
- Renamed `SQL-Rename-EDI-Columns` and `SQL-Reverse-Rename-EDI-Columns` to `SQL-Reverse-Rename-Table-Columns` and `SQL-Rename-Table-Columns`
- Postgres DBUpgrade now downgrades to 202503 instead of 202501

### Fixed
- Some FK constraints moved to `/helper/SQL-PostgreSQL-ForeignKeys.sql` because they were always guaranteed to fail. Script will no longer automatically apply them as they aren't required. We may add an option to create FK constraints.
- `online_custquestion` and `online_custques_ans` were the wrong names, due to issues in DBUpgrade (now resolved)
- Some error messages downgraded to warnings for readability

## [0.6.0] - 2026-02-18

### Added
- Created pipeline build to run automatically 
- Build artifacts now have the version when it is downloaded
- Port will now manually truncate tables. An error will be thrown if there are FK, but script will continue
- Missing package bodies in Postgres will now be overwritten to Oracle's copy

### Changed
- User and db default to schema name, instead of appending `_user` and `_db`
- Auto processing now allows custom file path
- Additional auto fixers added: 
- `MESSAGE."TEXT"%TYPE;` > `MESSAGE.TEXT%TYPE;`
- `up."PICTURE"` > `up.PICTURE`
- `END (objectname);` > `END;`
- `CREATE .. EDITIONABLE .. FORCE ..` > `CREATE .. .. ..`
- `(n BYTE)` > `(n)`
- `"ONEDAY"` (case insensitive) > `oneday`
- The folder output\[database]\FailedDBObjects\[structure type]are no longer saved under the subfolders (ie trigger\batchx) but renamed batchx___filename
- The script will continue as normal if there are no tables to migrate
- Missing flags -vacuumAnalyze 
- Added column name changes to get PANAV data migrated
- Graceful exit when the script gets interruipted via ctrl-c
- The data migration without the -copyViaDBLinkOra flag will iterate through each LOB and failed objects and truncate the data
- Objects in the IgnoreOracleObjects.txt file now shows up in one line rather than indiviudal lines

### Fixed
- Custom SQL scripts could only be applied in certain stages of a full migration
- The "Total failed objects count" has been removed
- The objects in the "failed_objects_manual_fixes_required" now shows correctly

## [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