File: base.sql

package info (click to toggle)
pgfaceting 0.2.0-5
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 160 kB
  • sloc: sql: 811; makefile: 12; sh: 1
file content (165 lines) | stat: -rw-r--r-- 8,248 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
CREATE EXTENSION roaringbitmap;
CREATE EXTENSION pgfaceting;

CREATE SCHEMA facetingtestsuite;

CREATE TYPE facetingtestsuite.mimetype AS ENUM (
   'application/pdf',
    'text/html',
    'image/jpeg',
    'image/png',
    'application/msword',
    'text/csv',
    'application/zip',
    'application/vnd.ms-powerpoint'
    );

CREATE TABLE facetingtestsuite.employee (
    id int8 primary key,
    full_name text,
    department text
);

CREATE TABLE facetingtestsuite.categories (
    id int8 primary key,
    owner_id int8 REFERENCES facetingtestsuite.employee (id)
);

CREATE TABLE facetingtestsuite.documents (
    id int8 primary key,
    created timestamptz not null,
    finished timestamptz,
    category_id int8 REFERENCES facetingtestsuite.categories (id),
    tags text[],
    type facetingtestsuite.mimetype,
    size int8,
    title text
);

CREATE TABLE facetingtestsuite.authors (
    document_id int8 REFERENCES facetingtestsuite.documents (id) ON DELETE CASCADE,
    author_id int8 REFERENCES  facetingtestsuite.employee (id),
    PRIMARY KEY (document_id, author_id)
);

COPY facetingtestsuite.employee (id, full_name, department) FROM stdin;
1	John Smith	Director
2	Jane Doe	Sales
3	Jill James	Sales
\.

COPY facetingtestsuite.categories (id, owner_id) FROM stdin;
8	2
9	1
12	3
24	2
\.

COPY facetingtestsuite.documents (id, created, finished, category_id, tags, type, size, title) FROM stdin;
1	2010-01-01 00:00:42+02	2010-01-01 09:45:29+02	8	{blue,burlywood,antiquewhite,olive}	application/pdf	71205	Interracial marriage Science Research
2	2010-01-01 00:00:37+02	2010-01-01 03:55:08+02	12	{lightcoral,bisque,blue,"aqua blue","red purple",aqua}	text/html	682069	Odour and trials helped to improve the country's history through the public
3	2010-01-01 00:00:33+02	2010-01-02 18:29:15+02	9	{"mustard brown","very light pink"}	application/pdf	143708	Have technical scale, ordinary, commonsense notions of absolute time and length independent of the
4	2010-01-01 00:00:35+02	2010-01-02 01:12:08+02	24	{orange,green,blue}	text/html	280663	Database of (/ˈdɛnmɑːrk/; Danish: Danmark [ˈd̥ænmɑɡ̊]) is a spiral
5	2010-01-01 00:01:06+02	2010-01-01 23:18:56+02	24	{orange,chocolate}	image/jpeg	111770	Passage to now resumed
6	2010-01-01 00:01:05+02	2010-01-01 10:25:29+02	8	{blue,aquamarine}	application/pdf	110809	East. Mesopotamia, BCE – 480 BCE), when determining a value that
7	2010-01-01 00:00:57+02	2010-01-02 00:41:01+02	\N	{}	application/pdf	230803	Bahía de It has also conquered 13 South American finds and another
8	2010-01-01 00:01:11+02	2010-01-01 14:22:11+02	24	{blue,burlywood,"dirt brown",orange,ivory,brown,green,olive,lightpink}	image/jpeg	1304196	15-fold: from the mid- to late-20th
9	2010-01-01 00:01:47+02	2010-01-01 09:59:57+02	9	{green,blue,orange}	application/pdf	142410	Popular Western localized function model. Psychiatric interventions such as local businesses, but also
10	2010-01-01 00:01:31+02	2010-01-01 05:49:47+02	24	{green,lavender,blue,orange,red,darkslateblue}	text/html	199703	Rapidly expanding Large Interior Form, 1953-54, Man Enters the Cosmos and Nuclear Energy.
\.

COPY facetingtestsuite.authors FROM stdin;
1	1
1	2
2	1
3	1
4	1
4	2
4	3
5	1
5	2
6	2
7	3
9	1
10	1
\.

SELECT faceting.add_faceting_to_table('facetingtestsuite.documents',
        key => 'id',
        facets => array[
            faceting.datetrunc_facet('created', 'month'),
            faceting.datetrunc_facet('finished', 'month'),
            faceting.plain_facet('category_id'),
            faceting.array_facet('tags'),
            faceting.bucket_facet('size', buckets => array[0,1000,5000,10000,50000,100000,500000]),
            faceting.joined_plain_facet('author_id',
                                        from_clause => 'facetingtestsuite.authors a',
                                        correlation => 'a.document_id = {TABLE}.id',
                                        p_facet_name => 'author')
        ],
        populate => false
    );

SELECT faceting.populate_facets('facetingtestsuite.documents'::regclass);

SELECT * FROM faceting.top_values('facetingtestsuite.documents'::regclass);

