Changelog

All notable changes to pgclone are documented in this file.

[2.1.3] — 2026-04

Fixed

  • Async bgworker: COPY pipeline error handling — failures now logged with PQerrorMessage, source COPY result consumed on error path to prevent connection leak
  • Async bgworker: WaitForBackgroundWorkerStartup added to all async functions — jobs no longer stuck in ‘pending’ state
  • pgclone_schema_async parallel mode: fixed hardcoded jobs[0] write that corrupted slot 0 in shared memory
  • pgclone_schema_async parallel mode: parent job now correctly transitions to COMPLETED after child workers finish

Added

  • pgclone_clear_jobs() function to free completed/cancelled job slots from shared memory
  • Async test suite (test/test_async.sh) covering pgclone_table_async, pgclone_schema_async, pgclone_progress, pgclone_jobs_view, pgclone_clear_jobs
  • CONTRIBUTING.md — development setup, code guidelines, PR process
  • SECURITY.md — vulnerability reporting, security considerations
  • Documentation restructured: docs/USAGE.md, docs/ASYNC.md, docs/TESTING.md, docs/ARCHITECTURE.md, CHANGELOG.md

[2.1.2] — 2026-03

Added

  • Elapsed time column in pgclone_jobs_view
  • elapsed_time field in progress detail output

[2.1.1] — 2026-03

Changed

  • Visual progress bar in pgclone_jobs_view replaces verbose NOTICE messages
  • Per-table/per-row NOTICE messages moved to DEBUG1 level

[2.1.0] — 2026-03

Added

  • pgclone_jobs_view — query async job progress as a standard PostgreSQL view
  • pgclone_progress_detail() — table-returning function for detailed progress

[2.0.1] — 2026-03

Added

  • pgclone_database_create() — create a new database and clone into it
  • Automatic pgclone extension installation in the target database
  • Idempotent behavior: clones into existing database if it already exists

[2.0.0] — 2026-02

Added

  • True multi-worker parallel cloning with "parallel": N option
  • Each table gets its own background worker
  • Parent worker monitors child workers via shared memory

Changed

  • Shared memory layout expanded for parallel job tracking

[1.2.0] — 2026-02

Added

  • Materialized view cloning during schema clone (with "matviews": false opt-out)
  • Exclusion constraint support (cloned alongside PK, UNIQUE, CHECK, FK)
  • Materialized view indexes and data are preserved

[1.1.0] — 2026-01

Added

  • Selective column cloning with "columns": [...] JSON option
  • Data filtering with "where": "..." JSON option
  • Automatic filtering of constraints/indexes referencing excluded columns

[1.0.0] — 2026-01

Added

  • Async clone operations via background workers (pgclone_table_async, pgclone_schema_async)
  • Job progress tracking (pgclone_progress, pgclone_jobs)
  • Job cancellation (pgclone_cancel)
  • Job resume from checkpoint (pgclone_resume)
  • Job cleanup (pgclone_clear_jobs)
  • Conflict resolution strategies: error, skip, replace, rename

[0.3.0] — 2025-12

Added

  • Background worker infrastructure
  • Shared memory allocation for job state
  • _PG_init with shmem hooks

[0.2.0] — 2025-12

Added

  • Index cloning (including expression and partial indexes)
  • Constraint cloning (PRIMARY KEY, UNIQUE, CHECK, FOREIGN KEY)
  • Trigger cloning with trigger functions
  • JSON options format for controlling indexes/constraints/triggers
  • Boolean parameter variants (pgclone_table_ex, pgclone_schema_ex)

[0.1.0] — 2025-11

Added

  • Initial release
  • pgclone_table() — clone a single table with or without data
  • pgclone_schema() — clone an entire schema
  • pgclone_functions() — clone functions only
  • pgclone_database() — clone all user schemas
  • COPY protocol for fast data transfer
  • pgclone_version() — version string
  • Support for PostgreSQL 14–18
  • pgTAP test suite (33 tests)
  • Docker Compose multi-version test infrastructure
  • GitHub Actions CI pipeline