information_schema.sql

来自「PostgreSQL 8.1.4的源码 适用于Linux下的开源数据库系统」· SQL 代码 · 共 1,725 行 · 第 1/5 页

SQL
1,725
字号
 * 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(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(relname AS sql_identifier) AS table_name,           CAST(a.attname AS sql_identifier) AS column_name,           CAST((ss.x).n AS cardinal_number) AS ordinal_position    FROM pg_attribute a,         (SELECT r.oid, nc.nspname AS nc_nspname, c.conname,                 nr.nspname AS nr_nspname, r.relname,                _pg_expandarray(c.conkey) AS x          FROM pg_namespace nr, pg_class r, pg_namespace nc,               pg_constraint c          WHERE nr.oid = r.relnamespace                AND r.oid = c.conrelid                AND nc.oid = c.connamespace                AND c.contype IN ('p', 'u', 'f')                AND r.relkind = 'r'                AND pg_has_role(r.relowner, 'MEMBER')) AS ss    WHERE ss.oid = a.attrelid          AND a.attnum = (ss.x).x          AND NOT a.attisdropped;GRANT SELECT ON key_column_usage TO PUBLIC;/* * 20.33 * PARAMETERS view */CREATE VIEW parameters AS    SELECT CAST(current_database() AS sql_identifier) AS specific_catalog,           CAST(n_nspname AS sql_identifier) AS specific_schema,           CAST(proname || '_' || CAST(p_oid AS text) AS sql_identifier) AS specific_name,           CAST((ss.x).n AS cardinal_number) AS ordinal_position,           CAST(             CASE WHEN proargmodes IS NULL THEN 'IN'                WHEN proargmodes[(ss.x).n] = 'i' THEN 'IN'                WHEN proargmodes[(ss.x).n] = 'o' THEN 'OUT'                WHEN proargmodes[(ss.x).n] = 'b' THEN 'INOUT'             END AS character_data) AS parameter_mode,           CAST('NO' AS character_data) AS is_result,           CAST('NO' AS character_data) AS as_locator,           CAST(NULLIF(proargnames[(ss.x).n], '') AS sql_identifier) AS parameter_name,           CAST(             CASE WHEN t.typelem <> 0 AND t.typlen = -1 THEN 'ARRAY'                  WHEN nt.nspname = 'pg_catalog' THEN format_type(t.oid, null)                  ELSE 'USER-DEFINED' END AS character_data)             AS data_type,           CAST(null AS cardinal_number) AS character_maximum_length,           CAST(null 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(null AS cardinal_number) AS numeric_precision,           CAST(null AS cardinal_number) AS numeric_precision_radix,           CAST(null AS cardinal_number) AS numeric_scale,           CAST(null AS cardinal_number) AS datetime_precision,           CAST(null AS character_data) AS interval_type,           CAST(null AS character_data) AS interval_precision,           CAST(current_database() AS sql_identifier) AS udt_catalog,           CAST(nt.nspname AS sql_identifier) AS udt_schema,           CAST(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((ss.x).n AS sql_identifier) AS dtd_identifier    FROM pg_type t, pg_namespace nt,         (SELECT n.nspname AS n_nspname, p.proname, p.oid AS p_oid,                 p.proargnames, p.proargmodes,                 _pg_expandarray(coalesce(p.proallargtypes, p.proargtypes::oid[])) AS x          FROM pg_namespace n, pg_proc p          WHERE n.oid = p.pronamespace                AND (pg_has_role(p.proowner, 'MEMBER') OR                     has_function_privilege(p.oid, 'EXECUTE'))) AS ss    WHERE t.oid = (ss.x).x AND t.typnamespace = nt.oid;GRANT SELECT ON parameters TO PUBLIC;/* * 20.35 * REFERENTIAL_CONSTRAINTS view */CREATE VIEW referential_constraints AS    SELECT CAST(current_database() AS sql_identifier) AS constraint_catalog,           CAST(ncon.nspname AS sql_identifier) AS constraint_schema,           CAST(con.conname AS sql_identifier) AS constraint_name,           CAST(             CASE WHEN npkc.nspname IS NULL THEN NULL                  ELSE current_database() END             AS sql_identifier) AS unique_constraint_catalog,           CAST(npkc.nspname AS sql_identifier) AS unique_constraint_schema,           CAST(pkc.conname AS sql_identifier) AS unique_constraint_name,           CAST(             CASE con.confmatchtype WHEN 'f' THEN 'FULL'                                    WHEN 'p' THEN 'PARTIAL'                                    WHEN 'u' THEN 'NONE' END             AS character_data) AS match_option,           CAST(             CASE con.confupdtype WHEN 'c' THEN 'CASCADE'                                  WHEN 'n' THEN 'SET NULL'                                  WHEN 'd' THEN 'SET DEFAULT'                                  WHEN 'r' THEN 'RESTRICT'                                  WHEN 'a' THEN 'NO ACTION' END             AS character_data) AS update_rule,           CAST(             CASE con.confdeltype WHEN 'c' THEN 'CASCADE'                                  WHEN 'n' THEN 'SET NULL'                                  WHEN 'd' THEN 'SET DEFAULT'                                  WHEN 'r' THEN 'RESTRICT'                                  WHEN 'a' THEN 'NO ACTION' END             AS character_data) AS delete_rule    FROM (pg_namespace ncon          INNER JOIN pg_constraint con ON ncon.oid = con.connamespace          INNER JOIN pg_class c ON con.conrelid = c.oid)         LEFT JOIN         (pg_constraint pkc          INNER JOIN pg_namespace npkc ON pkc.connamespace = npkc.oid)         ON con.confrelid = pkc.conrelid            AND _pg_keysequal(con.confkey, pkc.conkey)    WHERE c.relkind = 'r'          AND con.contype = 'f'          AND (pkc.contype IN ('p', 'u') OR pkc.contype IS NULL)          AND pg_has_role(c.relowner, 'MEMBER');GRANT SELECT ON referential_constraints TO PUBLIC;/* * 20.36 * ROLE_COLUMN_GRANTS view */CREATE VIEW role_column_grants AS    SELECT CAST(u_grantor.rolname AS sql_identifier) AS grantor,           CAST(g_grantee.rolname AS sql_identifier) AS grantee,           CAST(current_database() AS sql_identifier) AS table_catalog,           CAST(nc.nspname AS sql_identifier) AS table_schema,           CAST(c.relname AS sql_identifier) AS table_name,           CAST(a.attname AS sql_identifier) AS column_name,           CAST(pr.type AS character_data) AS privilege_type,           CAST(             CASE WHEN aclcontains(c.relacl,                                   makeaclitem(g_grantee.oid, u_grantor.oid, pr.type, true))                  THEN 'YES' ELSE 'NO' END AS character_data) AS is_grantable    FROM pg_attribute a,         pg_class c,         pg_namespace nc,         pg_authid u_grantor,         pg_authid g_grantee,         (SELECT 'SELECT' UNION ALL          SELECT 'INSERT' UNION ALL          SELECT 'UPDATE' UNION ALL          SELECT 'REFERENCES') AS pr (type)    WHERE a.attrelid = c.oid          AND c.relnamespace = nc.oid          AND a.attnum > 0          AND NOT a.attisdropped          AND c.relkind IN ('r', 'v')          AND aclcontains(c.relacl,                          makeaclitem(g_grantee.oid, u_grantor.oid, pr.type, false))          AND g_grantee.rolname IN (SELECT role_name FROM enabled_roles);GRANT SELECT ON role_column_grants TO PUBLIC;/* * 20.37 * ROLE_ROUTINE_GRANTS view */CREATE VIEW role_routine_grants AS    SELECT CAST(u_grantor.rolname AS sql_identifier) AS grantor,           CAST(g_grantee.rolname AS sql_identifier) AS grantee,           CAST(current_database() AS sql_identifier) AS specific_catalog,           CAST(n.nspname AS sql_identifier) AS specific_schema,           CAST(p.proname || '_' || CAST(p.oid AS text) AS sql_identifier) AS specific_name,           CAST(current_database() AS sql_identifier) AS routine_catalog,           CAST(n.nspname AS sql_identifier) AS routine_schema,           CAST(p.proname AS sql_identifier) AS routine_name,           CAST('EXECUTE' AS character_data) AS privilege_type,           CAST(             CASE WHEN aclcontains(p.proacl,                                   makeaclitem(g_grantee.oid, u_grantor.oid, 'EXECUTE', true))                  THEN 'YES' ELSE 'NO' END AS character_data) AS is_grantable    FROM pg_proc p,         pg_namespace n,         pg_authid u_grantor,         pg_authid g_grantee    WHERE p.pronamespace = n.oid          AND aclcontains(p.proacl,                          makeaclitem(g_grantee.oid, u_grantor.oid, 'EXECUTE', false))          AND g_grantee.rolname IN (SELECT role_name FROM enabled_roles);GRANT SELECT ON role_routine_grants TO PUBLIC;/* * 20.38 * ROLE_TABLE_GRANTS view */CREATE VIEW role_table_grants AS    SELECT CAST(u_grantor.rolname AS sql_identifier) AS grantor,           CAST(g_grantee.rolname AS sql_identifier) AS grantee,           CAST(current_database() AS sql_identifier) AS table_catalog,           CAST(nc.nspname AS sql_identifier) AS table_schema,           CAST(c.relname AS sql_identifier) AS table_name,           CAST(pr.type AS character_data) AS privilege_type,           CAST(             CASE WHEN aclcontains(c.relacl,                                   makeaclitem(g_grantee.oid, u_grantor.oid, pr.type, true))                  THEN 'YES' ELSE 'NO' END AS character_data) AS is_grantable,           CAST('NO' AS character_data) AS with_hierarchy    FROM pg_class c,         pg_namespace nc,         pg_authid u_grantor,         pg_authid g_grantee,         (SELECT 'SELECT' UNION ALL          SELECT 'DELETE' UNION ALL          SELECT 'INSERT' UNION ALL          SELECT 'UPDATE' UNION ALL          SELECT 'REFERENCES' UNION ALL          SELECT 'RULE' UNION ALL          SELECT 'TRIGGER') AS pr (type)    WHERE c.relnamespace = nc.oid          AND c.relkind IN ('r', 'v')          AND aclcontains(c.relacl,                          makeaclitem(g_grantee.oid, u_grantor.oid, pr.type, false))          AND g_grantee.rolname IN (SELECT role_name FROM enabled_roles);GRANT SELECT ON role_table_grants TO PUBLIC;/* * 20.40 * ROLE_USAGE_GRANTS view */-- See USAGE_PRIVILEGES.CREATE VIEW role_usage_grants AS    SELECT CAST(null AS sql_identifier) AS grantor,           CAST(null AS sql_identifier) AS grantee,           CAST(current_database() AS sql_identifier) AS object_catalog,           CAST(null AS sql_identifier) AS object_schema,           CAST(null AS sql_identifier) AS object_name,           CAST(null AS character_data) AS object_type,           CAST('USAGE' AS character_data) AS privilege_type,           CAST(null AS character_data) AS is_grantable    WHERE false;GRANT SELECT ON role_usage_grants TO PUBLIC;/* * 20.43 * ROUTINE_PRIVILEGES view */CREATE VIEW routine_privileges AS    SELECT CAST(u_grantor.rolname AS sql_identifier) AS grantor,           CAST(grantee.rolname AS sql_identifier) AS grantee,           CAST(current_database() AS sql_identifier) AS specific_catalog,           CAST(n.nspname AS sql_identifier) AS specific_schema,           CAST(p.proname || '_' || CAST(p.oid AS text) AS sql_identifier) AS specific_name,           CAST(current_database() AS sql_identifier) AS routine_catalog,           CAST(n.nspname AS sql_identifier) AS routine_schema,           CAST(p.proname AS sql_identifier) AS routine_name,           CAST('EXECUTE' AS character_data) AS privilege_type,           CAST(             CASE WHEN aclcontains(p.proacl,                                   makeaclitem(grantee.oid, u_grantor.oid, 'EXECUTE', true))                  THEN 'YES' ELSE 'NO' END AS character_data) AS is_grantable    FROM pg_proc p,         pg_namespace n,         pg_authid u_grantor,         (           SELECT oid, rolname FROM pg_authid           UNION ALL           SELECT 0::oid, 'PUBLIC'         ) AS grantee (oid, rolname)    WHERE p.pronamespace = n.oid          AND aclcontains(p.proacl,                          makeaclitem(grantee.oid, u_grantor.oid, 'EXECUTE', false))          AND (pg_has_role(u_grantor.oid, 'MEMBER')               OR pg_has_role(grantee.oid, 'MEMBER')               OR grantee.rolname = 'PUBLIC');GRANT SELECT ON routine_privileges TO PUBLIC;/* * 20.45 * ROUTINES view */CREATE VIEW routines AS    SELECT CAST(current_database() AS sql_identifier) AS specific_catalog,           CAST(n.nspname AS sql_identifier) AS specific_schema,           CAST(p.proname || '_' || CAST(p.oid AS text) AS sql_identifier) AS specific_name,           CAST(current_database() AS sql_identifier) AS routine_catalog,           CAST(n.nspname AS sql_identifier) AS routine_schema,           CAST(p.proname AS sql_identifier) AS routine_name,           CAST('FUNCTION' AS character_data) AS routine_type,           CAST(null AS sql_identifier) AS module_catalog,           CAST(null AS sql_identifier) AS module_schema,           CAST(null AS sql_identifier) AS module_name,           CAST(null AS sql_identifier) AS udt_catalog,           CAST(null AS sql_identifier) AS udt_schema,           CAST(null AS sql_identifier) AS udt_name,           CAST(             CASE WHEN t.typelem <> 0 AND t.typlen = -1 THEN 'ARRAY'                  WHEN nt.nspname = 'pg_catalog' THEN format_type(t.oid, null)                  ELSE 'USER-DEFINED' END AS character_data)

⌨️ 快捷键说明

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