Le jeudi 7 mars 2013 11:10:33, Thomas Preud'homme a écrit : > After explaining my problem on IRC, formorer showed me an SQL expression > that creates plpgsql only if needed. You'll notice that plpgsql is created > with CREATE LANGUAGE because since PostgreSQL 9, plpgsql is created by > default. Hence, if it needs to be created the old CREATE LANGUAGE > construct should be used. > > I tried installing dspam with this patch with both PostgreSQL 8.4 from > Squeeze and PostgreSQL 9.1 from Wheezy with success. Purging works fine > too. > > If this diff suits you, should I rather upload to tpu with a new changelog > entry as in the attached debdiff or merge the entry in the previous one so > that only one upload appears to have been done? Forgive me for resending this, I thought maybe this issue had be forgotten. If this is merely a consequence of your work overload, then I send you my full apologize. Best regards, Thomas
diff -Nru dspam-3.10.1+dfsg/debian/changelog dspam-3.10.1+dfsg/debian/changelog
--- dspam-3.10.1+dfsg/debian/changelog 2013-03-04 17:39:52.000000000 +0100
+++ dspam-3.10.1+dfsg/debian/changelog 2013-03-07 11:03:34.000000000 +0100
@@ -1,6 +1,12 @@
+dspam (3.10.1+dfsg-11) testing-proposed-updates; urgency=low
+
+ * Create plpgsql only if it is not loaded yet.
+
+ -- Thomas Preud'homme <robotux@debian.org> Thu, 07 Mar 2013 10:25:49 +0100
+
dspam (3.10.1+dfsg-10) testing-proposed-updates; urgency=low
- * Explicitely require legacy mode for string escaping in PostgreSQL since it
+ * Explicitly require legacy mode for string escaping in PostgreSQL since it
now defaults to standard compliant mode (Closes: #694942).
* Fix error when creating database in PostgreSQL by creating plpgsql as
extension instead of language.
diff -Nru dspam-3.10.1+dfsg/debian/sqlfiles/install-dbadmin/pgsql dspam-3.10.1+dfsg/debian/sqlfiles/install-dbadmin/pgsql
--- dspam-3.10.1+dfsg/debian/sqlfiles/install-dbadmin/pgsql 2013-03-04 17:39:52.000000000 +0100
+++ dspam-3.10.1+dfsg/debian/sqlfiles/install-dbadmin/pgsql 2013-03-07 11:03:34.000000000 +0100
@@ -1 +1,19 @@
-CREATE EXTENSION IF NOT EXISTS plpgsql;
+CREATE OR REPLACE FUNCTION public.create_plpgsql_language ()
+ RETURNS TEXT
+ AS $$
+ CREATE LANGUAGE plpgsql;
+ SELECT 'language plpgsql created'::TEXT;
+ $$
+LANGUAGE 'sql';
+
+SELECT CASE WHEN
+ (SELECT true::BOOLEAN
+ FROM pg_language
+ WHERE lanname='plpgsql')
+ THEN
+ (SELECT 'language already installed'::TEXT)
+ ELSE
+ (SELECT public.create_plpgsql_language())
+ END;
+
+DROP FUNCTION public.create_plpgsql_language ();
Attachment:
signature.asc
Description: This is a digitally signed message part.