Thread: question about access custom enum type from C
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 is number 16387 is always OID for enum type? if not how I can get information about type of the result if it’s custom enum type thanks in advance dm
(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
Hi David, thanks a lot for your answer
I got that number from
PQparamtype
I already see that 16387 is not a ‘constant’, if I have few custom types I got different numbers for them
thanks
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
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