Received: from maia.hub.org (maia-5.hub.org [200.46.204.29]) by mail.postgresql.org (Postfix) with ESMTP id 8605F1337BA5; Mon, 14 Feb 2011 12:18:07 -0400 (AST) Received: from mail.postgresql.org ([200.46.204.86]) by maia.hub.org (mx1.hub.org [200.46.204.29]) (amavisd-maia, port 10024) with ESMTP id 82305-05; Mon, 14 Feb 2011 16:18:00 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from acidenitrix.villemain.org (acidenitrix.villemain.org [91.121.90.165]) by mail.postgresql.org (Postfix) with ESMTP id 77C631337B67; Mon, 14 Feb 2011 12:17:58 -0400 (AST) Received: from 89-158-241-48.rev.dartybox.com ([89.158.241.48] helo=DimIMac.local) by acidenitrix.villemain.org with esmtpsa (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.69) (envelope-from ) id 1Pp17b-0007KE-LM; Mon, 14 Feb 2011 17:17:55 +0100 Received: by DimIMac.local (Postfix, from userid 501) id 99B2A19A3EFB; Mon, 14 Feb 2011 17:17:48 +0100 (CET) From: Dimitri Fontaine To: Tom Lane Cc: Dimitri Fontaine , pgsql-hackers@postgresql.org, pgsql-docs@postgresql.org Subject: Re: [HACKERS] "Extension" versus "module" Organization: 2ndQuadrant References: <25160.1297664305@sss.pgh.pa.us> <87r5ba4z1x.fsf@2ndQuadrant.fr> <20217.1297697118@sss.pgh.pa.us> User-Mail-Address: dimitri@2ndQuadrant.fr Date: Mon, 14 Feb 2011 17:17:48 +0100 In-Reply-To: <20217.1297697118@sss.pgh.pa.us> (Tom Lane's message of "Mon, 14 Feb 2011 10:25:18 -0500") Message-ID: User-Agent: Gnus/5.110011 (No Gnus v0.11) Emacs/24.0.50 (darwin) MIME-Version: 1.0 Content-Type: text/plain X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=-1.9 tagged_above=-5 required=5 tests=BAYES_00=-1.9 X-Spam-Level: X-Archive-Number: 201102/53 X-Sequence-Number: 6401 Tom Lane writes: > Hmm ... but what of contrib "modules" that don't build shared libraries > at all --- pgbench and pg_upgrade for example? > > I think "shared library" is a perfectly fine term for that kind of > object, and we don't need an alias for it anyway. In my view, if there's no script, that is no SQL object to install in a database, then it's not an extension. I would think that we keep the directory named contrib for them. Then, an extension can be implemented partly with a module, coded in C, installed as a shared library. Another concern has to do with PLs. We said that with the dependency mechanism it would be good to have PLs be EXTENSIONs. But those are core provided extensions, one of them installed by default. If we make PLs extensions, we might also want to have CREATE LANGUAGE either ERROR out or silently do the CREATE EXTENSION instead, meaning that CREATE LANGUAGE behavior would depend on creating_extension. Sounds like a crock but ensures compatibility. Regards, -- Dimitri Fontaine http://2ndQuadrant.fr PostgreSQL : Expertise, Formation et Support