Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bFQU5-0004E4-1k for pgsql-docs@arkaria.postgresql.org; Tue, 21 Jun 2016 18:33:13 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1bFQU4-0001cp-Ao for pgsql-docs@arkaria.postgresql.org; Tue, 21 Jun 2016 18:33:12 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1bFQU3-0001cX-O8 for pgsql-docs@postgresql.org; Tue, 21 Jun 2016 18:33:11 +0000 Received: from smtprelay0129.b.hostedemail.com ([64.98.42.129] helo=smtprelay.b.hostedemail.com) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1bFQU0-0008OQ-Az for pgsql-docs@postgresql.org; Tue, 21 Jun 2016 18:33:11 +0000 Received: from filter.hostedemail.com (10.5.19.248.rfc1918.com [10.5.19.248]) by smtprelay04.b.hostedemail.com (Postfix) with ESMTP id 49DB77B85B; Tue, 21 Jun 2016 18:33:06 +0000 (UTC) X-Session-Marker: 616C76686572726540616C76682E6E6F2D69702E6F7267 X-Spam-Summary: 50,0,0,,d41d8cd98f00b204,alvherre@alvh.no-ip.org,:::::::,RULES_HIT:41:355:379:599:800:960:967:973:988:989:1260:1263:1277:1311:1312:1313:1314:1345:1359:1431:1437:1515:1516:1518:1519:1534:1541:1593:1594:1595:1596:1711:1730:1747:1777:1792:2197:2199:2393:2525:2560:2563:2682:2685:2828:2859:2933:2937:2939:2942:2945:2947:2951:2954:3022:3138:3139:3140:3141:3142:3353:3865:3866:3867:3868:3870:3871:3872:3874:3934:3936:3938:3941:3944:3947:3950:3953:3956:3959:4605:4659:5007:6119:6261:7809:7903:8907:9025:9121:10004:10400:10848:11232:11256:11257:11658:11914:12043:12296:12517:12519:13069:13311:13357:13439:13894:13895:14721:14764:21080:21221:21433:30022:30041:30054,0,RBL:none,CacheIP:none,Bayesian:0.5,0.5,0.5,Netcheck:none,DomainCache:0,MSF:not bulk,SPF:fn,MSBL:0,DNSBL:none,Custom_rules:0:0:0,LFtime:2,LUA_SUMMARY:none X-HE-Tag: bomb97_8eb3cc3510832 X-Filterd-Recvd-Size: 2307 Received: from alvin.alvh.no-ip.org (unknown [216.155.90.98]) (Authenticated sender: alvherre@alvh.no-ip.org) by omf08.b.hostedemail.com (Postfix) with ESMTPA; Tue, 21 Jun 2016 18:33:00 +0000 (UTC) Received: by alvin.alvh.no-ip.org (Postfix, from userid 1000) id 67626526; Tue, 21 Jun 2016 14:32:58 -0400 (CLT) Date: Tue, 21 Jun 2016 14:32:58 -0400 From: Alvaro Herrera To: Tom Lane Cc: Michael Paquier , mschwan@opentext.com, pgsql-docs@postgresql.org Subject: Re: DROP EXTENSION Message-ID: <20160621183258.GA101603@alvherre.pgsql> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <12382.1466533609@sss.pgh.pa.us> User-Agent: Mutt/1.5.23 (2014-03-12) X-Pg-Spam-Score: 1.1 (+) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-docs Precedence: bulk Sender: pgsql-docs-owner@postgresql.org Tom Lane wrote: > Alvaro Herrera writes: > > Right; mschwan wrote private email to indicate that the function in > > question is: > > > CREATE OR REPLACE FUNCTION public.f_unaccent(text) > > RETURNS text AS > > $$ > > select public.unaccent('public.unaccent', $1) > > $$ > > LANGUAGE sql IMMUTABLE; > > > so when the unaccent extension is dropped, this function remains (of > > course) but it stops working. > > Ah, I kind of suspected that: the issue is that we don't analyze function > bodies to detect dependencies therein. In a perfect world we would, but > there are daunting obstacles in the way. Right :-( So the ALTER FUNCTION .. DEPENDS ON EXTENSION thingy would kind-of help, but instead of preventing the drop of the extension (which is probably what mschwan would like to happen), it would silently drop the public.f_unaccent() function when the extension was dropped. I think (untested) that adding a pg_depend row with deptype='n' instead of 'e' would have the desired property, i.e. DROP EXTENSION says "cannot drop extension because function depends on it", and DROP EXTENSION CASCADE drops both extension and function. Maybe we could add ALTER FUNCTION .. DEPENDS ON EXTENSION unaccent WITH (autodrop=false) or something similar. -- Álvaro Herrera http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services -- Sent via pgsql-docs mailing list (pgsql-docs@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-docs