Revision 1818
| online_search/indexer/tables_pgsql.sql (revision 1818) | ||
|---|---|---|
| 1 | 1 |
CREATE LANGUAGE plpgsql; |
| 2 |
CREATE TYPE file_type AS ENUM ('Unknown', 'RAR', 'PAR', 'PAR2', 'SFV', 'NFO', 'NZB', 'Other');
|
|
| 3 | 2 |
|
| 4 | 3 |
CREATE TABLE row_counts (relname text PRIMARY KEY, reltuples numeric); |
| 4 |
CLUSTER row_counts USING row_counts_pkey; |
|
| 5 |
|
|
| 5 | 6 |
CREATE OR REPLACE FUNCTION count_trig() |
| 6 | 7 |
RETURNS TRIGGER AS |
| 7 | 8 |
$$ |
| ... | ... | |
| 40 | 41 |
CREATE TABLE collections |
| 41 | 42 |
( |
| 42 | 43 |
collection_id BIGINT NOT NULL PRIMARY KEY DEFAULT NEXTVAL('collection_id_seq'),
|
| 44 |
newsgroup_id INT NOT NULL REFERENCES newsgroups, |
|
| 43 | 45 |
stamp TIMESTAMP NOT NULL, |
| 44 | 46 |
hash BIGINT NOT NULL, |
| 45 | 47 |
collection_name VARCHAR(256) NOT NULL, |
| ... | ... | |
| 47 | 49 |
poster VARCHAR(128) NOT NULL, |
| 48 | 50 |
total_size BIGINT NOT NULL, |
| 49 | 51 |
num_parts_found INT NOT NULL, |
| 50 |
num_parts_expected INT NOT NULL |
|
| 52 |
num_parts_expected INT NOT NULL, |
|
| 53 |
num_regular_files INT NOT NULL, |
|
| 54 |
num_par2_files INT NOT NULL, |
|
| 55 |
stamp_changed_in_db TIMESTAMP NOT NULL |
|
| 51 | 56 |
); |
| 57 |
CREATE INDEX collections_hash_idx ON collections(hash); |
|
| 58 |
CLUSTER collections USING collections_pkey; |
|
| 52 | 59 |
|
| 53 |
CREATE TABLE collections_in_newsgroups |
|
| 60 |
CREATE TABLE files_in_collections |
|
| 54 | 61 |
( |
| 55 | 62 |
collection_id BIGINT NOT NULL REFERENCES collections, |
| 63 |
file_id BIGINT NOT NULL, |
|
| 56 | 64 |
stamp TIMESTAMP NOT NULL, |
| 57 |
newsgroup_id INT NOT NULL REFERENCES newsgroups, |
|
| 58 |
PRIMARY KEY(collection_id, newsgroup_id) |
|
| 65 |
PRIMARY KEY (collection_id, file_id) |
|
| 59 | 66 |
); |
| 67 |
CREATE TABLE files_in_collections_unsorted (PRIMARY KEY (file_id)) INHERITS (files_in_collections); |
|
| 68 |
CREATE INDEX files_in_collections_unsorted_stamp_idx ON files_in_collections_unsorted(stamp); |
|
| 69 |
CLUSTER files_in_collections_unsorted USING files_in_collections_unsorted_pkey; |
|
| 70 |
ALTER TABLE files_in_collections_unsorted ADD FOREIGN KEY (file_id) REFERENCES files_unsorted; |
|
| 71 |
ALTER TABLE files_in_collections_unsorted NO INHERIT files_in_collections; |
|
| 72 |
CREATE TRIGGER files_in_collections_unsorted_count_delete_trig AFTER DELETE on files_in_collections_unsorted FOR EACH ROW EXECUTE PROCEDURE count_trig(); |
|
| 73 |
CREATE TRIGGER files_in_collections_unsorted_count_insert_trig AFTER INSERT on files_in_collections_unsorted FOR EACH ROW EXECUTE PROCEDURE count_trig(); |
|
| 74 |
INSERT INTO row_counts VALUES('files_in_collections_unsorted', 0);
|
|
| 60 | 75 |
|
| 61 | 76 |
CREATE SEQUENCE file_id_seq NO CYCLE; |
| 62 | 77 |
CREATE TYPE file_type AS ENUM ('Unknown', 'RAR', 'PAR', 'PAR2', 'SFV', 'NFO', 'NZB', 'Other');
|
| ... | ... | |
| 111 | 126 |
CREATE TRIGGER file_parts_unsorted_count_insert_trig AFTER INSERT on file_parts_unsorted FOR EACH ROW EXECUTE PROCEDURE count_trig(); |
| 112 | 127 |
INSERT INTO row_counts VALUES('file_parts_unsorted', 0);
|
| 113 | 128 |
|
| 114 |
CREATE TABLE files_in_newsgroups |
|
| 115 |
( |
|
| 116 |
file_id BIGINT NOT NULL REFERENCES files, |
|
| 117 |
stamp TIMESTAMP NOT NULL, |
|
| 118 |
newsgroup_id INT NOT NULL REFERENCES newsgroups, |
|
| 119 |
PRIMARY KEY(file_id, newsgroup_id) |
|
| 120 |
); |
|
| 129 |
-- CREATE TABLE files_in_newsgroups |
|
| 130 |
-- ( |
|
| 131 |
-- file_id BIGINT NOT NULL REFERENCES files, |
|
| 132 |
-- stamp TIMESTAMP NOT NULL, |
|
| 133 |
-- newsgroup_id INT NOT NULL REFERENCES newsgroups, |
|
| 134 |
-- PRIMARY KEY(file_id, newsgroup_id) |
|
| 135 |
-- ); |
|
| 121 | 136 |
|
| 122 | 137 |
CREATE TABLE statistics |
| 123 | 138 |
( |
| ... | ... | |
| 203 | 218 |
IF (v_base_table = 'file_parts') THEN |
| 204 | 219 |
EXECUTE 'CLUSTER ' || v_partition_name || ' USING ' || v_partition_name || '_stamp_idx'; |
| 205 | 220 |
END IF; |
| 221 |
IF (v_base_table = 'files_in_collections') THEN |
|
| 222 |
EXECUTE 'CLUSTER ' || v_partition_name || ' USING ' || v_partition_name || '_stamp_idx'; |
|
| 223 |
END IF; |
|
| 206 | 224 |
|
| 207 | 225 |
EXECUTE 'CREATE TRIGGER ' || v_partition_name || '_count_delete_trig AFTER DELETE on ' || v_partition_name || ' FOR EACH ROW EXECUTE PROCEDURE count_trig()'; |
| 208 | 226 |
EXECUTE 'CREATE TRIGGER ' || v_partition_name || '_count_insert_trig AFTER INSERT on ' || v_partition_name || ' FOR EACH ROW EXECUTE PROCEDURE count_trig()'; |
| ... | ... | |
| 264 | 282 |
BEGIN |
| 265 | 283 |
EXECUTE 'DROP TABLE ' || v_partition_name; |
| 266 | 284 |
EXECUTE 'DELETE FROM row_counts WHERE relname=''' || v_partition_name || ''''; |
| 267 |
EXECUTE 'DELETE FROM newsgroup_statistics WHERE day < ''' || v_date_from || ''''; |
|
| 285 |
|
|
| 286 |
IF (v_base_table = 'files') THEN |
|
| 287 |
EXECUTE 'DELETE FROM newsgroup_statistics WHERE day < ''' || v_date_from || ''''; |
|
| 288 |
END IF; |
|
| 268 | 289 |
EXCEPTION |
| 269 | 290 |
WHEN dependent_objects_still_exist THEN |
| 270 | 291 |
RAISE NOTICE 'Unable to drop partition due to referential integrity. Please try again later'; |
| ... | ... | |
| 526 | 547 |
-- SELECT manage_partitions('files', 'file_id', 'collection_id', 'collections');
|
| 527 | 548 |
SELECT manage_partitions('files', 'file_id', NULL, NULL);
|
| 528 | 549 |
SELECT manage_partitions('file_parts', 'file_id', 'file_id', 'files');
|
| 529 |
-- SELECT manage_partitions('files_in_newsgroups', 'file_id', 'file_id', 'files');
|
|
| 550 |
SELECT manage_partitions('files_in_collections', 'file_id', 'file_id', 'files');
|
|
| 530 | 551 |
|
| 531 | 552 |
|
Also available in: Unified diff
NNTPGrab

