Thread: pg_class and enum types

pg_class and enum types

From
Gevik Babakhani
Date:
I was wondering why there is no pg_class record for the enum types. Do 
we treat the enum types differently?

-- 
Regards,
Gevik



Re: pg_class and enum types

From
Robert Haas
Date:
On Sun, May 24, 2009 at 4:37 PM, Gevik Babakhani <pgdev@xs4all.nl> wrote:
> I was wondering why there is no pg_class record for the enum types. Do we
> treat the enum types differently?

Because types are stored in pg_type, not pg_class?

...Robert


Re: pg_class and enum types

From
Gevik Babakhani
Date:
Robert Haas wrote:
> On Sun, May 24, 2009 at 4:37 PM, Gevik Babakhani <pgdev@xs4all.nl> wrote:
>   
>> I was wondering why there is no pg_class record for the enum types. Do we
>> treat the enum types differently?
>>     
>
> Because types are stored in pg_type, not pg_class?
>
> ...Robert
>   
That is certainly not true.... check the following...

create type test_type as
(field1 integer,field2 varchar
);

select * from pg_class where relname='test_type'

-- 
Regards,
Gevik



Re: pg_class and enum types

From
Andrew Dunstan
Date:

Gevik Babakhani wrote:
> I was wondering why there is no pg_class record for the enum types. Do 
> we treat the enum types differently?
>

Why do you think we should? What would the record look like?

cheers

andrew


Re: pg_class and enum types

From
Andrew Dunstan
Date:

Gevik Babakhani wrote:
> Robert Haas wrote:
>> On Sun, May 24, 2009 at 4:37 PM, Gevik Babakhani <pgdev@xs4all.nl> 
>> wrote:
>>  
>>> I was wondering why there is no pg_class record for the enum types. 
>>> Do we
>>> treat the enum types differently?
>>>     
>>
>> Because types are stored in pg_type, not pg_class?
>>
>> ...Robert
>>   
> That is certainly not true.... check the following...
>
> create type test_type as
> (
> field1 integer,
> field2 varchar
> );
>
> select * from pg_class where relname='test_type'

It's not so much that enum types are handled specially, but that 
composite types are. :-)

There is no pg_class entry for int either.

cheers

andrew


Re: pg_class and enum types

From
Gevik Babakhani
Date:
Andrew Dunstan wrote:
>
>
> Gevik Babakhani wrote:
>> I was wondering why there is no pg_class record for the enum types. 
>> Do we treat the enum types differently?
>>
>
> Why do you think we should? What would the record look like?
>
> cheers
>
> andrew
I am not implying whether we  should or we should  not.  I was just  
looking  for the  logic behind it.
Re-reading what I just wrote with your reply gives me hint.

Thanx.

-- 
Regards,
Gevik



Re: pg_class and enum types

From
Tom Lane
Date:
Andrew Dunstan <andrew@dunslane.net> writes:
> Gevik Babakhani wrote:
>> select * from pg_class where relname='test_type'

> It's not so much that enum types are handled specially, but that 
> composite types are. :-)

Relations (tables) have always had both pg_class and pg_type entries.
The pg_class entry denotes the relation proper, the pg_type entry
denotes the relation's rowtype.

Composite types have the same two entries, there's just a different
notion of which one is primary.

(The reason a composite type has to have a pg_class entry is that
it has pg_attribute entries, and those have to have something in
pg_class for their attrelid to link to.)
        regards, tom lane


Re: pg_class and enum types

From
Gevik Babakhani
Date:
Tom Lane wrote:
> Andrew Dunstan <andrew@dunslane.net> writes:
>   
>> Gevik Babakhani wrote:
>>     
>>> select * from pg_class where relname='test_type'
>>>       
>
>   
>> It's not so much that enum types are handled specially, but that 
>> composite types are. :-)
>>     
>
> Relations (tables) have always had both pg_class and pg_type entries.
> The pg_class entry denotes the relation proper, the pg_type entry
> denotes the relation's rowtype.
>
> Composite types have the same two entries, there's just a different
> notion of which one is primary.
>
> (The reason a composite type has to have a pg_class entry is that
> it has pg_attribute entries, and those have to have something in
> pg_class for their attrelid to link to.)
>
>             regards, tom lane
>
>   
Thank you :)

-- 
Regards,
Gevik