Thread: How to get the size of non fixed-length field from system catalog ?

How to get the size of non fixed-length field from system catalog ?

From
Postgres User
Date:
Hi,

I'm writing a small ORM tool and have written a number of queries to
retrieve table metadata.  One piece of data that I'm having trouble
hunting down is the size of a CHAR field.  For example, one table has
a 'user_id' column of type CHAR(36).  But when I look at the
pg_attribute and pg_type tables, I can't seem to find this size value
of 36.

Can anyone share the SQL that returns the size of a CHAR?  It is NOT
the 'typlen' column.  The answer may be the 'typelem' column, but I
can't find details on how to decode it.

Thanks.

Re: How to get the size of non fixed-length field from system catalog ?

From
Thomas Kellerer
Date:
Postgres User wrote on 08.06.2009 23:03:
> Hi,
>
> I'm writing a small ORM tool and have written a number of queries to
> retrieve table metadata.  One piece of data that I'm having trouble
> hunting down is the size of a CHAR field.  For example, one table has
> a 'user_id' column of type CHAR(36).  But when I look at the
> pg_attribute and pg_type tables, I can't seem to find this size value
> of 36.
>
> Can anyone share the SQL that returns the size of a CHAR?  It is NOT
> the 'typlen' column.  The answer may be the 'typelem' column, but I
> can't find details on how to decode it.
>

Use the information_schema, that is easier:

SELECT character_maximum_length
FROM information_schema.columns
WHERE table_name = 'your_table'
AND column_name = 'the_char_column';

http://www.postgresql.org/docs/8.3/static/infoschema-columns.html

Thomas