diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-13 13:44:03 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-13 13:44:03 +0000 |
commit | 293913568e6a7a86fd1479e1cff8e2ecb58d6568 (patch) | |
tree | fc3b469a3ec5ab71b36ea97cc7aaddb838423a0c /src/tutorial/syscat.source | |
parent | Initial commit. (diff) | |
download | postgresql-16-293913568e6a7a86fd1479e1cff8e2ecb58d6568.tar.xz postgresql-16-293913568e6a7a86fd1479e1cff8e2ecb58d6568.zip |
Adding upstream version 16.2.upstream/16.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | src/tutorial/syscat.source | 175 |
1 files changed, 175 insertions, 0 deletions
diff --git a/src/tutorial/syscat.source b/src/tutorial/syscat.source new file mode 100644 index 0000000..0e7bc7b --- /dev/null +++ b/src/tutorial/syscat.source @@ -0,0 +1,175 @@ +--------------------------------------------------------------------------- +-- +-- syscat.sql- +-- sample queries to the system catalogs +-- +-- +-- Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group +-- Portions Copyright (c) 1994, Regents of the University of California +-- +-- src/tutorial/syscat.source +-- +--------------------------------------------------------------------------- + +-- +-- Sets the schema search path to pg_catalog first, so that we do not +-- need to qualify every system object +-- +SET search_path TO pg_catalog; + +-- The LIKE pattern language requires underscores to be escaped, so make +-- sure the backslashes are not misinterpreted. +SET standard_conforming_strings TO on; + +-- +-- lists the names of all database owners and the name of their database(s) +-- +SELECT rolname, datname + FROM pg_roles, pg_database + WHERE pg_roles.oid = datdba + ORDER BY rolname, datname; + +-- +-- lists all user-defined classes +-- +SELECT n.nspname, c.relname + FROM pg_class c, pg_namespace n + WHERE c.relnamespace=n.oid + and c.relkind = 'r' -- not indices, views, etc + and n.nspname not like 'pg\_%' -- not catalogs + and n.nspname != 'information_schema' -- not information_schema + ORDER BY nspname, relname; + + +-- +-- lists all simple indices (ie. those that are defined over one simple +-- column reference) +-- +SELECT n.nspname AS schema_name, + bc.relname AS class_name, + ic.relname AS index_name, + a.attname + FROM pg_namespace n, + pg_class bc, -- base class + pg_class ic, -- index class + pg_index i, + pg_attribute a -- att in base + WHERE bc.relnamespace = n.oid + and i.indrelid = bc.oid + and i.indexrelid = ic.oid + and i.indkey[0] = a.attnum + and i.indnatts = 1 + and a.attrelid = bc.oid + ORDER BY schema_name, class_name, index_name, attname; + + +-- +-- lists the user-defined attributes and their types for all user-defined +-- classes +-- +SELECT n.nspname, c.relname, a.attname, format_type(t.oid, null) as typname + FROM pg_namespace n, pg_class c, + pg_attribute a, pg_type t + WHERE n.oid = c.relnamespace + and c.relkind = 'r' -- no indices + and n.nspname not like 'pg\_%' -- no catalogs + and n.nspname != 'information_schema' -- no information_schema + and a.attnum > 0 -- no system att's + and not a.attisdropped -- no dropped columns + and a.attrelid = c.oid + and a.atttypid = t.oid + ORDER BY nspname, relname, attname; + + +-- +-- lists all user-defined base types (not including array types) +-- +SELECT n.nspname, r.rolname, format_type(t.oid, null) as typname + FROM pg_type t, pg_roles r, pg_namespace n + WHERE r.oid = t.typowner + and t.typnamespace = n.oid + and t.typrelid = 0 -- no complex types + and t.typelem = 0 -- no arrays + and n.nspname not like 'pg\_%' -- no built-in types + and n.nspname != 'information_schema' -- no information_schema + ORDER BY nspname, rolname, typname; + + +-- +-- lists all prefix operators +-- +SELECT n.nspname, o.oprname AS prefix_op, + format_type(right_type.oid, null) AS operand, + format_type(result.oid, null) AS return_type + FROM pg_namespace n, pg_operator o, + pg_type right_type, pg_type result + WHERE o.oprnamespace = n.oid + and o.oprkind = 'l' -- prefix ("left unary") + and o.oprright = right_type.oid + and o.oprresult = result.oid + ORDER BY nspname, operand; + + +-- +-- lists all infix operators +-- +SELECT n.nspname, o.oprname AS binary_op, + format_type(left_type.oid, null) AS left_opr, + format_type(right_type.oid, null) AS right_opr, + format_type(result.oid, null) AS return_type + FROM pg_namespace n, pg_operator o, pg_type left_type, + pg_type right_type, pg_type result + WHERE o.oprnamespace = n.oid + and o.oprkind = 'b' -- infix ("binary") + and o.oprleft = left_type.oid + and o.oprright = right_type.oid + and o.oprresult = result.oid + ORDER BY nspname, left_opr, right_opr; + + +-- +-- lists the name, number of arguments and the return type of all user-defined +-- C functions +-- +SELECT n.nspname, p.proname, p.pronargs, format_type(t.oid, null) as return_type + FROM pg_namespace n, pg_proc p, + pg_language l, pg_type t + WHERE p.pronamespace = n.oid + and n.nspname not like 'pg\_%' -- no catalogs + and n.nspname != 'information_schema' -- no information_schema + and p.prolang = l.oid + and p.prorettype = t.oid + and l.lanname = 'c' + ORDER BY nspname, proname, pronargs, return_type; + +-- +-- lists all aggregate functions and the types to which they can be applied +-- +SELECT n.nspname, p.proname, format_type(t.oid, null) as typname + FROM pg_namespace n, pg_aggregate a, + pg_proc p, pg_type t + WHERE p.pronamespace = n.oid + and a.aggfnoid = p.oid + and p.proargtypes[0] = t.oid + ORDER BY nspname, proname, typname; + + +-- +-- lists all the operator families that can be used with each access method +-- as well as the operators that can be used with the respective operator +-- families +-- +SELECT am.amname, n.nspname, opf.opfname, opr.oprname + FROM pg_namespace n, pg_am am, pg_opfamily opf, + pg_amop amop, pg_operator opr + WHERE opf.opfnamespace = n.oid + and opf.opfmethod = am.oid + and amop.amopfamily = opf.oid + and amop.amopopr = opr.oid + ORDER BY nspname, amname, opfname, oprname; + +-- +-- Reset the search path and standard_conforming_strings to their defaults +-- +RESET search_path; +RESET standard_conforming_strings; |