Thread: datatype.sgml misleading regclass example

datatype.sgml misleading regclass example

From
Michael Fuhr
Date:
PostgreSQL 7.4.5, 8.0.0beta3

The Object Identifier Types section of the PostgreSQL documentation
contains the following:

  for example, one may write 'mytable'::regclass to get the OID
  of table mytable, rather than SELECT oid FROM pg_class WHERE
  relname = 'mytable'.

To get the OID, don't we then need to cast to the oid type?

test=> SELECT 'mytable'::regclass;
 regclass
----------
 mytable
(1 row)

test=> SELECT 'mytable'::regclass::oid;
  oid
-------
 26664
(1 row)

--
Michael Fuhr
http://www.fuhr.org/~mfuhr/

Re: datatype.sgml misleading regclass example

From
Tom Lane
Date:
Michael Fuhr <mike@fuhr.org> writes:
>   for example, one may write 'mytable'::regclass to get the OID
>   of table mytable, rather than SELECT oid FROM pg_class WHERE
>   relname = 'mytable'.
> To get the OID, don't we then need to cast to the oid type?

If you want to see it as a numeric value, yeah, but you can for example
compare it to an OID column without doing that.

SELECT attname FROM pg_attribute WHERE attrelid = 'mytable'::regclass;

Most of the time when I'm using a regxxx cast, it's because I *don't*
want to be bothered with the numeric value.

            regards, tom lane