diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2015-08-07 02:39:05 +0100 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2015-08-07 21:03:37 +0100 |
commit | 1c64cce1859ae39a3360f21970bb86a8dedf1fda (patch) | |
tree | 9a695ca065cef3929b953cd4a839b422f42f30f9 | |
parent | Replace file finding with pure SQL version with multi-repo support (diff) | |
download | gentoobrowse-1c64cce1859ae39a3360f21970bb86a8dedf1fda.tar.bz2 gentoobrowse-1c64cce1859ae39a3360f21970bb86a8dedf1fda.tar.xz gentoobrowse-1c64cce1859ae39a3360f21970bb86a8dedf1fda.zip |
Replace categories and ebuilddefs
-rw-r--r-- | gentoobrowse/console/packageimport.xml | 39 | ||||
-rw-r--r-- | gentoobrowse/datasources/schema.sql | 3 |
2 files changed, 22 insertions, 20 deletions
diff --git a/gentoobrowse/console/packageimport.xml b/gentoobrowse/console/packageimport.xml index f586b31..c0061b3 100644 --- a/gentoobrowse/console/packageimport.xml +++ b/gentoobrowse/console/packageimport.xml @@ -2,7 +2,7 @@ <packageimport name="bugassociate" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:project2="http://project2.randomdan.homeip.net"> <project2:sqlmerge name="categories" datasource="postgres" targettable="categories" useview="yes"> - <sql>SELECT DISTINCT SPLIT_PART(filename, '/', 1) AS name FROM files WHERE filetypeid = 1</sql> + <sql>SELECT DISTINCT pathparts[3] AS name FROM files WHERE filetypeid = 1</sql> <columns> <name key="true" /> </columns> @@ -11,25 +11,23 @@ <project2:sqltask name="tmpdefs" datasource="postgres"> <sql> CREATE TEMPORARY TABLE ebuilddefs AS - SELECT d.*, c.categoryid, c.name AS catname, d[2] AS pkgname, d[3] AS version, ebuildversion_constructor(d[3]) AS versioninst + SELECT p.*, d[1] pkgname, d[2] AS version, ebuildversion_constructor(d[2]) AS versioninst FROM ( - SELECT *, REGEXP_MATCHES(filename, '^([^/]+)/(.+)-([0-9].*)$') AS d - FROM CROSSTAB( - 'SELECT f.filename AS filename, f.fileid, f.firstseen, f.moddate, SPLIT_PART(content, ''='', 1) AS category, - (REGEXP_MATCHES(content, E''([^=]+)=(.*)''))[2] AS value - FROM filecache fc, files f - WHERE fc.fileid = f.fileid - AND f.filetypeid = 1 - ORDER BY 1,2', - 'SELECT DISTINCT SPLIT_PART(content, ''='', 1) AS attr - FROM filecache fc, files f - WHERE fc.fileid = f.fileid - AND f.filetypeid = 1 - ORDER BY attr') AS ct(filename TEXT, fileid INT, firstseen TIMESTAMP WITHOUT TIME ZONE, moddate TIMESTAMP WITHOUT TIME ZONE, - defined_phases TEXT, depend TEXT, description TEXT, eapi INT, - homepage TEXT, iuse TEXT, keywords TEXT, license TEXT, pdepend TEXT, properties TEXT, rdepend TEXT, required_use TEXT, - restrict TEXT, slot TEXT, src_uri TEXT, _eclasses_ TEXT, _md5_ TEXT)) d, categories c - WHERE SPLIT_PART(d.filename, '/', 1) = c.name + SELECT c.name catname, c.categoryid, f.repoid, f.firstseen, f.moddate, REGEXP_MATCHES(pathparts[4], '^(.+)-([0-9].*)$') AS d, p.* + FROM CROSSTAB($$ + SELECT fileid, a, SUBSTRING(md FROM '=(.*)') v + FROM ( + SELECT f.fileid, f.filename, a + FROM files f, unnest(array['DEFINED_PHASES', 'DEPEND', 'DESCRIPTION', 'EAPI', 'HOMEPAGE', 'IUSE', 'KEYWORDS', + 'LICENSE', 'PDEPEND', 'PROPERTIES', 'RDEPEND', 'REQUIRED_USE', 'RESTRICT', 'SLOT', 'SRC_URI']) a + WHERE filetypeid = 1 + ) f LEFT OUTER JOIN REGEXP_SPLIT_TO_TABLE(PG_READ_FILE(f.filename), '\n') md + ON SPLIT_PART(md, '=' ,1) = a + ORDER BY FILEID, a $$) AS p(fileid INT, defined_phases TEXT, depend TEXT, description TEXT, eapi text, homepage TEXT, + iuse TEXT, keywords TEXT, license TEXT, pdepend TEXT, properties TEXT, rdepend TEXT, required_use TEXT, + restrict TEXT, slot TEXT, src_uri TEXT), files f, categories c + WHERE f.fileid = p.fileid + AND f.pathparts[3] = c.name) p </sql> </project2:sqltask> @@ -50,7 +48,7 @@ <project2:sqlmerge name="ebuilds" datasource="postgres" targettable="ebuilds" useview="yes"> <sql> - SELECT p.packageid, e.version, e.fileid AS ebuildid, e.versioninst, e.slot, e.license, e.firstseen, e.moddate + SELECT p.packageid, e.version, e.fileid AS ebuildid, e.versioninst, e.slot, e.license, e.firstseen, e.moddate, e.repoid FROM ebuilddefs e, packages p WHERE e.pkgname = p.name AND e.categoryid = p.categoryid @@ -64,6 +62,7 @@ <license /> <firstseen /> <moddate /> + <repoid /> </columns> </project2:sqlmerge> diff --git a/gentoobrowse/datasources/schema.sql b/gentoobrowse/datasources/schema.sql index a93a2c2..be36a20 100644 --- a/gentoobrowse/datasources/schema.sql +++ b/gentoobrowse/datasources/schema.sql @@ -312,6 +312,7 @@ COMMENT ON TABLE ebuild_uses IS 'Use flags affecting ebuilds'; CREATE TABLE ebuilds ( ebuildid integer NOT NULL, packageid integer NOT NULL, + repoid integer, version text NOT NULL, versioninst ebuildversion NOT NULL, slot text NOT NULL, @@ -684,6 +685,8 @@ CREATE INDEX idx_userpackages_package ON user_packages USING btree (packageid); -- 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; +ALTER TABLE ONLY ebuilds + ADD CONSTRAINT fk_ebuild_repo FOREIGN KEY (repoid) REFERENCES repos(repoid) ON UPDATE CASCADE ON DELETE CASCADE; -- Name: fk_ebuildarch_file; Type: FK CONSTRAINT; Schema: gentoobrowse; Owner: gentoo ALTER TABLE ONLY ebuild_archs ADD CONSTRAINT fk_ebuildarch_file FOREIGN KEY (ebuildid) REFERENCES ebuilds(ebuildid) ON UPDATE CASCADE ON DELETE CASCADE; |