[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