Re: question about access custom enum type from C - Mailing list pgsql-hackers

From Dmitry Markman
Subject Re: question about access custom enum type from C
Date
Msg-id 607438C1-0339-4859-A5C4-B01CC232AF7C@mac.com
Whole thread Raw
In response to Re: question about access custom enum type from C  (David Rowley <dgrowleyml@gmail.com>)
List pgsql-hackers
Hi David

as you suggested

create type first_type as enum ('red', 'green', 'brown', 'yellow', 'blue');
SELECT oid,typname,typlen,typtype from pg_type where typname='first_type'

returns everything I was looking for

thanks again, I think I’m all set

dm


> On Sep 1, 2022, at 12:49 AM, David Rowley <dgrowleyml@gmail.com> wrote:
>
> (I think this is a better question for the general mailing list)
>
> On Thu, 1 Sept 2022 at 16:28, Dmitry Markman <dmarkman@mac.com> wrote:
>>
>> Hi, when I’m trying to access values of my custom enum type I created with
>>
>> create type colors as enum ('red', 'green', 'brown', 'yellow', 'blue');
>>
>> I’m getting oid as 16387 and I can see it stored as a chars
>
> You might see the names if you query the table, but all that's stored
> in the table is the numerical value.
>
> https://www.postgresql.org/docs/current/datatype-enum.html states "An
> enum value occupies four bytes on disk.".
>
>> is number 16387 is always OID for enum type?
>
> I'm not sure where you got that number from. Perhaps it's the oid for
> the pg_type record? The following would show it.
>
> select oid,typname from pg_type where typname = 'colors';
>
>> if not how I can get information about type of the result if it’s custom enum type
>
> I'm not sure what you mean by "the result".  Maybe pg_typeof(column)
> might be what you want? You can do: SELECT pg_typeof(myenumcol) FROM
> mytable;
>
> David




pgsql-hackers by date:

Previous
From: Kyotaro Horiguchi
Date:
Subject: Re: pg15b3: recovery fails with wal prefetch enabled
Next
From: Justin Pryzby
Date:
Subject: Re: FOR EACH ROW triggers, on partitioend tables, with indexes?