Contents
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:
WaitForBackgroundWorkerStartupadded to all async functions — jobs no longer stuck in ‘pending’ state pgclone_schema_asyncparallel mode: fixed hardcodedjobs[0]write that corrupted slot 0 in shared memorypgclone_schema_asyncparallel 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) coveringpgclone_table_async,pgclone_schema_async,pgclone_progress,pgclone_jobs_view,pgclone_clear_jobs CONTRIBUTING.md— development setup, code guidelines, PR processSECURITY.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_timefield in progress detail output
[2.1.1] — 2026-03
Changed
- Visual progress bar in
pgclone_jobs_viewreplaces 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 viewpgclone_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": Noption - 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": falseopt-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_initwith 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 datapgclone_schema()— clone an entire schemapgclone_functions()— clone functions onlypgclone_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