PG hackers,
AndrewSN, Jim Nasby, Elein and I have been working for the last couple of
months on a new set of system views for PostgreSQL. � (primarily Andrew, who
did the lion's share of the work and came up with many clever SQL
workarounds) �We'd like to include them in the 8.1 release, so we're going to
post most of the definitions for your feedback now. �Let me summarize:
Goals of the New System Views
---------------------------------------
1. To be easily human-readable, unlike the system tables.
2. To provide a consistent API to PostgreSQL object definitions which will
seldom (if ever) be changed, only added to.
3. To provide queryable definitions for all PostgreSQL objects.
In more detail:
1. The current system tables are designed around performance and code
requirements, and as such are optimized for code access, not
comprehensability. �Column names are obscure, special system data types are
used, and everything is OIDs and typids. �This is perfect for our code, but
too many user-space applications are using these tables for comfort. �Our
first system views (pg_tables, for example) only went halfway in providing a
user-friendly interface. �So the new system views have the following
requirements:
��������a) all view and column names are as explicit and as readable as
� � possible (e.g. "type_schema_name", not "typnsname")
��������b) OIDs, typids, and other system codes are avoided wherever possible
� � in preference to full object names
��������c) In most places, "system" objects are segregated from "user"
objects,
� � e.g. pg_user_indexes
2. One of the issues with user applications querying the system tables is that
they can be subject to significant changes from version to version. � This
has kept the pgAdmin and phpPgAdmin teams busy since 7.2, and means that GUI
tools which fall out of maintenance (like Xpg) soon stop working. �This is
easily remedied through a set of system views which will remain consistent
regardless of changes in the underlying system tables. �This has the
beneficial effect of giving us more freedom to make changes to the system
tables.
� � � Further, we discovered when we proposed dropping the old system views
that once these views are created we're stuck with them for several years, if
not forever; people's not-easily-recoded tools rely on them.
��������d) Columns may be added to the system views, but never dropped or
� � changed in incompatible ways. �Likewise, views will be added but
� � not dropped or renamed.
��������e) Users and app developers should be actively encouraged to use the
� � system views rather than the system tables in the documentation.
��������f) Existing projects, features and add-ons, where appropriate,
� � should gradually be shifted to use the system views to minimize
� � version maintenance.
3. The new system views (unlike, for example, \d) are designed to be a SQL
interface to system objects. � This means that:
��������g) All views are as normalized as possible, using child views rather
� �than�arrays, and providing keys and consistent join columns.
��������h) Each view or set of views provides all of the data required
� � to replicate the appropriate CREATE statement.
��������i) Column names are designed to be universal to a particular type of
data,
� � �where this does not cause duplication. �For example,
� � �pg_user_tables has "schema_name" rather than "table_schema".
� � �This was done to make joins easier (i.e. USING, NATURAL JOIN)
Additional assumptions we worked with include:
j) all view names are plural in order to prevent conflict with
� � system tables.
�����k) no procedural languages are used, as we don't want to make PLs
� � mandatory. � Currently everything is SQL (really!) and we may move
� � a few functions to a C library eventually.
l) internal functions required for the system views are named using a
� �"_pg_" convention.
��������m) We will be offering a "back-patch" for 7.4 and 8.0 via pgFoundry.
What We Need From Hackers
--------------------------------------
(other than patch approval, that is)
As stated above, these system views, once incorporated into a pg distribution,
are likely to be with us *forever*. � As such, we really can't afford to do
major refactoring of the column names and structure once they're released. �
So it's really, really, important for everyone on hackers to look over the
definitions below and find stuff that we've missed or doesn't make any sense. �
Also, we'd like to know about 8.1 changes that affect these views.
There are two additional other questions to discuss that our team as not
settled:
I) Should the new views be part of /contrib before they become part of the
main source?
II) Should the new views be in their own schema? � This would make them easier
to manage for DBAs who want to restrict access or dump them, but would add a
second "system" schema to the template.
Information_Schema note
---------------------------------
Q: Why not just use information_schema?
A: Because the columns and layout of information_schema is strictly defined by
the SQL standard. �This prevents it from covering all PostgreSQL objects, or
from covering the existing objects adequately to replicate a CREATE
statement. �As examples, there is no "types" table in information_schema, and
the "constraints" table assumes that constraint names are universally unique
instead of table-unique as they are in PG.
The View Definitions
----------------------------------
The column definitions of the views are below. � Please examine them
carefully. �Currently, the following views are incomplete and thus not
included:
pg_functions
pg_function_parameters
pg_types
pg_acl_modes
� � Column � �| Type |
�-------------+------+-----------
� object_type | text |
� mode � � � �| text |
� granted � � | text |
� description | text |
�
pg_all_aggregates
� � � � �Column � � � � | �Type � | Modifiers
�-----------------------+---------+-----------
� schema_name � � � � � | name � �|
� aggregate_name � � � �| name � �|
� input_type_schema � � | name � �|
� input_type � � � � � �| name � �|
� output_type_schema � �| name � �|
� output_type � � � � � | name � �|
� initial_value � � � � | text � �|
� trans_function_schema | name � �|
� trans_function_name � | name � �|
� final_function_schema | name � �|
� final_function_name � | name � �|
� is_system_aggregate � | boolean |
� owner � � � � � � � � | name � �|
pg_user_aggregates
� � � � �Column � � � � | �Type � | Modifiers
�-----------------------+---------+-----------
� schema_name � � � � � | name � �|
� aggregate_name � � � �| name � �|
� input_type_schema � � | name � �|
� input_type � � � � � �| name � �|
� output_type_schema � �| name � �|
� output_type � � � � � | name � �|
� initial_value � � � � | text � �|
� trans_function_schema | name � �|
� trans_function_name � | name � �|
� final_function_schema | name � �|
� final_function_name � | name � �|
� owner � � � � � � � � | name � �|
pg_all_casts
� � � � Column � � � | �Type � |
�--------------------+---------+-----------
� source_schema � � �| name � �|
� source_type � � � �| name � �|
� target_schema � � �| name � �|
� target_type � � � �| name � �|
� function_schema � �| name � �|
� function_name � � �| name � �|
� function_arguments | text � �|
� context � � � � � �| text � �|
� is_system_cast � � | boolean |
pg_user_casts
� � � � Column � � � | �Type � |
�--------------------+---------+-----------
� source_schema � � �| name � �|
� source_type � � � �| name � �|
� target_schema � � �| name � �|
� target_type � � � �| name � �|
� function_schema � �| name � �|
� function_name � � �| name � �|
� function_arguments | text � �|
� context � � � � � �| text � �|
pg_all_conversions
� � � � �Column � � � �| �Type � | Modifiers
�----------------------+---------+-----------
� schema_name � � � � �| name � �|
� conversion_name � � �| name � �|
� source_encoding � � �| name � �|
� destination_encoding | name � �|
� is_default � � � � � | boolean |
� function_schema � � �| name � �|
� function_name � � � �| name � �|
� is_system_conversion | boolean |
� owner � � � � � � � �| name � �|
pg_user_conversions
� � � � �Column � � � �| �Type � |
�----------------------+---------+-----------
� schema_name � � � � �| name � �|
� conversion_name � � �| name � �|
� source_encoding � � �| name � �|
� destination_encoding | name � �|
� is_default � � � � � | boolean |
� function_schema � � �| name � �|
� function_name � � � �| name � �|
� owner � � � � � � � �| name � �|
pg_databases
� � � � Column � � � | �Type � |
�--------------------+---------+-----------
� database_name � � �| name � �|
� encoding � � � � � | name � �|
� default_tablespace | name � �|
� database_config � �| text[] �|
� is_template � � � �| boolean |
� can_connect � � � �| boolean |
� owner � � � � � � �| name � �|
pg_database_config
� � � � Column � � � | Type |
�--------------------+------+-----------
� database_name � � �| name |
� config_variable � �| text |
� config_value � � � | text |
pg_all_foreign_key_indexes, pg_user_foreign_key_indexes
� � � � Column � � � �| �Type � | Modifiers
�---------------------+---------+-----------
� schema_name � � � � | name � �|
� table_name � � � � �| name � �|
� constraint_name � � | name � �|
� num_columns � � � � | integer |
� num_indexed_columns | integer |
� index_name � � � � �| name � �|
pg_all_foreign_keys, pg_user_foreign_keys
� � � � � � Column � � � � � �| �Type � |
�-----------------------------+---------+-----------
� foreign_key_schema_name � � | name � �|
� foreign_key_table_name � � �| name � �|
� foreign_key_constraint_name | name � �|
� foreign_key_table_oid � � � | oid � � |
� foreign_key_columns � � � � | name[] �|
� key_schema_name � � � � � � | name � �|
� key_table_name � � � � � � �| name � �|
� key_constraint_name � � � � | name � �|
� key_table_oid � � � � � � � | oid � � |
� key_index_name � � � � � � �| name � �|
� key_columns � � � � � � � � | name[] �|
� match_type � � � � � � � � �| text � �|
� on_delete � � � � � � � � � | text � �|
� on_update � � � � � � � � � | text � �|
� is_deferrable � � � � � � � | boolean |
� is_deferred � � � � � � � � | boolean |
pg_all_foreign_key_columns, pg_user_foreign_key_columns
� � � � � � Column � � � � � �| �Type � |
�-----------------------------+---------+-----------
� foreign_key_schema_name � � | name � �|
� foreign_key_table_name � � �| name � �|
� foreign_key_constraint_name | name � �|
� foreign_key_table_oid � � � | oid � � |
� foreign_key_column � � � � �| name � �|
� column_position � � � � � � | integer |
� key_schema_name � � � � � � | name � �|
� key_table_name � � � � � � �| name � �|
� key_table_oid � � � � � � � | oid � � |
� key_column � � � � � � � � �| name � �|
pg_all_grants, pg_user_grants
� � �Column � �| �Type � |
�--------------+---------+-----------
� object_type �| name � �|
� object_oid � | oid � � |
� schema_name �| name � �|
� object_name �| name � �|
� object_args �| text � �|
� owner � � � �| name � �|
� grantor � � �| text � �|
� grantee � � �| text � �|
� is_group � � | boolean |
� privilege � �| text � �|
� grant_option | boolean |
pg_groups
� � Column � | �Type � |
�------------+---------+-----------
� group_name | name � �|
� gid � � � �| integer |
pg_groups_users
� � Column � | Type |
�------------+------+-----------
� group_name | name |
� user_name �| name |
pg_all_index_columns, pg_user_index_columns
� � � Column � � �| �Type � |
�-----------------+---------+-----------
� schema_name � � | name � �|
� table_name � � �| name � �|
� index_name � � �| name � �|
� column_name � � | name � �| NULL if an expression
� column_position | integer | 1..n
� opclass_schema �| name � �|
� opclass_name � �| name � �|
� definition � � �| text � �| expression or column name
pg_all_indexes
� � � Column � � �| � � Type � � �|
�-----------------+---------------+-----------
� schema_name � � | name � � � � �|
� table_name � � �| name � � � � �|
� index_name � � �| name � � � � �|
� tablespace � � �| name � � � � �|
� index_method � �| name � � � � �|
� num_columns � � | smallint � � �|
� is_primary_key �| boolean � � � |
� is_unique � � � | boolean � � � |
� is_clustered � �| boolean � � � |
� is_expression � | boolean � � � |
� is_partial � � �| boolean � � � |
� estimated_rows �| real � � � � �|
� estimated_mb � �| numeric(12,1) |
� is_system_table | boolean � � � |
� table_oid � � � | oid � � � � � |
� predicate � � � | text � � � � �|
� definition � � �| text � � � � �|
� owner � � � � � | name � � � � �|
� comment � � � � | text � � � � �|
pg_user_indexes
� � � Column � � �| � � Type � � �|
�-----------------+---------------+-----------
� schema_name � � | name � � � � �|
� table_name � � �| name � � � � �|
� index_name � � �| name � � � � �|
� tablespace � � �| name � � � � �|
� index_method � �| name � � � � �|
� num_columns � � | smallint � � �|
� is_primary_key �| boolean � � � |
� is_unique � � � | boolean � � � |
� is_clustered � �| boolean � � � |
� is_expression � | boolean � � � |
� is_partial � � �| boolean � � � |
� estimated_rows �| real � � � � �|
� estimated_mb � �| numeric(12,1) |
� predicate � � � | text � � � � �|
� definition � � �| text � � � � �|
� owner � � � � � | name � � � � �|
� comment � � � � | text � � � � �|
pg_all_relation_columns, pg_user_relation_columns
� � �Column � � | �Type � |
�---------------+---------+-----------
� schema_name � | name � �|
� relation_name | name � �|
� column_name � | name � �|
� relation_oid �| oid � � |
� column_number | integer |
� is_view � � � | boolean |
� nullable � � �| boolean |
� declared_type | text � �|
� default_value | text � �|
� comment � � � | text � �|
pg_all_relation_column_type_info, pg_user_relation_column_type_info
� � � � Column � � � | �Type � |
�--------------------+---------+-----------
� schema_name � � � �| name � �|
� relation_name � � �| name � �|
� column_name � � � �| name � �|
� relation_oid � � � | oid � � |
� column_number � � �| integer |
� is_view � � � � � �| boolean |
� nullable � � � � � | boolean |
� domain_schema � � �| name � �|
� domain_name � � � �| name � �|
� type_sqlname � � � | text � �| "bare" SQL name, e.g. 'numeric'
� type_sqldef � � � �| text � �| full SQL name, e.g. 'numeric(10,2)'
� type_schema � � � �| name � �|
� type_name � � � � �| name � �|
� type_oid � � � � � | oid � � |
� type_length � � � �| integer |
� is_array � � � � � | boolean |
� array_dimensions � | integer | currently always 1 for arrays
� element_sqlname � �| text � �|
� element_sqldef � � | text � �|
� element_schema � � | name � �|
� element_name � � � | name � �|
� element_oid � � � �| oid � � |
� element_length � � | integer |
� character_length � | integer |
� bit_length � � � � | integer |
� integer_precision �| integer |
� float_precision � �| integer |
� numeric_precision �| integer |
� numeric_scale � � �| integer |
� time_precision � � | integer |
� interval_precision | integer |
� interval_fields � �| text � �|
pg_all_relations
� � � Column � � � � | � � Type � � �|
�--------------------+---------------+-----------
� schema_name � � � �| name � � � � �|
� relation_name � � �| name � � � � �|
� is_system_relation | boolean � � � |
� is_temporary � � � | boolean � � � |
� is_view � � � � � �| boolean � � � |
� relation_oid � � � | oid � � � � � |
� owner � � � � � � �| name � � � � �|
� comment � � � � � �| text � � � � �|
pg_user_relations
� � � Column � � � � | � � Type � � �|
�--------------------+---------------+-----------
� schema_name � � � �| name � � � � �|
� relation_name � � �| name � � � � �|
� is_temporary � � � | boolean � � � |
� is_view � � � � � �| boolean � � � |
� owner � � � � � � �| name � � � � �|
� comment � � � � � �| text � � � � �|
pg_all_rules, pg_user_rules
� � �Column � � | �Type � |
�---------------+---------+-----------
� schema_name � | name � �|
� relation_name | name � �|
� rule_name � � | name � �|
� rule_event � �| text � �|
� is_instead � �| boolean |
� condition � � | text � �|
� action � � � �| text � �|
pg_all_schemas
� � � � Column � � � �| �Type � |
�---------------------+---------+-----------
� schema_name � � � � | name � �|
� is_system_schema � �| boolean |
� is_temporary_schema | boolean |
� owner � � � � � � � | name � �|
� comment � � � � � � | text � �|
pg_user_schemas
� � � � Column � � � �| �Type � |
�---------------------+---------+-----------
� schema_name � � � � | name � �|
� is_temporary_schema | boolean |
� owner � � � � � � � | name � �|
� comment � � � � � � | text � �|
pg_all_schema_contents, pg_user_schema_contents
� � Column � �| Type |
�-------------+------+-----------
� schema_name | name |
� owner � � � | name |
� object_type | name |
� object_name | name |
� object_args | text |
pg_all_sequences
� � � � Column � � � | �Type � |
�--------------------+---------+-----------
� schema_name � � � �| name � �|
� sequence_name � � �| name � �|
� is_system_sequence | boolean |
� is_temporary � � � | boolean |
pg_user_sequences
� � � � Column � � � | �Type � |
�--------------------+---------+-----------
� schema_name � � � �| name � �|
� sequence_name � � �| name � �|
� is_temporary � � � | boolean |
pg_all_table_columns, pg_user_table_columns
� � �Column � � | �Type � |
�---------------+---------+-----------
� schema_name � | name � �|
� table_name � �| name � �|
� column_name � | name � �|
� table_oid � � | oid � � |
� column_number | integer |
� nullable � � �| boolean |
� declared_type | text � �|
� default_value | text � �|
� comment � � � | text � �|
pg_all_table_column_type_info, pg_user_table_column_type_info
� � � � Column � � � | �Type � |
�--------------------+---------+-----------
� schema_name � � � �| name � �|
� table_name � � � � | name � �|
� column_name � � � �| name � �|
� table_oid � � � � �| oid � � |
� column_number � � �| integer |
� nullable � � � � � | boolean |
� domain_schema � � �| name � �|
� domain_name � � � �| name � �|
� type_sqlname � � � | text � �| "bare" SQL name, e.g. 'numeric'
� type_sqldef � � � �| text � �| full SQL name, e.g. 'numeric(10,2)'
� type_schema � � � �| name � �|
� type_name � � � � �| name � �|
� type_oid � � � � � | oid � � |
� type_length � � � �| integer |
� is_array � � � � � | boolean |
� array_dimensions � | integer | currently always 1 for arrays
� element_sqlname � �| text � �|
� element_sqldef � � | text � �|
� element_schema � � | name � �|
� element_name � � � | name � �|
� element_oid � � � �| oid � � |
� element_length � � | integer |
� character_length � | integer |
� bit_length � � � � | integer |
� integer_precision �| integer |
� float_precision � �| integer |
� numeric_precision �| integer |
� numeric_scale � � �| integer |
� time_precision � � | integer |
� interval_precision | integer |
� interval_fields � �| text � �|
pg_all_table_constraints, pg_user_table_constraints
� � � Column � � �| Type |
�-----------------+------+-----------
� schema_name � � | name |
� table_name � � �| name |
� constraint_name | name |
� constraint_type | text |
� table_oid � � � | oid �|
� definition � � �| text |
pg_all_table_constraint_columns, pg_user_table_constraint_columns
� � � Column � � �| �Type � |
�-----------------+---------+-----------
� schema_name � � | name � �|
� table_name � � �| name � �|
� constraint_name | name � �|
� column_name � � | name � �|
� column_position | integer |
� constraint_type | text � �|
� table_oid � � � | oid � � |
pg_all_unique_constraint_columns, pg_user_unique_constraint_columns
� � � Column � � �| �Type � |
�-----------------+---------+-----------
� schema_name � � | name � �|
� table_name � � �| name � �|
� constraint_name | name � �|
� is_primary_key �| boolean |
� column_name � � | name � �|
� column_position | integer |
� table_oid � � � | oid � � |
pg_all_primary_key_columns, pg_user_primary_key_columns
� � � Column � � �| �Type � |
�-----------------+---------+-----------
� schema_name � � | name � �|
� table_name � � �| name � �|
� constraint_name | name � �|
� column_name � � | name � �|
� column_position | integer |
� table_oid � � � | oid � � |
pg_all_table_check_constraints, pg_user_table_check_constraints
� � � Column � � �| �Type �|
�-----------------+--------+-----------
� schema_name � � | name � |
� table_name � � �| name � |
� constraint_name | name � |
� table_oid � � � | oid � �|
� columns � � � � | name[] |
� predicate � � � | text � |
pg_all_table_inheritance, pg_user_table_inheritance
�
� � � �Column � � � | �Type � |
�-------------------+---------+-----------
� schema_name � � � | name � �|
� table_name � � � �| name � �|
� table_oid � � � � | oid � � |
� descendent_schema | name � �|
� descendent_table �| name � �|
� descendent_oid � �| oid � � |
� ordinal_position �| integer |
pg_all_table_storage, pg_user_table_storage
� � � Column � � � � � � | � � Type � � �|
�------------------------+---------------+-----------
� schema_name � � � � � �| name � � � � �|
� table_name � � � � � � | name � � � � �|
� tablespace � � � � � � | name � � � � �|
� is_temporary � � � � � | boolean � � � |
� num_indexes � � � � � �| integer � � � |
� clustered_on � � � � � | name � � � � �|
� estimated_rows � � � � | real � � � � �|
� estimated_index_rows � | real � � � � �|
� estimated_total_mb � � | numeric � � � |
� estimated_data_mb � � �| numeric � � � |
� estimated_main_mb � � �| numeric � � � |
� estimated_external_mb �| numeric � � � |
� estimated_index_mb � � | numeric � � � |
� index_tablespaces � � �| name[] � � � �|
�
pg_all_tables
� � � Column � � �| � � Type � � �|
�-----------------+---------------+-----------
� schema_name � � | name � � � � �|
� table_name � � �| name � � � � �|
� tablespace � � �| name � � � � �|
� with_oids � � � | boolean � � � |
� estimated_rows �| real � � � � �|
� estimated_mb � �| numeric(12,1) | includes toast but not indexes
� has_toast_table | boolean � � � |
� has_descendents | boolean � � � |
� is_system_table | boolean � � � |
� is_temporary � �| boolean � � � |
� table_oid � � � | oid � � � � � |
� owner � � � � � | name � � � � �|
� comment � � � � | text � � � � �|
pg_user_tables
� � � Column � � �| � � Type � � �|
�-----------------+---------------+-----------
� schema_name � � | name � � � � �|
� table_name � � �| name � � � � �|
� tablespace � � �| name � � � � �|
� with_oids � � � | boolean � � � |
� estimated_rows �| real � � � � �|
� estimated_mb � �| numeric(12,1) | includes toast but not indexes
� has_toast_table | boolean � � � |
� has_descendents | boolean � � � |
� is_temporary � �| boolean � � � |
� owner � � � � � | name � � � � �|
� comment � � � � | text � � � � �|
pg_tablespaces
� � Column � �| �Type � |
�-------------+---------+-----------
� tablespace �| name � �|
� location � �| text � �|
� is_writable | boolean |
� owner � � � | name � �|
� comment � � | text � �|
pg_tablespace_usage
� � Column � | Type |
�------------+------+-----------
� tablespace | name |
� database � | name |
pg_all_tablespace_contents, pg_user_tablespace_contents
� � �Column � � | � � Type � � �|
�---------------+---------------+-----------
� tablespace � �| name � � � � �|
� object_type � | text � � � � �|
� owner � � � � | name � � � � �|
� object_schema | name � � � � �|
� object_name � | name � � � � �|
� estimated_mb �| numeric(12,1) |
pg_all_triggers, pg_user_triggers
� � � Column � � �| �Type � |
�-----------------+---------+-----------
� schema_name � � | name � �|
� table_name � � �| name � �|
� trigger_name � �| name � �|
� function_schema | name � �|
� function_name � | name � �|
� function_args � | text[] �|
� function_oid � �| oid � � |
� before � � � � �| boolean |
� for_each_row � �| boolean |
� on_insert � � � | boolean |
� on_delete � � � | boolean |
� on_update � � � | boolean |
� enabled � � � � | boolean |
� definition � � �| text � �|
� comment � � � � | text � �|
�
pg_users
� � � � � Column � � � � | � � � � � Type � � � � � |
�------------------------+--------------------------+-----------
� user_name � � � � � � �| name � � � � � � � � � � |
� uid � � � � � � � � � �| integer � � � � � � � � �|
� create_datebase � � � �| boolean � � � � � � � � �|
� create_user � � � � � �| boolean � � � � � � � � �|
� superuser � � � � � � �| boolean � � � � � � � � �|
� update_system_catalogs | boolean � � � � � � � � �|
� password_expires � � � | timestamp with time zone |
pg_user_config
� � � Column � � �| Type |
�-----------------+------+-----------
� user_name � � � | name |
� config_variable | text |
� config_value � �| text |
pg_all_view_columns, pg_user_view_columns
� � �Column � � | �Type � |
�---------------+---------+-----------
� schema_name � | name � �|
� view_name � � | name � �|
� column_name � | name � �|
� view_oid � � �| oid � � |
� column_number | integer |
� nullable � � �| boolean |
� declared_type | text � �|
� default_value | text � �|
� comment � � � | text � �|
pg_all_view_column_type_info, pg_user_view_column_type_info
� � � � Column � � � | �Type � |
�--------------------+---------+-----------
� schema_name � � � �| name � �|
� view_name � � � � �| name � �|
� column_name � � � �| name � �|
� view_oid � � � � � | oid � � |
� column_number � � �| integer |
� nullable � � � � � | boolean |
� domain_schema � � �| name � �|
� domain_name � � � �| name � �|
� type_sqlname � � � | text � �| "bare" SQL name, e.g. 'numeric'
� type_sqldef � � � �| text � �| full SQL name, e.g. 'numeric(10,2)'
� type_schema � � � �| name � �|
� type_name � � � � �| name � �|
� type_oid � � � � � | oid � � |
� type_length � � � �| integer |
� is_array � � � � � | boolean |
� array_dimensions � | integer | currently always 1 for arrays
� element_sqlname � �| text � �|
� element_sqldef � � | text � �|
� element_schema � � | name � �|
� element_name � � � | name � �|
� element_oid � � � �| oid � � |
� element_length � � | integer |
� character_length � | integer |
� bit_length � � � � | integer |
� integer_precision �| integer |
� float_precision � �| integer |
� numeric_precision �| integer |
� numeric_scale � � �| integer |
� time_precision � � | integer |
� interval_precision | integer |
� interval_fields � �| text � �|
pg_all_views
� � � Column � � �| � � Type � � �|
�-----------------+---------------+-----------
� schema_name � � | name � � � � �|
� view_name � � � | name � � � � �|
� is_insertable � | boolean � � � |
� is_updateable � | boolean � � � |
� is_deleteable � | boolean � � � |
� definition � � �| text � � � � �|
� is_system_view �| boolean � � � |
� view_oid � � � �| oid � � � � � |
� owner � � � � � | name � � � � �|
� comment � � � � | text � � � � �|
pg_user_views
� � � Column � � �| � � Type � � �|
�-----------------+---------------+-----------
� schema_name � � | name � � � � �|
� view_name � � � | name � � � � �|
� is_insertable � | boolean � � � |
� is_updateable � | boolean � � � |
� is_deleteable � | boolean � � � |
� definition � � �| text � � � � �|
� owner � � � � � | name � � � � �|
� comment � � � � | text � � � � �|
--
Josh Berkus
Aglio Database Solutions
San Francisco
---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?
http://archives.postgresql.org