Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 580fb7f

Browse files
committed
Add system_views.sql to CVS.
1 parent 1060c4c commit 580fb7f

File tree

1 file changed

+270
-0
lines changed

1 file changed

+270
-0
lines changed

src/backend/catalog/system_views.sql

+270
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,270 @@
1+
2+
3+
4+
CREATE VIEW pg_user AS
5+
SELECT
6+
usename,
7+
usesysid,
8+
usecreatedb,
9+
usesuper,
10+
usecatupd,
11+
'********'::text as passwd,
12+
valuntil,
13+
useconfig
14+
FROM pg_shadow;
15+
16+
CREATE VIEW pg_rules AS
17+
SELECT
18+
N.nspname AS schemaname,
19+
C.relname AS tablename,
20+
R.rulename AS rulename,
21+
pg_get_ruledef(R.oid) AS definition
22+
FROM (pg_rewrite R JOIN pg_class C ON (C.oid = R.ev_class))
23+
LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
24+
WHERE R.rulename != '_RETURN';
25+
26+
CREATE VIEW pg_views AS
27+
SELECT
28+
N.nspname AS schemaname,
29+
C.relname AS viewname,
30+
pg_get_userbyid(C.relowner) AS viewowner,
31+
pg_get_viewdef(C.oid) AS definition
32+
FROM pg_class C LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
33+
WHERE C.relkind = 'v';
34+
35+
CREATE VIEW pg_tables AS
36+
SELECT
37+
N.nspname AS schemaname,
38+
C.relname AS tablename,
39+
pg_get_userbyid(C.relowner) AS tableowner,
40+
C.relhasindex AS hasindexes,
41+
C.relhasrules AS hasrules,
42+
(C.reltriggers > 0) AS hastriggers
43+
FROM pg_class C LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
44+
WHERE C.relkind = 'r';
45+
46+
CREATE VIEW pg_indexes AS
47+
SELECT
48+
N.nspname AS schemaname,
49+
C.relname AS tablename,
50+
I.relname AS indexname,
51+
pg_get_indexdef(I.oid) AS indexdef
52+
FROM pg_index X JOIN pg_class C ON (C.oid = X.indrelid)
53+
JOIN pg_class I ON (I.oid = X.indexrelid)
54+
LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
55+
WHERE C.relkind = 'r' AND I.relkind = 'i';
56+
57+
CREATE VIEW pg_stats AS
58+
SELECT
59+
nspname AS schemaname,
60+
relname AS tablename,
61+
attname AS attname,
62+
stanullfrac AS null_frac,
63+
stawidth AS avg_width,
64+
stadistinct AS n_distinct,
65+
CASE 1
66+
WHEN stakind1 THEN stavalues1
67+
WHEN stakind2 THEN stavalues2
68+
WHEN stakind3 THEN stavalues3
69+
WHEN stakind4 THEN stavalues4
70+
END AS most_common_vals,
71+
CASE 1
72+
WHEN stakind1 THEN stanumbers1
73+
WHEN stakind2 THEN stanumbers2
74+
WHEN stakind3 THEN stanumbers3
75+
WHEN stakind4 THEN stanumbers4
76+
END AS most_common_freqs,
77+
CASE 2
78+
WHEN stakind1 THEN stavalues1
79+
WHEN stakind2 THEN stavalues2
80+
WHEN stakind3 THEN stavalues3
81+
WHEN stakind4 THEN stavalues4
82+
END AS histogram_bounds,
83+
CASE 3
84+
WHEN stakind1 THEN stanumbers1[1]
85+
WHEN stakind2 THEN stanumbers2[1]
86+
WHEN stakind3 THEN stanumbers3[1]
87+
WHEN stakind4 THEN stanumbers4[1]
88+
END AS correlation
89+
FROM pg_statistic s JOIN pg_class c ON (c.oid = s.starelid)
90+
JOIN pg_attribute a ON (c.oid = attrelid AND attnum = s.staattnum)
91+
LEFT JOIN pg_namespace n ON (n.oid = c.relnamespace)
92+
WHERE has_table_privilege(c.oid, 'select');
93+
94+
REVOKE ALL on pg_statistic FROM public;
95+
96+
CREATE VIEW pg_stat_all_tables AS
97+
SELECT
98+
C.oid AS relid,
99+
N.nspname AS schemaname,
100+
C.relname AS relname,
101+
pg_stat_get_numscans(C.oid) AS seq_scan,
102+
pg_stat_get_tuples_returned(C.oid) AS seq_tup_read,
103+
sum(pg_stat_get_numscans(I.indexrelid)) AS idx_scan,
104+
sum(pg_stat_get_tuples_fetched(I.indexrelid)) AS idx_tup_fetch,
105+
pg_stat_get_tuples_inserted(C.oid) AS n_tup_ins,
106+
pg_stat_get_tuples_updated(C.oid) AS n_tup_upd,
107+
pg_stat_get_tuples_deleted(C.oid) AS n_tup_del
108+
FROM pg_class C LEFT JOIN
109+
pg_index I ON C.oid = I.indrelid
110+
LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
111+
WHERE C.relkind = 'r'
112+
GROUP BY C.oid, N.nspname, C.relname;
113+
114+
CREATE VIEW pg_stat_sys_tables AS
115+
SELECT * FROM pg_stat_all_tables
116+
WHERE schemaname IN ('pg_catalog', 'pg_toast');
117+
118+
CREATE VIEW pg_stat_user_tables AS
119+
SELECT * FROM pg_stat_all_tables
120+
WHERE schemaname NOT IN ('pg_catalog', 'pg_toast');
121+
122+
CREATE VIEW pg_statio_all_tables AS
123+
SELECT
124+
C.oid AS relid,
125+
N.nspname AS schemaname,
126+
C.relname AS relname,
127+
pg_stat_get_blocks_fetched(C.oid) -
128+
pg_stat_get_blocks_hit(C.oid) AS heap_blks_read,
129+
pg_stat_get_blocks_hit(C.oid) AS heap_blks_hit,
130+
sum(pg_stat_get_blocks_fetched(I.indexrelid) -
131+
pg_stat_get_blocks_hit(I.indexrelid)) AS idx_blks_read,
132+
sum(pg_stat_get_blocks_hit(I.indexrelid)) AS idx_blks_hit,
133+
pg_stat_get_blocks_fetched(T.oid) -
134+
pg_stat_get_blocks_hit(T.oid) AS toast_blks_read,
135+
pg_stat_get_blocks_hit(T.oid) AS toast_blks_hit,
136+
pg_stat_get_blocks_fetched(X.oid) -
137+
pg_stat_get_blocks_hit(X.oid) AS tidx_blks_read,
138+
pg_stat_get_blocks_hit(X.oid) AS tidx_blks_hit
139+
FROM pg_class C LEFT JOIN
140+
pg_index I ON C.oid = I.indrelid LEFT JOIN
141+
pg_class T ON C.reltoastrelid = T.oid LEFT JOIN
142+
pg_class X ON T.reltoastidxid = X.oid
143+
LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
144+
WHERE C.relkind = 'r'
145+
GROUP BY C.oid, N.nspname, C.relname, T.oid, X.oid;
146+
147+
CREATE VIEW pg_statio_sys_tables AS
148+
SELECT * FROM pg_statio_all_tables
149+
WHERE schemaname IN ('pg_catalog', 'pg_toast');
150+
151+
CREATE VIEW pg_statio_user_tables AS
152+
SELECT * FROM pg_statio_all_tables
153+
WHERE schemaname NOT IN ('pg_catalog', 'pg_toast');
154+
155+
CREATE VIEW pg_stat_all_indexes AS
156+
SELECT
157+
C.oid AS relid,
158+
I.oid AS indexrelid,
159+
N.nspname AS schemaname,
160+
C.relname AS relname,
161+
I.relname AS indexrelname,
162+
pg_stat_get_numscans(I.oid) AS idx_scan,
163+
pg_stat_get_tuples_returned(I.oid) AS idx_tup_read,
164+
pg_stat_get_tuples_fetched(I.oid) AS idx_tup_fetch
165+
FROM pg_class C JOIN
166+
pg_index X ON C.oid = X.indrelid JOIN
167+
pg_class I ON I.oid = X.indexrelid
168+
LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
169+
WHERE C.relkind = 'r';
170+
171+
CREATE VIEW pg_stat_sys_indexes AS
172+
SELECT * FROM pg_stat_all_indexes
173+
WHERE schemaname IN ('pg_catalog', 'pg_toast');
174+
175+
CREATE VIEW pg_stat_user_indexes AS
176+
SELECT * FROM pg_stat_all_indexes
177+
WHERE schemaname NOT IN ('pg_catalog', 'pg_toast');
178+
179+
CREATE VIEW pg_statio_all_indexes AS
180+
SELECT
181+
C.oid AS relid,
182+
I.oid AS indexrelid,
183+
N.nspname AS schemaname,
184+
C.relname AS relname,
185+
I.relname AS indexrelname,
186+
pg_stat_get_blocks_fetched(I.oid) -
187+
pg_stat_get_blocks_hit(I.oid) AS idx_blks_read,
188+
pg_stat_get_blocks_hit(I.oid) AS idx_blks_hit
189+
FROM pg_class C JOIN
190+
pg_index X ON C.oid = X.indrelid JOIN
191+
pg_class I ON I.oid = X.indexrelid
192+
LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
193+
WHERE C.relkind = 'r';
194+
195+
CREATE VIEW pg_statio_sys_indexes AS
196+
SELECT * FROM pg_statio_all_indexes
197+
WHERE schemaname IN ('pg_catalog', 'pg_toast');
198+
199+
CREATE VIEW pg_statio_user_indexes AS
200+
SELECT * FROM pg_statio_all_indexes
201+
WHERE schemaname NOT IN ('pg_catalog', 'pg_toast');
202+
203+
CREATE VIEW pg_statio_all_sequences AS
204+
SELECT
205+
C.oid AS relid,
206+
N.nspname AS schemaname,
207+
C.relname AS relname,
208+
pg_stat_get_blocks_fetched(C.oid) -
209+
pg_stat_get_blocks_hit(C.oid) AS blks_read,
210+
pg_stat_get_blocks_hit(C.oid) AS blks_hit
211+
FROM pg_class C
212+
LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
213+
WHERE C.relkind = 'S';
214+
215+
CREATE VIEW pg_statio_sys_sequences AS
216+
SELECT * FROM pg_statio_all_sequences
217+
WHERE schemaname IN ('pg_catalog', 'pg_toast');
218+
219+
CREATE VIEW pg_statio_user_sequences AS
220+
SELECT * FROM pg_statio_all_sequences
221+
WHERE schemaname NOT IN ('pg_catalog', 'pg_toast');
222+
223+
CREATE VIEW pg_stat_activity AS
224+
SELECT
225+
D.oid AS datid,
226+
D.datname AS datname,
227+
pg_stat_get_backend_pid(S.backendid) AS procpid,
228+
pg_stat_get_backend_userid(S.backendid) AS usesysid,
229+
U.usename AS usename,
230+
pg_stat_get_backend_activity(S.backendid) AS current_query,
231+
pg_stat_get_backend_activity_start(S.backendid) AS query_start
232+
FROM pg_database D,
233+
(SELECT pg_stat_get_backend_idset() AS backendid) AS S,
234+
pg_shadow U
235+
WHERE pg_stat_get_backend_dbid(S.backendid) = D.oid AND
236+
pg_stat_get_backend_userid(S.backendid) = U.usesysid;
237+
238+
CREATE VIEW pg_stat_database AS
239+
SELECT
240+
D.oid AS datid,
241+
D.datname AS datname,
242+
pg_stat_get_db_numbackends(D.oid) AS numbackends,
243+
pg_stat_get_db_xact_commit(D.oid) AS xact_commit,
244+
pg_stat_get_db_xact_rollback(D.oid) AS xact_rollback,
245+
pg_stat_get_db_blocks_fetched(D.oid) -
246+
pg_stat_get_db_blocks_hit(D.oid) AS blks_read,
247+
pg_stat_get_db_blocks_hit(D.oid) AS blks_hit
248+
FROM pg_database D;
249+
250+
CREATE VIEW pg_locks AS
251+
SELECT *
252+
FROM pg_lock_status() AS L(relation oid, database oid,
253+
transaction xid, pid int4, mode text, granted boolean);
254+
255+
CREATE VIEW pg_settings AS
256+
SELECT *
257+
FROM pg_show_all_settings() AS A
258+
(name text, setting text, context text, vartype text,
259+
source text, min_val text, max_val text);
260+
261+
CREATE RULE pg_settings_u AS
262+
ON UPDATE TO pg_settings
263+
WHERE new.name = old.name DO
264+
SELECT set_config(old.name, new.setting, 'f');
265+
266+
CREATE RULE pg_settings_n AS
267+
ON UPDATE TO pg_settings
268+
DO INSTEAD NOTHING;
269+
270+

0 commit comments

Comments
 (0)