diff options
-rw-r--r-- | gentoobrowse/console/packagemasks.xml | 43 | ||||
-rw-r--r-- | gentoobrowse/datasources/schema.sql | 86 |
2 files changed, 47 insertions, 82 deletions
diff --git a/gentoobrowse/console/packagemasks.xml b/gentoobrowse/console/packagemasks.xml index 6fafbb4..2e5e2e3 100644 --- a/gentoobrowse/console/packagemasks.xml +++ b/gentoobrowse/console/packagemasks.xml @@ -1,41 +1,40 @@ <?xml version="1.0"?> <packagemasks name="packagemasks" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:project2="http://project2.randomdan.homeip.net"> + <project2:sqltask name="tmpmasks" datasource="postgres"> + <sql> + CREATE TEMPORARY TABLE tmpmasks AS + SELECT to_date(m[3], 'dd mon yyyy') as dateadded, RANK() OVER(PARTITION BY to_date(m[3], 'dd mon yyyy') ORDER BY n DESC) n, + TRIM(m[1]) as person, m[2] as email, m[4] as message, m[5] as atoms + FROM ( + SELECT row_number() over() n, + regexp_matches(r, '^# ([^<]+)? ?<(.+?@[^>]+)> \((\d+ *(?:jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec) \d+)\)\n((?:#[^\n]*\n)+)(.*)$', 'i') m + FROM files f, REGEXP_SPLIT_TO_TABLE(PG_READ_FILE(filename), '\n\s*\n') r + WHERE filetypeid = 3) m + </sql> + </project2:sqltask> <project2:sqlmerge name="masksets" datasource="postgres" targettable="masksets" useview="yes"> <sql> - SELECT d.setno, - MIN(field[1]) AS person, - MIN(field[2]) AS email, - CAST((REGEXP_MATCHES(MIN(field[3]), E'(\\d+ *(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\\w* \\d+)', 'i'))[1] AS DATE) AS dateadded, - TRIM(STRING_AGG(REGEXP_REPLACE(content, '^#+', ''), ' ' ORDER BY m.line)) AS message - FROM (SELECT setno, line AS line, REGEXP_MATCHES(content, E'^# *(.+) +< *(.+) *> \\( *(.+) *\\)$') AS field - FROM file_masks_withset - WHERE line IN(SELECT min(line) - FROM file_masks_withset - GROUP BY setno)) AS d, - (SELECT c.line, c.content, c.setno - FROM file_masks_withset c - WHERE c.content LIKE '#%') AS m - WHERE m.setno = d.setno - AND m.line > d.line - GROUP BY d.setno + SELECT dateadded, n, person, email, + TRIM(REGEXP_REPLACE(message, '#?\s+', ' ', 'g')) message + FROM tmpmasks </sql> <columns> - <setno key="true" /> + <dateadded key="true" /> + <n key="true" /> <person /> <email /> - <dateadded /> <message /> </columns> </project2:sqlmerge> <project2:sqlmerge name="masks" datasource="postgres" targettable="ebuild_masks" useview="yes"> <sql> - SELECT line, setno, ebuildfilter(content) AS ebuildid - FROM file_masks_withset - WHERE content NOT LIKE '#%' + SELECT s.setno, ebuildfilter(REGEXP_SPLIT_TO_TABLE(tm.atoms, '\n')) ebuildid + FROM tmpmasks tm, masksets s + WHERE tm.dateadded = s.dateadded + AND tm.n = s.n </sql> <columns> - <line key="true" /> <setno key="true" /> <ebuildid key="true" /> </columns> diff --git a/gentoobrowse/datasources/schema.sql b/gentoobrowse/datasources/schema.sql index d737ef7..1f1478f 100644 --- a/gentoobrowse/datasources/schema.sql +++ b/gentoobrowse/datasources/schema.sql @@ -284,7 +284,6 @@ ALTER TABLE ebuild_deps OWNER TO gentoo; COMMENT ON TABLE ebuild_deps IS 'The dependencies of ebuilds (includes blocks, etc)'; -- Name: ebuild_masks; Type: TABLE; Schema: gentoobrowse; Owner: gentoo; Tablespace: CREATE TABLE ebuild_masks ( - line integer NOT NULL, setno integer NOT NULL, ebuildid integer NOT NULL ); @@ -322,13 +321,6 @@ CREATE TABLE ebuilds ( ALTER TABLE ebuilds OWNER TO gentoo; -- Name: TABLE ebuilds; Type: COMMENT; Schema: gentoobrowse; Owner: gentoo COMMENT ON TABLE ebuilds IS 'Ebuilds :-)'; --- Name: filecache; Type: TABLE; Schema: gentoobrowse; Owner: gentoo; Tablespace: -CREATE TABLE filecache ( - line integer NOT NULL, - content text NOT NULL, - fileid integer NOT NULL -); -ALTER TABLE filecache OWNER TO gentoo; -- Name: files; Type: TABLE; Schema: gentoobrowse; Owner: gentoo; Tablespace: CREATE TABLE files ( filename text NOT NULL, @@ -342,28 +334,6 @@ CREATE TABLE files ( pathparts text[] ); ALTER TABLE files OWNER TO gentoo; --- Name: file_masks; Type: VIEW; Schema: gentoobrowse; Owner: gentoo -CREATE VIEW file_masks AS - SELECT fc.line, - fc.content - FROM files f, - filecache fc - WHERE (((f.filename = 'package.mask'::text) AND (f.fileid = fc.fileid)) AND (fc.line > 32)); -ALTER TABLE file_masks OWNER TO gentoo; --- Name: file_masks_withset; Type: VIEW; Schema: gentoobrowse; Owner: gentoo -CREATE VIEW file_masks_withset AS - SELECT o.line, - o.content, - CASE - WHEN (o.content !~~ '#%'::text) THEN ( SELECT max(i.line) AS max - FROM file_masks i - WHERE ((i.line <= o.line) AND (substr(i.content, 1, 1) = '#'::text))) - ELSE ( SELECT (min(i.line) - 1) - FROM file_masks i - WHERE ((i.line >= o.line) AND (substr(i.content, 1, 1) <> '#'::text))) - END AS setno - FROM file_masks o; -ALTER TABLE file_masks_withset OWNER TO gentoo; -- Name: filetypes; Type: TABLE; Schema: gentoobrowse; Owner: gentoo; Tablespace: CREATE TABLE filetypes ( filetypeid integer NOT NULL, @@ -382,12 +352,23 @@ ALTER TABLE license OWNER TO gentoo; -- Name: masksets; Type: TABLE; Schema: gentoobrowse; Owner: gentoo; Tablespace: CREATE TABLE masksets ( setno integer NOT NULL, - person text NOT NULL, + person text, email text NOT NULL, dateadded date NOT NULL, - message text NOT NULL + message text NOT NULL, + n smallint NOT NULL ); ALTER TABLE masksets OWNER TO gentoo; +-- Name: masksets_setno_seq; Type: SEQUENCE; Schema: gentoobrowse; Owner: gentoo +CREATE SEQUENCE masksets_setno_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; +ALTER TABLE masksets_setno_seq OWNER TO gentoo; +-- Name: masksets_setno_seq; Type: SEQUENCE OWNED BY; Schema: gentoobrowse; Owner: gentoo +ALTER SEQUENCE masksets_setno_seq OWNED BY masksets.setno; -- Name: package_bugs; Type: TABLE; Schema: gentoobrowse; Owner: gentoo; Tablespace: CREATE TABLE package_bugs ( packageid integer NOT NULL, @@ -540,6 +521,8 @@ ALTER SEQUENCE users_userid_seq OWNED BY users.userid; ALTER TABLE ONLY categories ALTER COLUMN categoryid SET DEFAULT nextval('seq_categoryid'::regclass); -- Name: fileid; Type: DEFAULT; Schema: gentoobrowse; Owner: gentoo ALTER TABLE ONLY files ALTER COLUMN fileid SET DEFAULT nextval('seq_fileid'::regclass); +-- Name: setno; Type: DEFAULT; Schema: gentoobrowse; Owner: gentoo +ALTER TABLE ONLY masksets ALTER COLUMN setno SET DEFAULT nextval('masksets_setno_seq'::regclass); -- Name: packageid; Type: DEFAULT; Schema: gentoobrowse; Owner: gentoo ALTER TABLE ONLY packages ALTER COLUMN packageid SET DEFAULT nextval('seq_packageid'::regclass); -- Name: repoid; Type: DEFAULT; Schema: gentoobrowse; Owner: gentoo @@ -565,6 +548,9 @@ ALTER TABLE ebuild_archs CLUSTER ON pk_ebuildarch; ALTER TABLE ONLY ebuild_deps ADD CONSTRAINT pk_ebuilddeps PRIMARY KEY (ebuildid, packageid, versionspec, flags, slot, op); ALTER TABLE ebuild_deps CLUSTER ON pk_ebuilddeps; +-- Name: pk_ebuildmasks; Type: CONSTRAINT; Schema: gentoobrowse; Owner: gentoo; Tablespace: +ALTER TABLE ONLY ebuild_masks + ADD CONSTRAINT pk_ebuildmasks PRIMARY KEY (ebuildid, setno); -- Name: pk_ebuildrdeps; Type: CONSTRAINT; Schema: gentoobrowse; Owner: gentoo; Tablespace: ALTER TABLE ONLY ebuild_rdeps ADD CONSTRAINT pk_ebuildrdeps PRIMARY KEY (ebuildid, packageid, versionspec, flags, slot, op); @@ -573,9 +559,6 @@ ALTER TABLE ebuild_rdeps CLUSTER ON pk_ebuildrdeps; ALTER TABLE ONLY ebuild_uses ADD CONSTRAINT pk_ebuilduses PRIMARY KEY (ebuildid, use); ALTER TABLE ebuild_uses CLUSTER ON pk_ebuilduses; --- Name: pk_filecache; Type: CONSTRAINT; Schema: gentoobrowse; Owner: gentoo; Tablespace: -ALTER TABLE ONLY filecache - ADD CONSTRAINT pk_filecache PRIMARY KEY (fileid, line); -- Name: pk_fileclass; Type: CONSTRAINT; Schema: gentoobrowse; Owner: gentoo; Tablespace: ALTER TABLE ONLY filetypes ADD CONSTRAINT pk_fileclass PRIMARY KEY (filetypeid); @@ -590,10 +573,6 @@ ALTER TABLE package_changelogs CLUSTER ON pk_package_changelogs; ALTER TABLE ONLY package_bugs ADD CONSTRAINT pk_packagebugs PRIMARY KEY (packageid, bugid); ALTER TABLE package_bugs CLUSTER ON pk_packagebugs; --- Name: pk_packagemasks; Type: CONSTRAINT; Schema: gentoobrowse; Owner: gentoo; Tablespace: -ALTER TABLE ONLY ebuild_masks - ADD CONSTRAINT pk_packagemasks PRIMARY KEY (ebuildid, setno, line); -ALTER TABLE ebuild_masks CLUSTER ON pk_packagemasks; -- Name: pk_packagemasksets; Type: CONSTRAINT; Schema: gentoobrowse; Owner: gentoo; Tablespace: ALTER TABLE ONLY masksets ADD CONSTRAINT pk_packagemasksets PRIMARY KEY (setno); @@ -667,9 +646,6 @@ CREATE INDEX idx_ebuildrdeps_package ON ebuild_rdeps USING btree (packageid); CREATE INDEX idx_ebuilds_firstseen ON ebuilds USING btree (firstseen); -- Name: idx_ebuilduses_use; Type: INDEX; Schema: gentoobrowse; Owner: gentoo; Tablespace: CREATE INDEX idx_ebuilduses_use ON ebuild_uses USING btree (use); --- Name: idx_filecache_line; Type: INDEX; Schema: gentoobrowse; Owner: gentoo; Tablespace: -CREATE INDEX idx_filecache_line ON filecache USING btree (line); -ALTER TABLE filecache CLUSTER ON idx_filecache_line; -- Name: idx_package_name; Type: INDEX; Schema: gentoobrowse; Owner: gentoo; Tablespace: CREATE INDEX idx_package_name ON packages USING btree (name); -- Name: idx_packagebugs_bug; Type: INDEX; Schema: gentoobrowse; Owner: gentoo; Tablespace: @@ -682,6 +658,8 @@ CREATE INDEX idx_packages_herd ON packages USING btree (herd); CREATE INDEX idx_uselocal_use ON use_local USING btree (use); -- Name: idx_userpackages_package; Type: INDEX; Schema: gentoobrowse; Owner: gentoo; Tablespace: CREATE INDEX idx_userpackages_package ON user_packages USING btree (packageid); +-- Name: uni_masksets_dateaddedn; Type: INDEX; Schema: gentoobrowse; Owner: gentoo; Tablespace: +CREATE INDEX uni_masksets_dateaddedn ON masksets USING btree (dateadded, n); -- Name: fk_ebuild_pkg; Type: FK CONSTRAINT; Schema: gentoobrowse; Owner: gentoo ALTER TABLE ONLY ebuilds ADD CONSTRAINT fk_ebuild_pkg FOREIGN KEY (packageid) REFERENCES packages(packageid) ON UPDATE CASCADE ON DELETE CASCADE; @@ -697,6 +675,12 @@ ALTER TABLE ONLY ebuild_deps -- Name: fk_ebuilddeps_pkg; Type: FK CONSTRAINT; Schema: gentoobrowse; Owner: gentoo ALTER TABLE ONLY ebuild_deps ADD CONSTRAINT fk_ebuilddeps_pkg FOREIGN KEY (packageid) REFERENCES packages(packageid) ON UPDATE CASCADE ON DELETE CASCADE; +-- Name: fk_ebuildmasks_ebuild; Type: FK CONSTRAINT; Schema: gentoobrowse; Owner: gentoo +ALTER TABLE ONLY ebuild_masks + ADD CONSTRAINT fk_ebuildmasks_ebuild FOREIGN KEY (ebuildid) REFERENCES ebuilds(ebuildid) ON UPDATE CASCADE ON DELETE CASCADE; +-- Name: fk_ebuildmasks_maskset; Type: FK CONSTRAINT; Schema: gentoobrowse; Owner: gentoo +ALTER TABLE ONLY ebuild_masks + ADD CONSTRAINT fk_ebuildmasks_maskset FOREIGN KEY (setno) REFERENCES masksets(setno) ON UPDATE CASCADE ON DELETE CASCADE; -- Name: fk_ebuildrdeps_ebuild; Type: FK CONSTRAINT; Schema: gentoobrowse; Owner: gentoo ALTER TABLE ONLY ebuild_rdeps ADD CONSTRAINT fk_ebuildrdeps_ebuild FOREIGN KEY (ebuildid) REFERENCES ebuilds(ebuildid) ON UPDATE CASCADE ON DELETE CASCADE; @@ -706,9 +690,6 @@ ALTER TABLE ONLY ebuild_rdeps -- Name: fk_ebuilduses_file; Type: FK CONSTRAINT; Schema: gentoobrowse; Owner: gentoo ALTER TABLE ONLY ebuild_uses ADD CONSTRAINT fk_ebuilduses_file FOREIGN KEY (ebuildid) REFERENCES ebuilds(ebuildid) ON UPDATE CASCADE ON DELETE CASCADE; --- Name: fk_filecache_fileid; Type: FK CONSTRAINT; Schema: gentoobrowse; Owner: gentoo -ALTER TABLE ONLY filecache - ADD CONSTRAINT fk_filecache_fileid FOREIGN KEY (fileid) REFERENCES files(fileid) ON DELETE CASCADE; -- Name: fk_files_type; Type: FK CONSTRAINT; Schema: gentoobrowse; Owner: gentoo ALTER TABLE ONLY files ADD CONSTRAINT fk_files_type FOREIGN KEY (filetypeid) REFERENCES filetypes(filetypeid) ON UPDATE CASCADE; @@ -803,26 +784,11 @@ REVOKE ALL ON TABLE ebuilds FROM PUBLIC; REVOKE ALL ON TABLE ebuilds FROM gentoo; GRANT ALL ON TABLE ebuilds TO gentoo; GRANT SELECT ON TABLE ebuilds TO apache; --- Name: filecache; Type: ACL; Schema: gentoobrowse; Owner: gentoo -REVOKE ALL ON TABLE filecache FROM PUBLIC; -REVOKE ALL ON TABLE filecache FROM gentoo; -GRANT ALL ON TABLE filecache TO gentoo; -GRANT SELECT ON TABLE filecache TO apache; -- Name: files; Type: ACL; Schema: gentoobrowse; Owner: gentoo REVOKE ALL ON TABLE files FROM PUBLIC; REVOKE ALL ON TABLE files FROM gentoo; GRANT ALL ON TABLE files TO gentoo; GRANT SELECT ON TABLE files TO apache; --- Name: file_masks; Type: ACL; Schema: gentoobrowse; Owner: gentoo -REVOKE ALL ON TABLE file_masks FROM PUBLIC; -REVOKE ALL ON TABLE file_masks FROM gentoo; -GRANT ALL ON TABLE file_masks TO gentoo; -GRANT SELECT ON TABLE file_masks TO apache; --- Name: file_masks_withset; Type: ACL; Schema: gentoobrowse; Owner: gentoo -REVOKE ALL ON TABLE file_masks_withset FROM PUBLIC; -REVOKE ALL ON TABLE file_masks_withset FROM gentoo; -GRANT ALL ON TABLE file_masks_withset TO gentoo; -GRANT SELECT ON TABLE file_masks_withset TO apache; -- Name: filetypes; Type: ACL; Schema: gentoobrowse; Owner: gentoo REVOKE ALL ON TABLE filetypes FROM PUBLIC; REVOKE ALL ON TABLE filetypes FROM gentoo; |