SELECT faceting.add_facets('facetingtestsuite.documents',
    facets=>array[
        faceting.plain_facet('type'),
        faceting.joined_plain_facet('e.department',
                                    from_clause => 'facetingtestsuite.categories c JOIN facetingtestsuite.employee e ON c.owner_id = e.id',
                                    correlation => 'c.id = {TABLE}.category_id')

    ]);

SELECT faceting.populate_facets_query('facetingtestsuite.documents'::regclass::oid);

SELECT * FROM faceting.top_values('facetingtestsuite.documents'::regclass);

COPY facetingtestsuite.documents (id, created, finished, category_id, tags, type, size, title) FROM stdin;
11	2010-01-01 00:01:21+02	2010-01-01 20:31:12+02	9	{blue,pink,orange}	image/png	679323	Additional 32 Martin, Saint Pierre and
12	2010-01-01 00:02:12+02	2010-01-02 10:33:25+02	24	{green,maroon,blue,coral,orange}	application/pdf	166940	To harness between continents. By the mid-19th century?
13	2010-01-01 00:02:20+02	2010-01-01 03:59:11+02	24	{orange,"pale peach",blue,"peachy pink",chartreuse,aqua,brown}	application/pdf	333191	The synchrocyclotron, been exposed
14	2010-01-01 00:02:32+02	2010-01-01 18:50:37+02	24	{orange,cherry,brown}	application/pdf	12421	And supernovae as ways to indirectly measure these elusive phenomenological entities.
15	2010-01-01 00:02:47+02	2010-01-01 14:29:27+02	24	{orange,blue,cyan,red,floralwhite,darkslateblue}	application/pdf	459132	Ratio. \n the nucleus of a cumulus or cumulonimbus.
16	2010-01-01 00:02:38+02	2010-01-01 20:53:15+02	24	{blue,orange,purple,"pale gold"}	application/pdf	140909	Pacific. A observance of halakha may pose serious
17	2010-01-01 00:02:48+02	2010-01-02 08:19:47+02	9	{orange,blue,rust}	image/png	414066	Gravity equivalent, it attract the wrath of
18	2010-01-01 00:03:05+02	2010-01-02 15:16:47+02	24	{dimgray,orange,red}	image/jpeg	113942	Jim Crow classification methods including
19	2010-01-01 00:03:23+02	2010-01-02 06:33:01+02	24	{"candy pink",blue,orange,brown}	text/csv	100419	Trans-Atlantic trade archdioceses, the Archdiocese of Atlanta.
20	2010-01-01 00:03:23+02	2010-01-02 02:24:17+02	24	{cadetblue,blue,green}	image/png	705939	Normandy with others. Laughter is a kind of case that
\.

SELECT faceting.merge_deltas('facetingtestsuite.documents'::regclass);

SELECT * FROM faceting.top_values('facetingtestsuite.documents'::regclass);

(SELECT 'created' AS facet_name, date_trunc('month', created)::text AS facet_value, COUNT(*) AS cardinality FROM facetingtestsuite.documents GROUP BY 1, 2 ORDER BY 3 DESC, 2 LIMIT 5)
    UNION ALL
(SELECT 'finished', date_trunc('month', finished)::text, COUNT(*) FROM facetingtestsuite.documents GROUP BY 1, 2 ORDER BY 3 DESC, 2 LIMIT 5)
    UNION ALL
(SELECT 'category_id', category_id::text, COUNT(*) FROM facetingtestsuite.documents GROUP BY 1, 2 ORDER BY 3 DESC, 2 LIMIT 5)
    UNION ALL
(SELECT 'type', type::text, COUNT(*) FROM facetingtestsuite.documents GROUP BY 1, 2 ORDER BY 3 DESC, 2 LIMIT 5)
    UNION ALL
(SELECT 'size', width_bucket(size, array[0,1000,5000,10000,50000,100000,500000])::text, COUNT(*) FROM facetingtestsuite.documents GROUP BY 1, 2 ORDER BY 3 DESC, 2 LIMIT 5);

SELECT * FROM faceting.count_results('facetingtestsuite.documents'::regclass,
                                     filters => array[row('category_id', 24)]::faceting.facet_filter[]);

DELETE FROM facetingtestsuite.documents WHERE 'red' = ANY (tags);

SELECT faceting.merge_deltas('facetingtestsuite.documents'::regclass);

SELECT * FROM faceting.top_values('facetingtestsuite.documents'::regclass, facets=>array['tags', 'type']);

SELECT faceting.drop_facets('facetingtestsuite.documents', array['type', 'tags', 'not existing']);
SELECT * FROM faceting.top_values('facetingtestsuite.documents'::regclass);

SELECT faceting.drop_faceting('facetingtestsuite.documents');

-- Check that adding faceting back in works
SELECT faceting.add_faceting_to_table('facetingtestsuite.documents',
        key => 'id',
        facets => array[faceting.plain_facet('category_id')]);
SELECT * FROM faceting.top_values('facetingtestsuite.documents'::regclass);