information_schema.sql

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

SQL
1,725
字号
           CAST(null AS sql_identifier) AS self_referencing_column_name,           CAST(null AS character_data) AS reference_generation,           CAST(null AS sql_identifier) AS user_defined_type_catalog,           CAST(null AS sql_identifier) AS user_defined_type_schema,           CAST(null AS sql_identifier) AS user_defined_name    FROM pg_namespace nc, pg_class c    WHERE c.relnamespace = nc.oid          AND c.relkind IN ('r', 'v')          AND (pg_has_role(c.relowner, 'MEMBER')               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, 'DELETE')               OR has_table_privilege(c.oid, 'RULE')               OR has_table_privilege(c.oid, 'REFERENCES')               OR has_table_privilege(c.oid, 'TRIGGER') );GRANT SELECT ON tables TO PUBLIC;/* * 20.59 * TRIGGERED_UPDATE_COLUMNS view */-- PostgreSQL doesn't allow the specification of individual triggered-- update columns, so this view is empty.CREATE VIEW triggered_update_columns AS    SELECT CAST(current_database() AS sql_identifier) AS trigger_catalog,           CAST(null AS sql_identifier) AS trigger_schema,           CAST(null AS sql_identifier) AS trigger_name,           CAST(current_database() AS sql_identifier) AS event_object_catalog,           CAST(null AS sql_identifier) AS event_object_schema,           CAST(null AS sql_identifier) AS event_object_table,           CAST(null AS sql_identifier) AS event_object_column    WHERE false;GRANT SELECT ON triggered_update_columns TO PUBLIC;/* * 20.62 * TRIGGERS view */CREATE VIEW triggers AS    SELECT CAST(current_database() AS sql_identifier) AS trigger_catalog,           CAST(n.nspname AS sql_identifier) AS trigger_schema,           CAST(t.tgname AS sql_identifier) AS trigger_name,           CAST(em.text AS character_data) AS event_manipulation,           CAST(current_database() AS sql_identifier) AS event_object_catalog,           CAST(n.nspname AS sql_identifier) AS event_object_schema,           CAST(c.relname AS sql_identifier) AS event_object_table,           CAST(null AS cardinal_number) AS action_order,           CAST(null AS character_data) AS action_condition,           CAST(             substring(pg_get_triggerdef(t.oid) from                       position('EXECUTE PROCEDURE' in substring(pg_get_triggerdef(t.oid) from 48)) + 47)             AS character_data) AS action_statement,           CAST(             CASE WHEN t.tgtype & 1 = 1 THEN 'ROW' ELSE 'STATEMENT' END             AS character_data) AS action_orientation,           CAST(             CASE WHEN t.tgtype & 2 = 2 THEN 'BEFORE' ELSE 'AFTER' END             AS character_data) AS condition_timing,           CAST(null AS sql_identifier) AS condition_reference_old_table,           CAST(null AS sql_identifier) AS condition_reference_new_table    FROM pg_namespace n, pg_class c, pg_trigger t,         (SELECT 4, 'INSERT' UNION ALL          SELECT 8, 'DELETE' UNION ALL          SELECT 16, 'UPDATE') AS em (num, text)    WHERE n.oid = c.relnamespace          AND c.oid = t.tgrelid          AND t.tgtype & em.num <> 0          AND NOT t.tgisconstraint          AND pg_has_role(c.relowner, 'MEMBER');GRANT SELECT ON triggers TO PUBLIC;/* * 20.63 * USAGE_PRIVILEGES view */-- Of the things currently implemented in PostgreSQL, usage privileges-- apply only to domains.  Since domains have no real privileges, we-- represent all domains with implicit usage privilege here.CREATE VIEW usage_privileges AS    SELECT CAST(u.rolname AS sql_identifier) AS grantor,           CAST('PUBLIC' AS sql_identifier) AS grantee,           CAST(current_database() AS sql_identifier) AS object_catalog,           CAST(n.nspname AS sql_identifier) AS object_schema,           CAST(t.typname AS sql_identifier) AS object_name,           CAST('DOMAIN' AS character_data) AS object_type,           CAST('USAGE' AS character_data) AS privilege_type,           CAST('NO' AS character_data) AS is_grantable    FROM pg_authid u,         pg_namespace n,         pg_type t    WHERE u.oid = t.typowner          AND t.typnamespace = n.oid          AND t.typtype = 'd';GRANT SELECT ON usage_privileges TO PUBLIC;/* * 20.65 * VIEW_COLUMN_USAGE */CREATE VIEW view_column_usage AS    SELECT DISTINCT           CAST(current_database() AS sql_identifier) AS view_catalog,           CAST(nv.nspname AS sql_identifier) AS view_schema,           CAST(v.relname AS sql_identifier) AS view_name,           CAST(current_database() AS sql_identifier) AS table_catalog,           CAST(nt.nspname AS sql_identifier) AS table_schema,           CAST(t.relname AS sql_identifier) AS table_name,           CAST(a.attname AS sql_identifier) AS column_name    FROM pg_namespace nv, pg_class v, pg_depend dv,         pg_depend dt, pg_class t, pg_namespace nt,         pg_attribute a    WHERE nv.oid = v.relnamespace          AND v.relkind = 'v'          AND v.oid = dv.refobjid          AND dv.refclassid = 'pg_catalog.pg_class'::regclass          AND dv.classid = 'pg_catalog.pg_rewrite'::regclass          AND dv.deptype = 'i'          AND dv.objid = dt.objid          AND dv.refobjid <> dt.refobjid          AND dt.classid = 'pg_catalog.pg_rewrite'::regclass          AND dt.refclassid = 'pg_catalog.pg_class'::regclass          AND dt.refobjid = t.oid          AND t.relnamespace = nt.oid          AND t.relkind IN ('r', 'v')          AND t.oid = a.attrelid          AND dt.refobjsubid = a.attnum          AND pg_has_role(t.relowner, 'MEMBER');GRANT SELECT ON view_column_usage TO PUBLIC;/* * 20.66 * VIEW_TABLE_USAGE */CREATE VIEW view_table_usage AS    SELECT DISTINCT           CAST(current_database() AS sql_identifier) AS view_catalog,           CAST(nv.nspname AS sql_identifier) AS view_schema,           CAST(v.relname AS sql_identifier) AS view_name,           CAST(current_database() AS sql_identifier) AS table_catalog,           CAST(nt.nspname AS sql_identifier) AS table_schema,           CAST(t.relname AS sql_identifier) AS table_name    FROM pg_namespace nv, pg_class v, pg_depend dv,         pg_depend dt, pg_class t, pg_namespace nt    WHERE nv.oid = v.relnamespace          AND v.relkind = 'v'          AND v.oid = dv.refobjid          AND dv.refclassid = 'pg_catalog.pg_class'::regclass          AND dv.classid = 'pg_catalog.pg_rewrite'::regclass          AND dv.deptype = 'i'          AND dv.objid = dt.objid          AND dv.refobjid <> dt.refobjid          AND dt.classid = 'pg_catalog.pg_rewrite'::regclass          AND dt.refclassid = 'pg_catalog.pg_class'::regclass          AND dt.refobjid = t.oid          AND t.relnamespace = nt.oid          AND t.relkind IN ('r', 'v')          AND pg_has_role(t.relowner, 'MEMBER');GRANT SELECT ON view_table_usage TO PUBLIC;/* * 20.68 * VIEWS view */CREATE VIEW views AS    SELECT 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(             CASE WHEN pg_has_role(c.relowner, 'MEMBER')                  THEN pg_get_viewdef(c.oid)                  ELSE null END             AS character_data) AS view_definition,           CAST('NONE' AS character_data) AS check_option,           CAST(null AS character_data) AS is_updatable, -- FIXME           CAST(null AS character_data) AS is_insertable_into  -- FIXME    FROM pg_namespace nc, pg_class c    WHERE c.relnamespace = nc.oid          AND c.relkind = 'v'          AND (pg_has_role(c.relowner, 'MEMBER')               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, 'DELETE')               OR has_table_privilege(c.oid, 'RULE')               OR has_table_privilege(c.oid, 'REFERENCES')               OR has_table_privilege(c.oid, 'TRIGGER') );GRANT SELECT ON views TO PUBLIC;-- The following views have dependencies that force them to appear out of order./* * 20.21 * DATA_TYPE_PRIVILEGES view */CREATE VIEW data_type_privileges AS    SELECT CAST(current_database() AS sql_identifier) AS object_catalog,           CAST(x.objschema AS sql_identifier) AS object_schema,           CAST(x.objname AS sql_identifier) AS object_name,           CAST(x.objtype AS character_data) AS object_type,           CAST(x.objdtdid AS sql_identifier) AS dtd_identifier    FROM      (        SELECT table_schema, table_name, 'TABLE'::text, dtd_identifier FROM columns        UNION ALL        SELECT domain_schema, domain_name, 'DOMAIN'::text, dtd_identifier FROM domains        UNION ALL        SELECT specific_schema, specific_name, 'ROUTINE'::text, dtd_identifier FROM parameters        UNION ALL        SELECT specific_schema, specific_name, 'ROUTINE'::text, dtd_identifier FROM routines      ) AS x (objschema, objname, objtype, objdtdid);GRANT SELECT ON data_type_privileges TO PUBLIC;/* * 20.27 * ELEMENT_TYPES view */CREATE VIEW element_types AS    SELECT CAST(current_database() AS sql_identifier) AS object_catalog,           CAST(n.nspname AS sql_identifier) AS object_schema,           CAST(x.objname AS sql_identifier) AS object_name,           CAST(x.objtype AS character_data) AS object_type,           CAST(x.objdtdid AS sql_identifier) AS array_type_identifier,           CAST(             CASE WHEN nbt.nspname = 'pg_catalog' THEN format_type(bt.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(null AS character_data) AS domain_default, -- XXX maybe a bug in the standard           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('a' || x.objdtdid AS sql_identifier) AS dtd_identifier    FROM pg_namespace n, pg_type at, pg_namespace nbt, pg_type bt,         (           /* columns */           SELECT c.relnamespace, CAST(c.relname AS sql_identifier),                  'TABLE'::text, a.attnum, a.atttypid           FROM pg_class c, pg_attribute a           WHERE c.oid = a.attrelid                 AND c.relkind IN ('r', 'v')                 AND attnum > 0 AND NOT attisdropped           UNION ALL           /* domains */           SELECT t.typnamespace, CAST(t.typname AS sql_identifier),                  'DOMAIN'::text, 1, t.typbasetype           FROM pg_type t           WHERE t.typtype = 'd'           UNION ALL           /* parameters */           SELECT pronamespace, CAST(proname || '_' || CAST(oid AS text) AS sql_identifier),                  'ROUTINE'::text, (ss.x).n, (ss.x).x           FROM (SELECT p.pronamespace, p.proname, p.oid,                        _pg_expandarray(coalesce(p.proallargtypes, p.proargtypes::oid[])) AS x                 FROM pg_proc p) AS ss           UNION ALL           /* result types */           SELECT p.pronamespace, CAST(p.proname || '_' || CAST(p.oid AS text) AS sql_identifier),                  'ROUTINE'::text, 0, p.prorettype           FROM pg_proc p         ) AS x (objschema, objname, objtype, objdtdid, objtypeid)    WHERE n.oid = x.objschema          AND at.oid = x.objtypeid          AND (at.typelem <> 0 AND at.typlen = -1)          AND at.typelem = bt.oid          AND nbt.oid = bt.typnamespace          AND (n.nspname, x.objname, x.objtype, x.objdtdid) IN              ( SELECT object_schema, object_name, object_type, dtd_identifier                    FROM data_type_privileges );GRANT SELECT ON element_types TO PUBLIC;

⌨️ 快捷键说明

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