diff options
| -rw-r--r-- | gentoobrowse/console/packageimport.xml | 102 | ||||
| -rw-r--r-- | gentoobrowse/views/search.xml | 2 | ||||
| -rw-r--r-- | gentoobrowse/views/use.xml | 4 | 
3 files changed, 51 insertions, 57 deletions
| diff --git a/gentoobrowse/console/packageimport.xml b/gentoobrowse/console/packageimport.xml index c136294..4844dd0 100644 --- a/gentoobrowse/console/packageimport.xml +++ b/gentoobrowse/console/packageimport.xml @@ -2,26 +2,44 @@  <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 (REGEXP_MATCHES(filename, '^[^/]+'))[1] AS name FROM files WHERE filetypeid = 1</sql> +		<sql>SELECT DISTINCT SPLIT_PART(filename, '/', 1) AS name FROM files WHERE filetypeid = 1</sql>  		<columns>  			<name key="true" />  		</columns>  	</project2:sqlmerge> +	<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 +			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 +		</sql> +	</project2:sqltask> +  	<project2:sqlmerge name="packages" datasource="postgres" targettable="packages" useview="yes">  		<sql> -			SELECT categoryid, name, fc.content AS description FROM ( -				SELECT c.categoryid, f.fileid, f.d[2] AS name, -					RANK() OVER(PARTITION BY c.categoryid, f.d[2] ORDER BY ebuildversion_constructor(f.d[3]) DESC) AS r FROM ( -				SELECT fileid, -					REGEXP_MATCHES(filename, '^([^/]+)/(.+)-([0-9].*)$') as d -				FROM files f -				WHERE f.filetypeid = 1) f, -					categories c -				WHERE c.name = f.d[1]) f, filecache fc -				WHERE f.r = 1 -				AND fc.fileid = f.fileid -				AND fc.line = 8 +			SELECT categoryid, pkgname AS name, description +			FROM ( +					SELECT categoryid, pkgname, description, RANK() OVER(PARTITION BY categoryid, pkgname ORDER BY versioninst desc) r +					FROM ebuilddefs) d +			WHERE d.r = 1  		</sql>  		<columns>  			<categoryid key="true" /> @@ -32,19 +50,10 @@  	<project2:sqlmerge name="ebuilds" datasource="postgres" targettable="ebuilds" useview="yes">  		<sql> -			SELECT packageid, version, f.fileid AS ebuildid, ebuildversion_constructor(version) AS versioninst, fcs.content AS slot, -					fcl.content AS license, f.firstseen, f.moddate -			FROM ( SELECT f.fileid, f.firstseen, f.moddate, -				(REGEXP_MATCHES(filename, '^[^/]+'))[1] AS cat, -				(REGEXP_MATCHES(filename, '/(.+)-[0-9]'))[1] AS name, -				(REGEXP_MATCHES(filename, '/.+-([0-9].*)$'))[1] AS version -				FROM files f -				WHERE filetypeid = 1) f LEFT OUTER JOIN filecache fcs -					ON fcs.fileid = f.fileid AND fcs.line = 3 LEFT OUTER JOIN filecache fcl -					ON fcl.fileid = f.fileid AND fcl.line = 7, categories c, packages p -			WHERE f.cat = c.name -			AND c.categoryid = p.categoryid -			AND p.name = f.name +			SELECT p.packageid, e.version, e.fileid AS ebuildid, e.versioninst, e.slot, e.license, e.firstseen, e.moddate +			FROM ebuilddefs e, packages p +			WHERE e.pkgname = p.name +			AND e.categoryid = p.categoryid  		</sql>  		<columns>  			<ebuildid key="true" /> @@ -60,11 +69,8 @@  	<project2:sqlmerge name="archs" datasource="postgres" targettable="ebuild_archs" useview="yes">  		<sql> -			SELECT DISTINCT f.fileid AS ebuildid, REGEXP_SPLIT_TO_TABLE(fc.content, ' ') AS arch -			FROM filecache fc, files f -			WHERE fc.line = 9 -			AND fc.fileid = f.fileid -			AND filetypeid = 1 +			SELECT DISTINCT e.fileid AS ebuildid, REGEXP_SPLIT_TO_TABLE(e.keywords, ' ') AS arch +			FROM ebuilddefs e  		</sql>  		<columns>  			<ebuildid key="true" /> @@ -74,11 +80,8 @@  	<project2:sqlmerge name="uses" datasource="postgres" targettable="ebuild_uses" useview="yes">  		<sql> -			SELECT DISTINCT fc.fileid AS ebuildid, REGEXP_SPLIT_TO_TABLE(fc.content, ' ') AS use -			FROM filecache fc, files f -			WHERE fc.line = 11 -			AND fc.fileid = f.fileid -			AND filetypeid = 1 +			SELECT DISTINCT e.fileid AS ebuildid, REGEXP_SPLIT_TO_TABLE(e.iuse, ' ') AS use +			FROM ebuilddefs e  		</sql>  		<columns>  			<ebuildid key="true" /> @@ -88,14 +91,11 @@  	<project2:sqlmerge name="urls" datasource="postgres" targettable="package_urls" useview="yes">  		<sql> -			SELECT packageid, url FROM ( -				SELECT DISTINCT e.packageid, REGEXP_SPLIT_TO_TABLE(fc.content, ' ') AS url -				FROM filecache fc, ebuilds e, files f -				WHERE fc.line = 6 -				AND fc.fileid = e.ebuildid -				AND fc.fileid = f.fileid -				AND filetypeid = 1) AS u -			WHERE url LIKE '%://%' +			SELECT DISTINCT p.packageid, e.homepage AS url +			FROM ebuilddefs e, packages p +			WHERE e.pkgname = p.name +			AND e.categoryid = p.categoryid +			AND homepage LIKE '%://%'  		</sql>  		<columns>  			<packageid key="true" /> @@ -114,11 +114,8 @@  					SELECT fileid, REGEXP_MATCHES(dep,  						E'([^a-zA-Z0-9]*)([a-zA-Z0-9-]+)/([a-zA-Z0-9_+-]+?)(-([0-9][^:]*))?(:([0-9.]+))?(\\[([^]]+)\\])?') as field  					FROM ( -						SELECT fc.fileid, REGEXP_SPLIT_TO_TABLE(fc.content, ' ') AS dep -						FROM filecache fc, files f -						WHERE line = 1 -						AND fc.fileid = f.fileid -						AND filetypeid = 1 +						SELECT e.fileid, REGEXP_SPLIT_TO_TABLE(e.depend, ' ') AS dep +						FROM ebuilddefs e  					) src  				) AS src2  			) AS src3, categories c, packages p @@ -147,11 +144,8 @@  					SELECT fileid, REGEXP_MATCHES(dep,  						E'([^a-zA-Z0-9]*)([a-zA-Z0-9-]+)/([a-zA-Z0-9_+-]+?)(-([0-9][^:]*))?(:([0-9.]+))?(\\[([^]]+)\\])?') as field  					FROM ( -						SELECT fc.fileid, REGEXP_SPLIT_TO_TABLE(fc.content, ' ') AS dep -						FROM filecache fc, files f -						WHERE line = 2 -						AND fc.fileid = f.fileid -						AND filetypeid = 1 +						SELECT e.fileid, REGEXP_SPLIT_TO_TABLE(e.rdepend, ' ') AS dep +						FROM ebuilddefs e  					) src  				) AS src2  			) AS src3, categories c, packages p diff --git a/gentoobrowse/views/search.xml b/gentoobrowse/views/search.xml index db08d33..347642a 100644 --- a/gentoobrowse/views/search.xml +++ b/gentoobrowse/views/search.xml @@ -38,7 +38,7 @@  			AND e.packageid = p.packageid  			AND p.categoryid = c.categoryid  			<filter name="byUse"> -				AND eu.use = <param name="use" /> +				AND LTRIM(eu.use, '+') = <param name="use" />  			</filter>  			ORDER BY c.name, p.name  		</sql> diff --git a/gentoobrowse/views/use.xml b/gentoobrowse/views/use.xml index f0938bd..957cdbc 100644 --- a/gentoobrowse/views/use.xml +++ b/gentoobrowse/views/use.xml @@ -23,7 +23,7 @@  			SELECT use, description  			FROM use_global  			<filter name="use"> -				WHERE use = <param name="use" /> +				WHERE LTRIM(use, '+') = <param name="use" />  			</filter>  		</sql>  	</project2:sqlrows> @@ -32,7 +32,7 @@  			SELECT packageid, use, description  			FROM use_local  			<filter name="use"> -				WHERE use = <param name="use" /> +				WHERE LTRIM(use, '+') = <param name="use" />  				ORDER BY packageid  			</filter>  			<filter name="package"> | 
