Thread: Where are user-defined types stored/viewed
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
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
<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
> 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