Hi all,

I'd like to clean up the database schema of the registry. We have a couple
of fields in there that are currently unused, as well as a few possible
indices that could improve performance and at least one index that is
actively harmful.

In detail:

I'd like to drop the `url' column from the ports table. All ports I have
installed have this set to NULL and I couldn't find a use-case where it
was being used. I tried installing a port from a URL, but that doesn't
set the field either.
Even worse, the `url' column is part of a unique index `UNIQUE(url,
epoch, version, revision, variants)', which is bad, because if `url' is
always NULL, that means you can never install two ports with the same
tuple of (epoch, version, revision, variants). I'm surprised we haven't
hit this yet.
Consequently, this implies removal of the port_url index.

>From the files table, I'd remove `mtime', `md5sum' and `editable', which
are all unused and set to dummy values at the moment. I know those were
intended to be used in configuration management, but this hasn't
happened so far and we can always re-add the fields later, if we ever
finish implementing this.

In the dependencies table, we should add a `dep_port` index on the `id'
column to improve join performance.

We currently do not have any indices for the portgroups table. We should
add an index on the `id' column for joins and one over (id, name,
version, size, sha256) to speed up opening portgroups and executing
Portfiles from registry.

Of course, these changes imply the corresponding changes in registry2.0
and cregistry.

If nobody objects to the changes, I have a patch ready to commit.

-- 
Clemens Lang
_______________________________________________
macports-dev mailing list
[email protected]
https://lists.macosforge.org/mailman/listinfo/macports-dev

Reply via email to