Re: Finer Extension dependencies

Dimitri Fontaine <dimitri@2ndquadrant.fr>

From: Dimitri Fontaine <dimitri@2ndQuadrant.fr>
To: Hitoshi Harada <umi.tanuki@gmail.com>
Cc: Dimitri Fontaine <dimitri@2ndquadrant.fr>, pgsql-hackers@postgresql.org
Date: 2012-03-22T17:38:29Z
Lists: pgsql-hackers

Attachments

Hi,

Again, thanks very much for the review.  Here's an updated patch (just
merged against master) fixing most of your comments here.  I couldn't
reproduce previous problems with the attached:

 - DROP EXTENSION was broken, asking to cascade to self
 - CREATE EXTENSION was bypassing "requires"

I could reproduce the second problem then fix it with the following one
liner. I missed it because my test case still fails for not finding the
cube type rather than the cube extension without this fix:

-	if (!OidIsValid(featoid) && !missing_ok)
+	if (!OidIsValid(*featoid) && !missing_ok)

Thank you all for your patience while I was busy elsewhere, it's
definitely not a show stopper in my book :)

dim=# create extension earthdistance;
ERROR:  feature "cube" is not currently provided
HINT:  Please install an extension that provides it first

dim=# create extension cube;
CREATE EXTENSION

dim=# create extension earthdistance;
CREATE EXTENSION

dim=# drop extension cube cascade;
NOTICE:  drop cascades to extension earthdistance
DROP EXTENSION

Hitoshi Harada <umi.tanuki@gmail.com> writes:
> - There are some mixture of pg_extension_feature and pg_extension_feature"s"

Fixed.

> - The doc says pg_extension_feature"s" has four columns but it's not true.

Well the SGML table describing the catalog has 4 cols :)

> - Line 608 is bad. In the loop, provides_itself is repeatedly changed
> to true and false and I guess that's not what you meant.

Fixed.

> - Line 854+, you can fold two blocks into one.  The two blocks are
> similar and by giving provides list with list_make1 when
> control->provides  == NIL you can do it in one block.

Fixed.

> - s/trak/track/

Fixed, I guess the English would need rephrasing.

> - Line 960, you missed updating classId for dependency.

I don't think so.

Regards,
--
Dimitri Fontaine
http://2ndQuadrant.fr     PostgreSQL : Expertise, Formation et Support