This Release
cat_tools 0.2.1
Other Releases
Tools for interfacing with the Postgres catalog
Released By
Special Files


cat_tools 0.2.1
Tools for interfacing with the catalog




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

This is very much a work in progress. If it doesn’t do something you need, please 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


  • 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.pg_extension__get(extension_name name) - Returns cat_tools.pg_extension_v row for an extension

  • cat_tools.extension__schemas(extension_names text/name[]) - Returns the schemas for the requested functions

  • cat_tools.extension__schemas_unique(extension_names text/name[]) - Returns a unique array of schemas

  • 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__args_as_text(text) - Converts the arguments for a trigger function (as returned by trigger__parse()) to text (for backwards compatibility).

  • 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.

  • cat_tools.trigger__parse(trigger oid) - Returns information about a trigger

  • cat_tools.trigger__parse(table_name regclass, trigger_name text) - Returns information about a trigger


These views may eventually move into a separate extension!
  • cat_tools.pg_class_v - Joins pg_class to pg_namespace

  • cat_tools.pg_extension_v - Joins pg_extension to pg_namespace; cast extconfig to regclass[]

  • 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 MIT license.

Copyright (c) 2016 Jim Nasby <>.