information_schema.sql

来自「PostgreSQL7.4.6 for Linux」· SQL 代码 · 共 1,693 行 · 第 1/5 页

SQL
1,693
字号
           CAST(null AS character_data) AS interval_type, -- XXX           CAST(null AS character_data) AS interval_precision, -- XXX           CAST(null AS sql_identifier) AS character_set_catalog,           CAST(null AS sql_identifier) AS character_set_schema,           CAST(null AS sql_identifier) AS character_set_name,           CAST(null AS sql_identifier) AS collation_catalog,           CAST(null AS sql_identifier) AS collation_schema,           CAST(null AS sql_identifier) AS collation_name,           CAST(CASE WHEN t.typtype = 'd' THEN current_database() ELSE null END             AS sql_identifier) AS domain_catalog,           CAST(CASE WHEN t.typtype = 'd' THEN nt.nspname ELSE null END             AS sql_identifier) AS domain_schema,           CAST(CASE WHEN t.typtype = 'd' THEN t.typname ELSE null END             AS sql_identifier) AS domain_name,           CAST(current_database() AS sql_identifier) AS udt_catalog,           CAST(coalesce(nbt.nspname, nt.nspname) AS sql_identifier) AS udt_schema,           CAST(coalesce(bt.typname, t.typname) AS sql_identifier) AS udt_name,           CAST(null AS sql_identifier) AS scope_catalog,           CAST(null AS sql_identifier) AS scope_schema,           CAST(null AS sql_identifier) AS scope_name,           CAST(null AS cardinal_number) AS maximum_cardinality,           CAST(a.attnum AS sql_identifier) AS dtd_identifier,           CAST('NO' AS character_data) AS is_self_referencing    FROM (pg_attribute LEFT JOIN pg_attrdef ON attrelid = adrelid AND attnum = adnum) AS a,         pg_class c, pg_namespace nc, pg_user u,         (pg_type t JOIN pg_namespace nt ON (t.typnamespace = nt.oid))           LEFT JOIN (pg_type bt JOIN pg_namespace nbt ON (bt.typnamespace = nbt.oid))           ON (t.typtype = 'd' AND t.typbasetype = bt.oid)    WHERE a.attrelid = c.oid          AND a.atttypid = t.oid          AND u.usesysid = c.relowner          AND nc.oid = c.relnamespace          AND a.attnum > 0 AND NOT a.attisdropped AND c.relkind in ('r', 'v')          AND (u.usename = current_user               OR has_table_privilege(c.oid, 'SELECT')               OR has_table_privilege(c.oid, 'INSERT')               OR has_table_privilege(c.oid, 'UPDATE')               OR has_table_privilege(c.oid, 'REFERENCES') );GRANT SELECT ON columns TO PUBLIC;/* * 20.19 * CONSTRAINT_COLUMN_USAGE view *//* This returns the integers from 1 to INDEX_MAX_KEYS/FUNC_MAX_ARGS */CREATE FUNCTION _pg_keypositions() RETURNS SETOF integer    LANGUAGE sql    IMMUTABLE    AS 'select 1 union all select 2 union all select 3 union all        select 4 union all select 5 union all select 6 union all        select 7 union all select 8 union all select 9 union all        select 10 union all select 11 union all select 12 union all        select 13 union all select 14 union all select 15 union all        select 16 union all select 17 union all select 18 union all        select 19 union all select 20 union all select 21 union all        select 22 union all select 23 union all select 24 union all        select 25 union all select 26 union all select 27 union all        select 28 union all select 29 union all select 30 union all        select 31 union all select 32';CREATE VIEW constraint_column_usage AS    SELECT CAST(current_database() AS sql_identifier) AS table_catalog,           CAST(tblschema AS sql_identifier) AS table_schema,           CAST(tblname AS sql_identifier) AS table_name,           CAST(colname AS sql_identifier) AS column_name,           CAST(current_database() AS sql_identifier) AS constraint_catalog,           CAST(cstrschema AS sql_identifier) AS constraint_schema,           CAST(cstrname AS sql_identifier) AS constraint_name    FROM (        /* check constraints */        SELECT DISTINCT nr.nspname, r.relname, r.relowner, a.attname, nc.nspname, c.conname          FROM pg_namespace nr, pg_class r, pg_attribute a, pg_depend d, pg_namespace nc, pg_constraint c          WHERE nr.oid = r.relnamespace            AND r.oid = a.attrelid            AND d.refclassid = 'pg_catalog.pg_class'::regclass            AND d.refobjid = r.oid            AND d.refobjsubid = a.attnum            AND d.classid = 'pg_catalog.pg_constraint'::regclass            AND d.objid = c.oid            AND c.connamespace = nc.oid            AND c.contype = 'c'            AND r.relkind = 'r'            AND NOT a.attisdropped        UNION ALL        /* unique/primary key/foreign key constraints */        SELECT nr.nspname, r.relname, r.relowner, a.attname, nc.nspname, c.conname          FROM pg_namespace nr, pg_class r, pg_attribute a, pg_namespace nc,               pg_constraint c, _pg_keypositions() AS pos(n)          WHERE nr.oid = r.relnamespace            AND r.oid = a.attrelid            AND nc.oid = c.connamespace            AND (CASE WHEN c.contype = 'f' THEN r.oid = c.confrelid AND c.confkey[pos.n] = a.attnum                      ELSE r.oid = c.conrelid AND c.conkey[pos.n] = a.attnum END)            AND NOT a.attisdropped            AND c.contype IN ('p', 'u', 'f')            AND r.relkind = 'r'      ) AS x (tblschema, tblname, tblowner, colname, cstrschema, cstrname),      pg_user u    WHERE x.tblowner = u.usesysid AND u.usename = current_user;GRANT SELECT ON constraint_column_usage TO PUBLIC;/* * 20.20 * CONSTRAINT_TABLE_USAGE view */CREATE VIEW constraint_table_usage AS    SELECT CAST(current_database() AS sql_identifier) AS table_catalog,           CAST(nr.nspname AS sql_identifier) AS table_schema,           CAST(r.relname AS sql_identifier) AS table_name,           CAST(current_database() AS sql_identifier) AS constraint_catalog,           CAST(nc.nspname AS sql_identifier) AS constraint_schema,           CAST(c.conname AS sql_identifier) AS constraint_name    FROM pg_constraint c, pg_namespace nc,         pg_class r, pg_namespace nr,         pg_user u    WHERE c.connamespace = nc.oid AND r.relnamespace = nr.oid          AND ( (c.contype = 'f' AND c.confrelid = r.oid)             OR (c.contype IN ('p', 'u') AND c.conrelid = r.oid) )          AND r.relkind = 'r'          AND r.relowner = u.usesysid AND u.usename = current_user;GRANT SELECT ON constraint_table_usage TO PUBLIC;-- 20.21 DATA_TYPE_PRIVILEGES view appears later./* * 20.24 * DOMAIN_CONSTRAINTS view */CREATE VIEW domain_constraints AS    SELECT CAST(current_database() AS sql_identifier) AS constraint_catalog,           CAST(rs.nspname AS sql_identifier) AS constraint_schema,           CAST(con.conname AS sql_identifier) AS constraint_name,           CAST(current_database() AS sql_identifier) AS domain_catalog,           CAST(n.nspname AS sql_identifier) AS domain_schema,           CAST(t.typname AS sql_identifier) AS domain_name,           CAST(CASE WHEN condeferrable THEN 'YES' ELSE 'NO' END             AS character_data) AS is_deferrable,           CAST(CASE WHEN condeferred THEN 'YES' ELSE 'NO' END             AS character_data) AS initially_deferred    FROM pg_namespace rs, pg_namespace n, pg_constraint con, pg_type t, pg_user u    WHERE rs.oid = con.connamespace          AND n.oid = t.typnamespace          AND u.usesysid = t.typowner          AND u.usename = current_user          AND t.oid = con.contypid;GRANT SELECT ON domain_constraints TO PUBLIC;/* * 20.25 * DOMAIN_UDT_USAGE view */CREATE VIEW domain_udt_usage AS    SELECT CAST(current_database() AS sql_identifier) AS udt_catalog,           CAST(nbt.nspname AS sql_identifier) AS udt_schema,           CAST(bt.typname AS sql_identifier) AS udt_name,           CAST(current_database() AS sql_identifier) AS domain_catalog,           CAST(nt.nspname AS sql_identifier) AS domain_schema,           CAST(t.typname AS sql_identifier) AS domain_name    FROM pg_type t, pg_namespace nt,         pg_type bt, pg_namespace nbt,         pg_user u    WHERE t.typnamespace = nt.oid          AND t.typbasetype = bt.oid          AND bt.typnamespace = nbt.oid          AND t.typtype = 'd'          AND bt.typowner = u.usesysid          AND u.usename = current_user;GRANT SELECT ON domain_udt_usage TO PUBLIC;/* * 20.26 * DOMAINS view */CREATE VIEW domains AS    SELECT CAST(current_database() AS sql_identifier) AS domain_catalog,           CAST(nt.nspname AS sql_identifier) AS domain_schema,           CAST(t.typname AS sql_identifier) AS domain_name,           CAST(             CASE WHEN t.typelem <> 0 AND t.typlen = -1 THEN 'ARRAY'                  WHEN nbt.nspname = 'pg_catalog' THEN format_type(t.typbasetype, null)                  ELSE 'USER-DEFINED' END             AS character_data)             AS data_type,           CAST(             CASE WHEN t.typbasetype IN (1042, 1043) AND t.typtypmod <> -1                  THEN t.typtypmod - 4 /* char, varchar */                  WHEN t.typbasetype IN (1560, 1562) AND t.typtypmod <> -1                  THEN t.typtypmod /* bit, varbit */                  ELSE null END             AS cardinal_number)             AS character_maximum_length,           CAST(             CASE WHEN t.typbasetype IN (25, 1042, 1043) THEN 2^30 ELSE null END             AS cardinal_number)             AS character_octet_length,           CAST(null AS sql_identifier) AS character_set_catalog,           CAST(null AS sql_identifier) AS character_set_schema,           CAST(null AS sql_identifier) AS character_set_name,           CAST(null AS sql_identifier) AS collation_catalog,           CAST(null AS sql_identifier) AS collation_schema,           CAST(null AS sql_identifier) AS collation_name,           CAST(             CASE t.typbasetype               WHEN 21 /*int2*/ THEN 16               WHEN 23 /*int4*/ THEN 32               WHEN 20 /*int8*/ THEN 64               WHEN 1700 /*numeric*/ THEN ((t.typtypmod - 4) >> 16) & 65535               WHEN 700 /*float4*/ THEN 24 /*FLT_MANT_DIG*/               WHEN 701 /*float8*/ THEN 53 /*DBL_MANT_DIG*/               ELSE null END             AS cardinal_number)             AS numeric_precision,           CAST(             CASE WHEN t.typbasetype IN (21, 23, 20, 700, 701) THEN 2                  WHEN t.typbasetype IN (1700) THEN 10                  ELSE null END             AS cardinal_number)             AS numeric_precision_radix,           CAST(             CASE WHEN t.typbasetype IN (21, 23, 20) THEN 0                  WHEN t.typbasetype IN (1700) THEN (t.typtypmod - 4) & 65535                  ELSE null END             AS cardinal_number)             AS numeric_scale,           CAST(             CASE WHEN t.typbasetype IN (1083, 1114, 1184, 1266)                  THEN (CASE WHEN t.typtypmod <> -1 THEN t.typtypmod ELSE null END)                  WHEN t.typbasetype IN (1186)                  THEN (CASE WHEN t.typtypmod <> -1 THEN t.typtypmod & 65535 ELSE null END)                  ELSE null END             AS cardinal_number)             AS datetime_precision,           CAST(null AS character_data) AS interval_type, -- XXX           CAST(null AS character_data) AS interval_precision, -- XXX           CAST(t.typdefault AS character_data) AS domain_default,           CAST(current_database() AS sql_identifier) AS udt_catalog,           CAST(nbt.nspname AS sql_identifier) AS udt_schema,           CAST(bt.typname AS sql_identifier) AS udt_name,           CAST(null AS sql_identifier) AS scope_catalog,           CAST(null AS sql_identifier) AS scope_schema,           CAST(null AS sql_identifier) AS scope_name,           CAST(null AS cardinal_number) AS maximum_cardinality,           CAST(1 AS sql_identifier) AS dtd_identifier    FROM pg_type t, pg_namespace nt,         pg_type bt, pg_namespace nbt    WHERE t.typnamespace = nt.oid          AND t.typbasetype = bt.oid          AND bt.typnamespace = nbt.oid          AND t.typtype = 'd';GRANT SELECT ON domains TO PUBLIC;-- 20.27 ELEMENT_TYPES view appears later./* * 20.28 * ENABLED_ROLES view */CREATE VIEW enabled_roles AS    SELECT CAST(g.groname AS sql_identifier) AS role_name    FROM pg_group g, pg_user u    WHERE u.usesysid = ANY (g.grolist)          AND u.usename = current_user;GRANT SELECT ON enabled_roles TO PUBLIC;/* * 20.30 * KEY_COLUMN_USAGE view */CREATE VIEW key_column_usage AS    SELECT CAST(current_database() AS sql_identifier) AS constraint_catalog,           CAST(nc.nspname AS sql_identifier) AS constraint_schema,           CAST(c.conname AS sql_identifier) AS constraint_name,           CAST(current_database() AS sql_identifier) AS table_catalog,           CAST(nr.nspname AS sql_identifier) AS table_schema,           CAST(r.relname AS sql_identifier) AS table_name,           CAST(a.attname AS sql_identifier) AS column_name,           CAST(pos.n AS cardinal_number) AS ordinal_position    FROM pg_namespace nr, pg_class r, pg_attribute a, pg_namespace nc,         pg_constraint c, pg_user u, _pg_keypositions() AS pos(n)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?