== Cat Tools These are tools that make it easier to interface with the Postgres catalog tables/views/functions. They are meant for use by code, not by people. To make use of them, you need to grant `cat_tools__usage` to any roles that need access. == Current Status image:https://badge.fury.io/pg/cat_tools.svg["PGXN version",link="https://badge.fury.io/pg/cat_tools"] image:https://travis-ci.org/decibel/cat_tools.png["Build Status",link="https://travis-ci.org/decibel/cat_tools"] This is very much a work in progress. If it doesn't do something you need, please https://github.com/decibel/cat_tools/issues[open an issue]! === Supported Versions Works on Postgres 9.3 and above. == Data Types * `cat_tools.object_type` - Descriptive names for every type of Postgres object (table, operator, rule, etc) * `cat_tools.constraint_type` - Types of constraints (`domain constraint` or `table_constraint`) * `cat_tools.relation_type` - Types of objects stored in `pg_class` * `cat_tools.relation_relkind` - Valid values for `pg_class.relkind` == Functions * `cat_tools.currval(table, column)` - Returns current value for a sequence owned by a column * `cat_tools.enum_range(regtype)` - Returns valid values for an ENUM as an array * `cat_tools.enum_range_srf(regtype)` - Returns valid values for an ENUM as a recordset * `cat_tools.name__check(text)` - Throws an error if input would be truncated when cast to name * `cat_tools.pg_class(relation regclass)` - Returns cat_tools.pg_class_v row for a relation * `cat_tools.function__arg_types(arguments)` - Accepts full function argument string and returns regtype[] of IN/INOUT arguments * `cat_tools.function__arg_types_text(arguments)` - Version of `function__arg_types` that returns text * `cat_tools.object__catalog(object_type)` - Returns catalog table that is used to store `object_type` objects * `cat_tools.object__reg_type(object_catalog)` - Returns the "reg" pseudotype (ie: regclass) associated with a system catalog (ie: pg_class) * `cat_tools.regprocedure(function_name, arguments)` - Returns regprocedure for function_name and it's full set of arguments * `cat_tools.relation__kind(relkind)` - Mapping from `pg_class.relkind` to a `cat_tools.relation_type` * `cat_tools.relation__relkind(relation_type)` - Mapping from `cat_tools.relation_type` to a `pg_class.relkind` value * `cat_tools.trigger__parse(trigger oid)` - Returns information about a trigger * `cat_tools.trigger__get_oid(trigger_table, trigger_name)` - oid of a trigger. Throws error if trigger doesn't exits. * `cat_tools.trigger__get_oid__loose(trigger_table, trigger_name)` - oid of a trigger. Does _not_ throw error if trigger doesn't exits. == Views WARNING: These views may eventually move into a separate extension! * `cat_tools.pg_class_v` - Joins pg_class to pg_namespace * `cat_tools.column` - Returns data about columns * `cat_tools.pg_all_foreign_keys` - Data about foreign keys Copyright and License --------------------- Cat Tools is released under a https://github.com/decibel/cattools/blob/master/LICENSE[MIT license]. Copyright (c) 2016 Jim Nasby .