Where are user-defined types stored/viewed

Started by Berend Toberover 22 years ago4 messagesgeneral
Jump to latest
#1Berend Tober
btober@seaworthysys.com

After I execute a command like

CREATE TYPE employee_wage_journal_sum AS (supplier_pk integer,
employee_pk integer,
hourly_dollars double precision,
annual_dollars double precision);

where does this definition get stored, and what query can I run to get
teh definition back as output?

I don't see the new type show up anywhere in pgAdminII.

The new type DOES show up in the result when I run

select * from pg_type order by typname

but I see only the name itself (and a lot of "*id" columns that probably
reference something relevant), but I don't know how to get the actual
definition back so that I can use an existing type definition as the
basis for modification when application design changes are required.

~Berend Tober

#2Richard Huxton
dev@archonet.com
In reply to: Berend Tober (#1)
Re: Where are user-defined types stored/viewed

On Monday 29 September 2003 13:35, btober@seaworthysys.com wrote:

After I execute a command like

CREATE TYPE employee_wage_journal_sum AS (supplier_pk integer,
employee_pk integer,
hourly_dollars double precision,
annual_dollars double precision);

where does this definition get stored, and what query can I run to get
teh definition back as output?

I don't see the new type show up anywhere in pgAdminII.

In psql:
\d emplokee_wage_journal_sum

If you start psql with -E it will show you the query it uses to show this too.

--
Richard Huxton
Archonet Ltd

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: Berend Tober (#1)
Re: Where are user-defined types stored/viewed

<btober@seaworthysys.com> writes:

After I execute a command like
CREATE TYPE employee_wage_journal_sum AS (supplier_pk integer,
employee_pk integer,
hourly_dollars double precision,
annual_dollars double precision);

I don't see the new type show up anywhere in pgAdminII.

Probably not. Stand-alone composite types (like the above) are a new
feature in 7.3, and pgAdminII likely doesn't know about them.

You might try pgAdmin III, which just got out of beta I believe.

but I see only the name itself (and a lot of "*id" columns that probably
reference something relevant), but I don't know how to get the actual
definition back so that I can use an existing type definition as the
basis for modification when application design changes are required.

There's always "pg_dump -s" to extract such stuff.

regards, tom lane

#4Berend Tober
btober@seaworthysys.com
In reply to: Richard Huxton (#2)
Re: Where are user-defined types stored/viewed

On Monday 29 September 2003 13:35, btober@seaworthysys.com wrote:

After I execute a command like

CREATE TYPE employee_wage_journal_sum AS (supplier_pk integer,
employee_pk integer,
hourly_dollars double precision,
annual_dollars double precision);

where does this definition get stored, and what query can I run to
get teh definition back as output?

I don't see the new type show up anywhere in pgAdminII.

In psql:
\d emplokee_wage_journal_sum

If you start psql with -E it will show you the query it uses to show
this too.

--
Richard Huxton
Archonet Ltd

Based on the output produced using your advice, I came up the the
following query to help me list my type definitions:

CREATE VIEW public.complex_types AS
SELECT
n.nspname,
c.relname,
a.attname,
pg_catalog.format_type(a.atttypid, a.atttypmod),
a.attnotnull,
a.atthasdef,
a.attnum,
nspacl
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
LEFT JOIN pg_catalog.pg_attribute a ON a.attrelid = c.relfilenode
WHERE pg_catalog.pg_table_is_visible(c.oid)
AND c.relkind = 'c'
ORDER BY
n.nspname,
c.relname,
a.attnum

~Berend Tober