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.94.2) (envelope-from ) id 1uwiw9-006fUx-7H for pgsql-general@arkaria.postgresql.org; Thu, 11 Sep 2025 15:10:13 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1uwiw7-008N1A-GE for pgsql-general@arkaria.postgresql.org; Thu, 11 Sep 2025 15:10:11 +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.94.2) (envelope-from ) id 1uwiw7-008N11-2x for pgsql-general@lists.postgresql.org; Thu, 11 Sep 2025 15:10:11 +0000 Received: from mail-ed1-x536.google.com ([2a00:1450:4864:20::536]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uwiw2-000DGP-38 for pgsql-general@lists.postgresql.org; Thu, 11 Sep 2025 15:10:10 +0000 Received: by mail-ed1-x536.google.com with SMTP id 4fb4d7f45d1cf-628f29d68ecso1713216a12.3 for ; Thu, 11 Sep 2025 08:10:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1757603407; x=1758208207; darn=lists.postgresql.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=TxtIqi+4o59qUwDF87shdBaBLgFhH7lRVk/nqYDao1k=; b=VS3NDM6l0LxI45EO3IYlQEXSjIHLOdjv07KPrDwqPt12yPSv/RkGacvjz39wW+EsX1 fBtJclpnFI56UvFoA3V+B7swuCKsXU/awHLch0/OpLHfeN7G1ph0EWXb8Adwv8zIgdHI IiqDeMJuIqddvrTCI7TaUqWHPHIhi/R0YNwjrHS0Cr7Hhr6qERNByRAnyepOBAaMV7V2 DFGFA8jfPmOa5UggH5Yz0avooXWsU60RmAzf/3qeCiHQ/mveoM7nZrWS9ZFdYBc86i5j LBqaX2aN+Nz/j/fMVXr/pz5s6dLK4QXqEWkwui/EgecRLoi/64Bgy64BDFkSCxPyqXkh H+3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757603407; x=1758208207; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=TxtIqi+4o59qUwDF87shdBaBLgFhH7lRVk/nqYDao1k=; b=KNQFno5wldIApytkjSSw1TXyJY5uY2jPbaDZxJVFDVkHIGP6l12bC/jSivPg0F6IiG UAmqU+892MrFRQjVNOLW/PQ1oVOOFEVI8bKyrZWcxx1awHq+O7xvTCA8i+GWphEmXNIp lww7n8XZ79F8GQIQqZn96QMCZXuUhNzrjetWpUz1SzWDy8+hjDRU3nMUHOcNa3k2H/KA cljy7jz7fodTC1nXobpUKj6mftzs4dYnZnjaIWmzgSO5MzKqeaUhyFCW4GYibBGO4Yfr gM3gLObsQEoJMOgUnkq2C3BZtxN7yM8/h6IZSTHnAbhlEU/Gwl7SeMcs2W7NzfSwgLfa fFSw== X-Gm-Message-State: AOJu0YwD/ropI/84lSKLKsvz7jZQeuJPH9T2BnW6bzwzcBMTMq65V92u vEKLJL7dgHgJc2Y8iOrgcGW5rx+cbmsFuTO3eYlNVIdctrxL42mS+VXeDcx8hKUL0cDoNrEGc87 BFJce6rPMtyO4aAyuKT+OBt1pWlOle5/2Jx4m X-Gm-Gg: ASbGncvAaIUKnHzgZ4+b7VXt00fjDtHDT2W3tT6nS+rykeY4o1wTGA0iTCXdFYa48ma pKhX8Ae3MLPdYNQZ9gTEimS7s3YEM4FB0o/FKPUW2hIx2jFO6xARtkFPo3+kU2GSSaaKMZoHwVW ctkohoAJyDMZVJVAED/zHyY9cK8gDil8OiD39k+yn5G+Fl6wVXcLxdgab8qhefc0eclpJHxDglW fTP9OG7FUXYfGU0pBURL0Ljn5iAo28luj7eNtBkYlbSs1eTTyic9A/B+3eF X-Google-Smtp-Source: AGHT+IGbE9gQtc2DBlL9PDkFAW0475gBwNwA9fB1Whnc62xExo1V6HEiFL6Gd8jnm6yxXU+G/xXOoZ1aHr6M9vEvt6Q= X-Received: by 2002:a05:6402:35c9:b0:628:4ae6:3a4b with SMTP id 4fb4d7f45d1cf-6284ae63f4amr14250283a12.1.1757603407209; Thu, 11 Sep 2025 08:10:07 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Lorusso Domenico Date: Thu, 11 Sep 2025 17:09:31 +0200 X-Gm-Features: AS18NWBtKzxotB3VLDMe-9IhDkwRk9LYIV2MbG1am6NMFEJ9YiN2mLuK-KKdiok Message-ID: Subject: =?UTF-8?Q?Re=3A_=5BAnnouncement=5D_=E2=80=8BA_Bitemporal_Solution_for_Post?= =?UTF-8?Q?greSQL_=28Beta=29?= To: pgsql-general@lists.postgresql.org Content-Type: multipart/alternative; boundary="000000000000be2a0a063e87eef6" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000be2a0a063e87eef6 Content-Type: text/plain; charset="UTF-8" sorry here the link https://github.com/DomenicoL/table-versioning/ Il giorno gio 11 set 2025 alle ore 17:08 Lorusso Domenico < domenico.l76@gmail.com> ha scritto: > Dear all, > > I am gald to share an open-source project I've been developing in my free > time. It's a bitemporal solution built entirely within PostgreSQL, and > while it's still in its early beta stages, it has the ambition to provide a > comprehensive framework for temporal data management. The project is > inspired by the need for a simple, yet powerful way to handle historical > records and query data as it existed at any point in time. > > This solution is designed to be highly configurable and uses views with INSTEAD > OF triggers to seamlessly manage inserts, updates, and deletes across > _current and _history tables. Key features include: > > - > > *Bitemporal Support*: Tracks both "valid time" (when a fact is true in > the real world) and "transaction time" (when the fact was recorded in the > database). > - > > *Automatic Historicization*: The system automatically creates and > manages historical records, ensuring a complete, immutable audit trail. > - > > *Trigger-based Logic*: The core logic is encapsulated in a > vrsn.trigger_handler() function, making it easy to apply to any table > via a view. > - > > *Configurable Behavior*: A set of parameters and state variables ( > vrsn.tar_state_variables) allows for fine-grained control over > versioning, conflict resolution, and other behaviors. > - > > *Adherence to Bitemporal Theory*: The framework is designed to be > fully compliant with the bitemporal model proposed by Snodgrass. > - > > *Pure SQL & Transparency*: The solution is built using pure PostgreSQL > functions and types, requiring *no external extensions*, and it > maintains a *transparent data structure* that does not mask the > underlying tables. > > This project is a work in progress, and I would love to get your feedback > and collaboration to improve it. If the concept interests you and you'd > like to dive into the code or offer some guidance, your expertise would be > highly valued. > > Thank you for your time and consideration. > > Bye > > > -- > Domenico L. > > -- Domenico L. per stupire mezz'ora basta un libro di storia, io cercai di imparare la Treccani a memoria... [F.d.A.] --000000000000be2a0a063e87eef6 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Il giorno gio 11 set 2= 025 alle ore 17:08 Lorusso Domenico <domenico.l76@gmail.com> ha scritto:
Dear all,

I am gald to share an open-source project I've been dev= eloping in my free time. It's a bitemporal solution built entirely with= in PostgreSQL, and while it's still in its early beta stages, it has th= e ambition to provide a comprehensive framework for temporal data managemen= t. The project is inspired by the need for a simple, yet powerful way to ha= ndle historical records and query data as it existed at any point in time.<= /span>

This solution is designed to be highly configurable and = uses views with INSTEAD OF triggers = to seamlessly manage inserts, updates, and deletes across _current and _history tables. Key features include:

  • Bi= temporal Support: Tracks both "valid time" = (when a fact is true in the real world) and "transaction time" (w= hen the fact was recorded in the database).

  • <= span>Automatic Historicization: The system automatica= lly creates and manages historical records, ensuring a complete, immutable = audit trail.

  • Trigger-based Logic= : The core logic is encapsulated in a vrs= n.trigger_handler() function, making it easy to apply t= o any table via a view.

  • Configurable Be= havior: A set of parameters and state variables (vrsn.tar_state_variables) allows for fin= e-grained control over versioning, conflict resolution, and other behaviors= .

  • Adherence to Bitemporal Theory= : The framework is designed to be fully compliant with the b= itemporal model proposed by Snodgrass.

  • = Pure SQL & Transparency: The solution is built us= ing pure PostgreSQL functions and types, requiring no = external extensions, and it maintains a transparent data structure that does not mask= the underlying tables.

This project is a work= in progress, and I would love to get your feedback and collaboration to im= prove it. If the concept interests you and you'd like to dive into the = code or offer some guidance, your expertise would be highly valued.<= /p>

Thank you for your time and consideration.

<= span class=3D"gmail_default" style=3D"font-family:garamond,serif;font-size:= large">Bye


--
Domenico L.



--
Domenico L.

per stupire mezz'ora basta un libro di sto= ria,
io cercai di imparare la Treccani a memoria... [F.d.A.]
--000000000000be2a0a063e87eef6--