Re: Is there a good way to handle sum types (or tagged unions) in PostgreSQL?

From: Victor Nordam Suadicani <v(dot)n(dot)suadicani(at)gmail(dot)com>
To: Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com>
Cc: pgsql-general(at)lists(dot)postgresql(dot)org
Subject: Re: Is there a good way to handle sum types (or tagged unions) in PostgreSQL?
Date: 2023-05-18 20:50:14
Message-ID: CAHbE9O2ngKjVqR58vdR9FPk52tf=MqdzL7P5czryQg=g8twT4Q@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

A composite type is a *product type*
<https://en.wikipedia.org/wiki/Product_type>, not a sum type
<https://en.wikipedia.org/wiki/Tagged_union>. PostgreSQL currently has
great support for product types, but basically no support for sum types.
From the perspective of algebraic data types, this feels like a "missing
link" in the type system. I'm not sure why SQL or the underlying relational
model has never addressed this deficiency. Would greatly appreciate any
insight anyone may have.

On Thu, 18 May 2023 at 16:35, Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com>
wrote:

> On 5/18/23 05:27, Victor Nordam Suadicani wrote:
> > Hi,
> >
> > Is there any nice way to handle sum types (aka tagged unions) in a
> > PostgreSQL database? I've searched far and wide and have not reached any
> > satisfying answer.
> >
> > As a (somewhat contrived) example, say I have the following enum in Rust:
> >
> > enum TaggedUnion {
> > Variant1(String),
> > Variant2(i32),
> > Variant3(f64),
> > }
> >
>
> > If there are no good methods of handling this, is there any way
> > PostgreSQL could be extended with capabilities for this? I have no idea
> > how this would be done in practice though. Perhaps SQL itself is just
> > unsuited for data of this kind? I don't really see why it should be
> though.
>
> Composite type?:
>
> https://www.postgresql.org/docs/current/rowtypes.html
> >
> > Thanks,
> > Victor Nordam Suadicani
>
> --
> Adrian Klaver
> adrian(dot)klaver(at)aklaver(dot)com
>
>

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Bruce Momjian 2023-05-18 20:56:39 Re: Would PostgreSQL 16 native transparent data encryption support database level encryption?
Previous Message Tom Lane 2023-05-18 20:05:39 Re: Unrecognized Node Type Warning