Passing enum Parameters to User-defined C-Language Functions

From: Albrecht Dreß <albrecht(dot)dress(at)posteo(dot)de>
To: pgsql-general(at)lists(dot)postgresql(dot)org
Subject: Passing enum Parameters to User-defined C-Language Functions
Date: 2023-10-23 16:54:28
Message-ID: YPWPMG2B.7BAKC2P6.OUTXXAKJ@5ZHNMZGJ.ZUSHUKV4.TDKUFKXK
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hi,

I have a (I hope not too dumb) question regarding the use of enum parameters in a user-defined function written in C, e.g. for the example given in [1]: CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy');

- How would a “mood” parameter be encoded when it is passed to the function? “Four bytes on disk” might imply that its either an int4 or a float4?
- How is the association between enumlabel (e.g. 'happy') and value? The same as enumsortorder in pg_enum?
- How are NULL values encoded?

Or is it a bad idea to use an enum in this case – actually, an int2 plus a few #define's would do the job, too, but the dedicated type looks cleaner to me.

Thanks in advance,
Albrecht.

[1] <https://www.postgresql.org/docs/16/datatype-enum.html>

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Achilleas Mantzios 2023-10-23 16:56:17 Re: PostgreSQL inheritance vs https://wiki.postgresql.org/wiki/Don%27t_Do_This
Previous Message Alvaro Herrera 2023-10-23 16:54:09 Re: PostgreSQL inheritance vs https://wiki.postgresql.org/wiki/Don%27t_Do_This