1 /* pg_dbms_stats/pg_dbms_stats--1.0--1.3.2.sql */
3 -- complain if script is sourced in psql, rather than via CREATE EXTENSION
4 \echo Use "ALTER EXTENSION pg_dbms_stats UPDATE TO '1.3.2'" to load this file. \quit
6 -- NOTE: Due to some mistake in version management, the version 1.3.0,
7 -- 1,3.1 are named as '1.0. So this script upgrades this module from
8 -- both of the versions.
11 -- Statistics views for internal use
12 -- These views are used to merge authentic stats and dummy stats by hook
13 -- function, so we don't grant SELECT privilege to PUBLIC.
16 CREATE OR REPLACE VIEW dbms_stats.column_stats_effective AS
18 SELECT (dbms_stats.merge(v, s)).*
19 FROM pg_catalog.pg_statistic s
20 FULL JOIN dbms_stats._column_stats_locked v
21 USING (starelid, staattnum, stainherit)
22 WHERE NOT dbms_stats.is_system_catalog(starelid)
26 WHERE a.attrelid = starelid
27 AND a.attnum = staattnum
28 AND a.attisdropped = false
31 WHERE starelid IS NOT NULL;
34 -- CLEAN_STATS: Clean orphan dummy statistic
37 CREATE OR REPLACE FUNCTION dbms_stats.clean_up_stats() RETURNS SETOF text AS
45 LOCK dbms_stats._relation_stats_locked IN SHARE UPDATE EXCLUSIVE MODE;
46 LOCK dbms_stats._column_stats_locked IN SHARE UPDATE EXCLUSIVE MODE;
48 -- We don't have to check that table-level dummy statistic of the table
49 -- exists here, because the foreign key constraints defined on column-level
50 -- dummy static table eusures that.
51 FOR clean_rel_col, clean_relid, clean_attnum, clean_inherit IN
52 SELECT r.relname || ', ' || v.staattnum::text,
53 v.starelid, v.staattnum, v.stainherit
54 FROM dbms_stats._column_stats_locked v
55 JOIN dbms_stats._relation_stats_locked r ON (v.starelid = r.relid)
59 WHERE a.attrelid = v.starelid
60 AND a.attnum = v.staattnum
61 AND a.attisdropped = false
64 DELETE FROM dbms_stats._column_stats_locked
65 WHERE starelid = clean_relid
66 AND staattnum = clean_attnum
67 AND stainherit = clean_inherit;
68 RETURN NEXT clean_rel_col;
72 DELETE FROM dbms_stats._relation_stats_locked r
76 WHERE c.oid = r.relid)
77 RETURNING relname || ',';