postgresql-debversion
=====================

Debian version number type for PostgreSQL


About
-----

Debian version numbers, used to version Debian binary and source
packages, have a defined format, including specifications for how
versions should be compared in order to sort them.  This package
implements a `debversion` type to represent Debian version numbers
within the PostgreSQL database.  This also includes operators for
version comparison and index operator classes for creating indexes on
the debversion type.

Version comparison uses the algorithm used by the Debian package
manager, dpkg, using the implementation from libapt-pkg.  This means
that columns in tables using the debversion type may be sorted and
compared correctly using the same logic as `dpkg --compare-versions`.
It is also possible to create indexes on these columns.

postgresql-debversion implements the following features:

* The `debversion` type (internally derived from the `text` type)
* A full set of operators for version comparison (< <= = <> >= >)
  including commutator and negator optimisation hints
* Operator classes for btree and hash indexes
* The aggregate functions `min()` and `max()`

Installation
------------

The `libapt-pkg` and PostgreSQL server development headers and
libraries are required.  See `INSTALL` for full instructions.  In
general, just do:

    ./configure
    make
    make install

or build the Debian packages using

    dpkg-buildpackage -us -uc

If using PostgreSQL 9.0, which do not have support for `CREATE
EXTENSION`, please configure with `--disable-extension` to use the old
style config directory.  Note that this release drops support for
PostgreSQL 8.4 and earlier, which have broken headers (they don't
allow inclusion in C++ code).


Using
-----

Once built and installed, you can install the debversion type into
your database by running the following from the psql shell (PostgreSQL
9.1 and later):

    CREATE EXTENSION debversion;

If you're upgrading from an earlier version without extension support,
then please run

    CREATE EXTENSION debversion FROM unpackaged;

which will add all the existing types to the `debversion` extension.
If you wish to remove it,

    DROP EXTENSION debversion;

will remove `debversion` from the database;

For PostgreSQL 9.0 and earlier, sourcing the `debversion.sql` script
from within the psql shell will achieve the same effect:

    \i debversion.sql

The debversion type may subsequently be removed by sourcing the
`uninstall_debversion.sql` script:

    \i uninstall_debversion.sql

Copyright and License
---------------------

Copyright © 2004-2012 Roger Leigh <rleigh@debian.org>

`debversion` is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or (at
your option) any later version.

`debversion` is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see [http://www.gnu.org/licenses/].

