[Collab-qa-commits] r1476 - udd/sql
Andreas Tille
tille at alioth.debian.org
Wed Jun 10 19:09:26 UTC 2009
Author: tille
Date: 2009-06-10 19:09:25 +0000 (Wed, 10 Jun 2009)
New Revision: 1476
Added:
udd/sql/ddtp_language_maxversion.sql
Log:
return language, short/long description and maximum version of a ddtp translation to get the most recent translation of a package description
Added: udd/sql/ddtp_language_maxversion.sql
===================================================================
--- udd/sql/ddtp_language_maxversion.sql (rev 0)
+++ udd/sql/ddtp_language_maxversion.sql 2009-06-10 19:09:25 UTC (rev 1476)
@@ -0,0 +1,48 @@
+-- return language, short/long description and maximum version of a ddtp translation
+
+BEGIN ;
+
+DROP TYPE IF EXISTS DdtpRecordType CASCADE;
+
+CREATE TYPE DdtpRecordType AS (
+ package text,
+ distribution text,
+ release text,
+ component text,
+ version text,
+ language text,
+ description text,
+ long_description text,
+ md5sum text
+);
+
+CREATE OR REPLACE FUNCTION DdtpLanguageMaxVersion(text)
+ RETURNS SETOF DdtpRecordType AS \$\$
+ DECLARE
+ pkg ALIAS FOR \$1 ;
+ lang RECORD ;
+ max RECORD ;
+ ret DdtpRecordType%rowtype ;
+ query text ;
+ query2 text ;
+ query3 text ;
+
+ BEGIN
+
+ query = 'SELECT language FROM ddtp WHERE package = ''' || pkg || ''' GROUP BY language ORDER BY language;' ;
+
+ FOR lang IN EXECUTE query LOOP
+ query2 = 'SELECT MAX(version) AS version FROM ddtp WHERE package = ''' || pkg || ''' AND language = ''' || lang.language || '''' ;
+ FOR max IN EXECUTE query2 LOOP
+ query3 = 'SELECT * FROM ddtp WHERE package = ''' || pkg || ''' AND language = ''' || lang.language || ''' AND version = ''' || max.version ||
+ ''' LIMIT 1 '; -- make sure we really get only one result per language, even if there should not be more anyway
+ FOR ret in EXECUTE query3 LOOP
+ RETURN NEXT ret;
+ END LOOP ;
+ END LOOP ;
+ END LOOP ;
+
+ RETURN;
+END; \$\$ LANGUAGE 'plpgsql';
+
+COMMIT ;
More information about the Collab-qa-commits
mailing list