Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w6425-003unr-1h for pgsql-announce@arkaria.postgresql.org; Fri, 27 Mar 2026 10:03:14 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w6423-008wnr-2S for pgsql-announce@arkaria.postgresql.org; Fri, 27 Mar 2026 10:03:12 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w6422-008wnh-30 for pgsql-announce@lists.postgresql.org; Fri, 27 Mar 2026 10:03:11 +0000 Received: from mahout.postgresql.org ([2001:4800:3e1:1::227]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1w641z-00000001SO7-11rU for pgsql-announce@lists.postgresql.org; Fri, 27 Mar 2026 10:03:11 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=postgresql.org; s=20171124; h=Message-ID:Date:Reply-To:From:To:Subject: MIME-Version:Content-Type:Sender:Cc:Content-Transfer-Encoding:Content-ID: Content-Description:In-Reply-To:References; bh=OQ/JuGrKKv2a+0WuIxm5xNVr5voi7zJ1kGES7umIG64=; b=A7Ykv0obV0UaJZIEjriuJbCHQi kxTsI358PAmA+Ma9Kmt8E6mwSXFHFcrhBLVcam0HEYi6AKUn0agW3NWFQO/ED1r6tEixjRbgbKpQg va7j1Fqq8Ltty3aeHXTJLL08KmEBMAii6/txJZ4T7ZGEvVjqYDZD3YQexGUB/6wVbiUNV+LKZS7N3 piAXeF2dd818d9vdSakOZFzzMPjyBp7vj7BDIhrd8TwmbVinnDp+MrF5IDEtXE15EbZj0ptunp+rq nUeFSZRRvg3tVR+wJmRmNBQ9rpYwDCjcpyu8qJicyIXyjTt2TXvWjRsrWkBcACGXapgM9H7CcifFb K2o4hrhA==; Received: from wrigleys.postgresql.org ([2a02:16a8:dc51::60]) by mahout.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w641w-005G8y-2T for pgsql-announce@lists.postgresql.org; Fri, 27 Mar 2026 10:03:06 +0000 Received: from localhost ([127.0.0.1] helo=wrigleys.postgresql.org) by wrigleys.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w641u-007iIK-1y for pgsql-announce@lists.postgresql.org; Fri, 27 Mar 2026 10:03:03 +0000 Content-Type: multipart/alternative; boundary="===============8155446643546645383==" MIME-Version: 1.0 Subject: Greenmask 0.2.9 - 0.2.17 Releases To: PostgreSQL Announce From: "Greenmask.io via PostgreSQL Announce" Reply-To: info@greenmask.io Date: Fri, 27 Mar 2026 10:02:16 +0000 Message-ID: <177460573677.802.9847097552772553736@wrigleys.postgresql.org> X-Auto-Response-Suppress: All Auto-Submitted: auto-generated X-pglister-tags: related X-pglister-tagsig: 3e5c997027e9b2f71ab371a554327c8c8a61ed0afa18cc7ed5def15e30bcc1cb List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --===============8155446643546645383== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ## Database anonymization, synthetic data generation and logical dump ### Greenmask Overview Greenmask is a powerful open-source utility that is designed for logical da= tabase backup dumping, anonymization, synthetic data generation and restora= tion. It is stateless and does not require any changes to your database sch= ema. It is designed to be highly customizable and backward-compatible with = existing PostgreSQL utilities, fast and reliable. #### Use Cases * **Sensitive Data Sanitization**: Anonymize, transform, and mask PII for= staging, analytics, and testing environments, ensuring compliance and secu= rity. * **Backup & Restore**: A robust, drop-in replacement for `pg_dump`/`pg_r= estore` and `mysqldump`, handling schema and data with ease. * **Local Development**: Quickly spin up lightweight, referentially intac= t subsets of production databases for developers. * **Synthetic Data Generation**: Generate realistic test data from scratc= h to populate empty environments using the [CMD transformer](https://docs.g= reenmask.io/latest/built_in_transformers/standard_transformers/cmd/) and [c= ustom transformations](https://docs.greenmask.io/latest/built_in_transforme= rs/standard_transformers/cmd/). ### Changes * Implemented `-C` (`--create`) parameter logic for restoration [#414](http= s://github.com/GreenmaskIO/greenmask/pull/414) * Added in-memory storage for the `validate` command [#405](https://github.= com/GreenmaskIO/greenmask/pull/405) * Fixed stack overflow issue in inherited DFS logic [#409](https://github.c= om/GreenmaskIO/greenmask/pull/409) * Properly escape double-quote characters in SQL identifier quoting [#407](= https://github.com/GreenmaskIO/greenmask/pull/407) * Fixed dump status detection when metadata is missing [#404](https://githu= b.com/GreenmaskIO/greenmask/pull/404) * Revised playground documentation and added a demo [#406](https://github.c= om/GreenmaskIO/greenmask/pull/406) * Bumped Go version and fixed CI/linting warnings [#410](https://github.com= /GreenmaskIO/greenmask/pull/410) * Added Cloudflare R2 compatibility guide and fixed documentation typos [#4= 01](https://github.com/GreenmaskIO/greenmask/pull/401) * Fixed ACL entries restoration when using `--restore-in-order` [#345](http= s://github.com/GreenmaskIO/greenmask/pull/345) * Re-structured contributor documentation [#400](https://github.com/Greenma= skIO/greenmask/pull/400) * Enhanced and documented PostgreSQL version update procedure [#383](https:= //github.com/GreenmaskIO/greenmask/pull/383) * Fixed deterministic order in PK/FK introspection query, resolving issues = with composite foreign keys in the subset system [#398](https://github.com/= GreenmaskIO/greenmask/pull/398) * Updated sponsor logo [#399](https://github.com/GreenmaskIO/greenmask/pull= /399) * Supported PostgreSQL 18 [#380](https://github.com/GreenmaskIO/greenmask/p= ull/380) * Added `postcode` type to `Masking` transformer for masking postcodes [#36= 2](https://github.com/GreenmaskIO/greenmask/pull/362) * Added `skip_not_exist` parameter to `Json` transformer operations. This a= llows skipping the operation if the key does not exist by the provided path= [#356](https://github.com/GreenmaskIO/greenmask/pull/356) * Fixed temp file cleanup order in schema-only dump [#379](https://github.c= om/GreenmaskIO/greenmask/pull/379) * Fixed TOC entry duplication when merging schema and data sections [#378](= https://github.com/GreenmaskIO/greenmask/pull/378) * Fixed RandomPerson hash generation [#327](https://github.com/GreenmaskIO/= greenmask/pull/327) * Implemented `--quiet` flag for `list-dumps` command [#331](https://github= .com/GreenmaskIO/greenmask/pull/331). This makes it easy to use list-dumps in shell pipelines like: ```bash greenmask list-dumps -q | xargs -I {} greenmask delete {} ``` * Implemented an official greenmask installation script [#334](https://gith= ub.com/GreenmaskIO/greenmask/pull/334). Now greenmask can be installed with a single command: ```bash curl -fsSL https://greenmask.io/install.sh | bash ``` * Added a `--description` flag to the dump command, store it in metadata, a= nd display it in `list-dumps` for=20 better context [#339](https://github.com/GreenmaskIO/greenmask/pull/339). * Fixed logic in ExcludeSchema filter: now correctly returns false for excl= uded schemas, preventing them=20 from being restored [#343](https://github.com/GreenmaskIO/greenmask/pull/3= 43) * Fix: ensure SEQUENCE SET and BLOB entries are restored after topologicall= y sorted tables when=20 using `--restore-in-order` [#340](https://github.com/GreenmaskIO/greenmask= /pull/340) * Fixed command links in index documentation [#337](https://github.com/Gree= nmaskIO/greenmask/pull/337) * Fix: prevent panic when using `latest` dump id with `restore` command if = no dumps exist in=20 storage [#346](https://github.com/GreenmaskIO/greenmask/pull/346) * Fixed a panic in the introspection function when virtual references were = set on tables without primary keys=20 [#309](https://github.com/GreenmaskIO/greenmask/issues/309). Virtual refe= rences on such tables are still not=20 supported, but the function no longer panics. Related MR [#315](https://g= ithub.com/GreenmaskIO/greenmask/pull/315). * Fixed a case when greenmask hash engine ignores GREENMASK_GLOBAL_SALT [#3= 17](https://github.com/GreenmaskIO/greenmask/issues/317)=20 Related MR [#318](https://github.com/GreenmaskIO/greenmask/pull/318). * Added support for dynamic parameters in the Replace transformer, allowing= values to be dynamically replaced based on column values. This feature enables spreading the same value across multi= ple columns. See the [documentation](https://docs.greenmask.io/latest/built_in_transformer= s/standard_transformers/replace/) for examples. [#293](https://github.com/GreenmaskIO/greenmask/pull/293) * Updated the `--verbose` flag to a boolean type. It is now `true` if provi= ded and `false` otherwise. [#282](https://github.com/GreenmaskIO/greenmask/pull/282) * Fixed a bug in the `RandomDate` transformer where minutes were not trunca= ted as expected. [#298](https://github.com/GreenmaskIO/greenmask/pull/298) * Updated go dependencies to the latest. [#304](https://github.com/Greenmas= kIO/greenmask/pull/304) * Bump dependencies and upgraded go to 1.24 [#285](https://github.com/Green= maskIO/greenmask/pull/285). * Changed Oid type in TOC archive library [#286](https://github.com/Greenma= skIO/greenmask/pull/286).=20 Closes [#284](https://github.com/GreenmaskIO/greenmask/issues/284) * Revised documentation related to the log level values [#287](https://gith= ub.com/GreenmaskIO/greenmask/pull/287). Closes [#283](https://github.com/GreenmaskIO/greenmask/issues/283) * Implemented [RandomCompany](https://docs.greenmask.io/latest/built_in_tra= nsformers/standard_transformers/random_company/) transformer -=20 it's a multi-column transformer, that generates a company data with attri= butes `CompanyName` and `CompanyName`=20 [#273](https://github.com/GreenmaskIO/greenmask/pull/273) [#274](https://= github.com/GreenmaskIO/greenmask/pull/274). * Fixed a case when transformers with column containers were not printed on= `greenmask list-transformers` command call [#275](https://github.com/GreenmaskIO/greenmask/pull/275). * Fixed `RandomEmail` transformer bug when an incorrect buffer size for hex= -encoded symbols resulted in a `\0`=20 appearing in the string [#278](https://github.com/GreenmaskIO/greenmask/p= ull/278). * Fixed typo in database_subset.md docs [#271](https://github.com/Greenmask= IO/greenmask/pull/271) * Revised README.md [#280](https://github.com/GreenmaskIO/greenmask/pull/28= 0) #### Releases list: * [v0.2.9](https://github.com/GreenmaskIO/greenmask/releases/tag/v0.2.9) * [v0.2.10](https://github.com/GreenmaskIO/greenmask/releases/tag/v0.2.10) * [v0.2.11](https://github.com/GreenmaskIO/greenmask/releases/tag/v0.2.11) * [v0.2.12](https://github.com/GreenmaskIO/greenmask/releases/tag/v0.2.12) * [v0.2.13](https://github.com/GreenmaskIO/greenmask/releases/tag/v0.2.13) * [v0.2.14](https://github.com/GreenmaskIO/greenmask/releases/tag/v0.2.14) * [v0.2.15](https://github.com/GreenmaskIO/greenmask/releases/tag/v0.2.15) * [v0.2.16](https://github.com/GreenmaskIO/greenmask/releases/tag/v0.2.16) * [v0.2.17](https://github.com/GreenmaskIO/greenmask/releases/tag/v0.2.17) ### Links Feel free to reach out to us if you have any questions or need assistance: * [Greenmask repository](https://github.com/GreenmaskIO/greenmask) * [Documentation](https://docs.greenmask.io/latest/) * [Discord](https://discord.gg/tAJegUKSTB) * [Email](mailto:support@greenmask.io) * [Twitter](https://twitter.com/GreenmaskIO) * [Telegram [RU]](https://t.me/greenmask_ru) * [DockerHub](https://hub.docker.com/r/greenmask/greenmask) --===============8155446643546645383== Content-Type: text/html; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Greenmask 0.2.9 - 0.2.17 Releases
 

Greenmask 0.2.9 - 0.2.17 Releases

Database anonymization, synthet= ic data generation and logical dump

Greenmask Overview

Greenmask is a powerful open-source utility= that is designed for logical database backup dumping, anonymization, synth= etic data generation and restoration. It is stateless and does not require = any changes to your database schema. It is designed to be highly customizab= le and backward-compatible with existing PostgreSQL utilities, fast and rel= iable.

Use Cases

  • Sensiti= ve Data Sanitization: Anonymize, transform, and mask PII for stagi= ng, analytics, and testing environments, ensuring compliance and security.<= /li>
  • Backup = & Restore: A robust, drop-in replacement for pg_dump/pg_restore and mysqldump, handling schema and= data with ease.
  • Local D= evelopment: Quickly spin up lightweight, referentially intact subs= ets of production databases for developers.
  • Synthet= ic Data Generation: Generate realistic test data from scratch to p= opulate empty environments using the CMD transformer and custom transformatio= ns.

Changes

  • Implemented -C (--create) parameter logic for restoration #414
  • Added in-memory= storage for the validate command #405
  • Fixed stack ove= rflow issue in inherited DFS logic = #409
  • Properly escape= double-quote characters in SQL identifier quoting #407
  • Fixed dump stat= us detection when metadata is missing #404
  • Revised playgro= und documentation and added a demo = #406
  • Bumped Go versi= on and fixed CI/linting warnings #4= 10
  • Added Cloudflar= e R2 compatibility guide and fixed documentation typos #401
  • Fixed ACL entri= es restoration when using --restore-in-order #345
  • Re-structured c= ontributor documentation #400
  • Enhanced and do= cumented PostgreSQL version update procedure #383
  • Fixed determini= stic order in PK/FK introspection query, resolving issues with composite fo= reign keys in the subset system #39= 8
  • Updated sponsor= logo #399
  • Supported Postg= reSQL 18 #380
  • Added pos= tcode type to Masking transformer for masking postcodes= #362
  • Added ski= p_not_exist parameter to Json transformer operations. T= his allows skipping the operation if the key does not exist by the provided= path #356
  • Fixed temp file= cleanup order in schema-only dump = #379
  • Fixed TOC entry= duplication when merging schema and data sections #378
  • Fixed RandomPer= son hash generation #327
  • Implemented --quiet flag for list-dumps command #331. This makes it easy to use list-dumps in shell pipelines like: bash greenmask list-dumps -q | xargs -I {} greenmask delete {}
  • Implemented an = official greenmask installation script #334. Now greenmask can be installed with a single command: bash curl -fsSL https://greenmask.io/install.sh | bash
  • Added a -= -description flag to the dump command, store it in metadata, and dis= play it in list-dumps for=20 better context #339.
  • Fixed logic in = ExcludeSchema filter: now correctly returns false for excluded schemas, pre= venting them=20 from being restored #343
  • Fix: ensure SEQ= UENCE SET and BLOB entries are restored after topologically sorted tables w= hen=20 using --restore-in-order #340
  • Fixed command l= inks in index documentation #337
  • Fix: prevent pa= nic when using latest dump id with restore comman= d if no dumps exist in=20 storage #346
  • Fixed a panic i= n the introspection function when virtual references were set on tables wit= hout primary keys=20 #309. Virtual references on= such tables are still not=20 supported, but the function no longer panics. Related MR #315.
  • Fixed a case wh= en greenmask hash engine ignores GREENMASK_GLOBAL_SALT #317=20 Related MR #318.
  • Added support f= or dynamic parameters in the Replace transformer, allowing values to be dyn= amically replaced based on column values. This feature enables spreading the same value across multi= ple columns. See the documentation for examples. #293
  • Updated the --verbose flag to a boolean type. It is now true if = provided and false otherwise. #282
  • Fixed a bug in = the RandomDate transformer where minutes were not truncated as expected. #298
  • Updated go depe= ndencies to the latest. #304
  • Bump dependenci= es and upgraded go to 1.24 #285= .
  • Changed Oid typ= e in TOC archive library #286. = Closes #284
  • Revised documen= tation related to the log level values #287. Closes #283
  • Implemented RandomCompany transformer -=20 it's a multi-column transformer, that generates a company data with attri= butes CompanyName and CompanyName #273 #274.
  • Fixed a case wh= en transformers with column containers were not printed on greenmask = list-transformers command call #275.
  • Fixed Ran= domEmail transformer bug when an incorrect buffer size for hex-encod= ed symbols resulted in a \0=20 appearing in the string #278.=
  • Fixed typo in d= atabase_subset.md docs #271
  • Revised README.= md #280

Releases list:

Links

Feel free to reach out to us if you have an= y questions or need assistance:

This email was sent to you from Greenmask.io. It was delivered on their beh= alf by the PostgreSQL project. Any questions about the content of the message shou= ld be sent to Greenmask.io.

You were sent this email as a subscriber of the pgsql-announce mai= linglist, for the content tag Related Open Source. To unsubscribe from further emails, or change which emails you want to receive, please click th= e personal unsubscribe link that you can find in the headers of this email, or visit https://lists.postgresql.org/unsubscribe/.
 
--===============8155446643546645383==--