]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/sql/Pg/upgrade/0940.schema.vlist_freq.sql
LP#1917826: tweaks to data update
[Evergreen.git] / Open-ILS / src / sql / Pg / upgrade / 0940.schema.vlist_freq.sql
1 BEGIN;
2
3 SELECT evergreen.upgrade_deps_block_check('0940', :eg_version);
4
5 CREATE OR REPLACE FUNCTION evergreen.pg_statistics (tab TEXT, col TEXT) RETURNS TABLE(element TEXT, frequency INT) AS $$
6 BEGIN
7     -- This query will die on PG < 9.2, but the function can be created. We just won't use it where we can't.
8     RETURN QUERY
9         SELECT  e,
10                 f
11           FROM  (SELECT ROW_NUMBER() OVER (),
12                         (f * 100)::INT AS f
13                   FROM  (SELECT UNNEST(most_common_elem_freqs) AS f
14                           FROM  pg_stats
15                           WHERE tablename = tab
16                                 AND attname = col
17                         )x
18                 ) AS f
19                 JOIN (SELECT ROW_NUMBER() OVER (),
20                              e
21                        FROM (SELECT UNNEST(most_common_elems::text::text[]) AS e
22                               FROM  pg_stats 
23                               WHERE tablename = tab
24                                     AND attname = col
25                             )y
26                 ) AS elems USING (row_number);
27 END;
28 $$ LANGUAGE PLPGSQL;
29
30 CREATE OR REPLACE FUNCTION evergreen.query_int_wrapper (INT[],TEXT) RETURNS BOOL AS $$
31 BEGIN
32     RETURN $1 @@ $2::query_int;
33 END;
34 $$ LANGUAGE PLPGSQL STABLE;
35
36 COMMIT;
37