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

Lines changed: 270 additions & 0 deletions
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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy