[Collab-qa-commits] r1677 - udd/sql

Andreas Tille tille at alioth.debian.org
Fri Feb 5 10:31:38 UTC 2010


Author: tille
Date: 2010-02-05 10:31:38 +0000 (Fri, 05 Feb 2010)
New Revision: 1677

Added:
   udd/sql/array_sort.sql
   udd/sql/versions_archs_components.sql
Log:
Table with release and release dates, function to order an array.


Added: udd/sql/array_sort.sql
===================================================================
--- udd/sql/array_sort.sql	                        (rev 0)
+++ udd/sql/array_sort.sql	2010-02-05 10:31:38 UTC (rev 1677)
@@ -0,0 +1,16 @@
+/*****************************************************************************
+ * Sorting an array.  See                                                    * 
+ * http://www.postgres.cz/index.php/PostgreSQL_SQL_Tricks#General_array_sort *
+ *****************************************************************************/
+CREATE OR REPLACE FUNCTION array_sort (ANYARRAY)
+RETURNS ANYARRAY LANGUAGE SQL
+AS $$
+SELECT ARRAY(
+    SELECT $1[s.i] AS "foo"
+    FROM
+        generate_series(array_lower($1,1), array_upper($1,1)) AS s(i)
+    ORDER BY foo
+);
+$$;
+
+

Added: udd/sql/versions_archs_components.sql
===================================================================
--- udd/sql/versions_archs_components.sql	                        (rev 0)
+++ udd/sql/versions_archs_components.sql	2010-02-05 10:31:38 UTC (rev 1677)
@@ -0,0 +1,28 @@
+/****************************************************************************************
+ * This table enables sorting of releases according to their release date.  To define   *
+ * a reasonable order also for releases which are not or nevel will be released an      *
+ * additional column sort is defined.                                                   *
+ * The relevant discussion can be found here:                                           *
+ *   http://lists.debian.org/debian-qa/2010/02/msg00001.html                            *
+ ****************************************************************************************/
+
+CREATE TABLE releases (
+       release     text,  /* keep name column as in other tables */
+       releasedate date,
+       sort        int,
+       PRIMARY KEY (release)
+);
+
+INSERT INTO releases VALUES ( 'etch',                     '2007-04-08', 400 );
+INSERT INTO releases VALUES ( 'etch-security',            '2007-04-08', 401 ); /* date or NULL ?? */
+INSERT INTO releases VALUES ( 'etch-proposed-updates',    '2007-04-08', 402 ); /* date or NULL ?? */
+INSERT INTO releases VALUES ( 'lenny',                    '2009-02-14', 500 );
+INSERT INTO releases VALUES ( 'lenny-security',           '2009-02-14', 501 ); /* date or NULL ?? */
+INSERT INTO releases VALUES ( 'lenny-proposed-updates',   '2009-02-14', 502 ); /* date or NULL ?? */
+INSERT INTO releases VALUES ( 'squeeze',                  NULL,         600 );
+INSERT INTO releases VALUES ( 'squeeze-security',         NULL,         601 );
+INSERT INTO releases VALUES ( 'squeeze-proposed-updates', NULL,         602 );
+INSERT INTO releases VALUES ( 'sid',                      NULL,      100000 );
+INSERT INTO releases VALUES ( 'experimental',             NULL,      100001 );
+
+




More information about the Collab-qa-commits mailing list