Skip to content
This repository

Embed Parrot+Rakudo into PostgreSQL

tree: b4f9941304

Fetching latest commit…

Cannot retrieve the latest commit at this time

PL/Parrot 0.03

PL/Parrot is a PostgreSQL procedural language for the Parrot virtual machine.


For the impatient, to install PL/Parrot into a PostgreSQL database, just do this:

    make install
    make installcheck

If you get an error such as:

Makefile:13: /usr/lib/postgresql/8.4/lib/pgxs/src/makefiles/ No such file or directory
make: *** No rule to make target `/usr/lib/postgresql/8.4/lib/pgxs/src/makefiles/'.  Stop.

then you probably installed postgres from a debian package. You need to install the
postgresql-server-dev-X package, where X is your version of PostgreSQL. For example:

    sudo apt-get install postgresql-server-dev-8.4

To run the tests with pg_prove you should create the plpgsql language in your database.
The default database name is your current username, so this should work:

    createlang plpgsql $USER
    make test

If you encounter an error such as:

    "Makefile", line 8: Need an operator

You need to use GNU make, which may well be installed on your system as

    gmake install
    gmake installcheck

If you encounter an error such as:

    make: pg_config: Command not found

Be sure that you have `pg_config` installed and in your path. If you used a
package management system such as RPM to install PostgreSQL, be sure that the
`-devel` package is also installed. If necessary, add the path to `pg_config`
to your `$PATH` environment variable:

    env PATH=$PATH:/path/to/pgsql/bin \
    make && make install && make installcheck

And finally, if all that fails, copy the entire distribution directory to the
`contrib/` subdirectory of the PostgreSQL source tree and try it there without
the `$USE_PGXS` variable:

    make NO_PGXS=1
    make install NO_PGXS=1
    make installcheck NO_PGXS=1

If you encounter an error such as:

    ERROR:  must be owner of database regression

You need to run the test suite using a super user, such as the default
"postgres" super user:

    make installcheck PGUSER=postgres

Testing PL/Parrot with PL/Parrot

In addition to the PostgreSQL-standard `installcheck` target, the `test`
target uses the `pg_prove` Perl program to do its testing, which requires
TAP::Harness, included in
[Test::Harness]( "Test::Harness on
CPAN") 3.x. You'll need to make sure that you use a database with PL/pgSQL
loaded, or else the tests won't work. `pg_prove` supports a number of
environment variables that you might need to use, including all the usual
PostgreSQL client environment variables:


You can use it to run the test suite as a database super user like so:

    make test PGUSER=postgres

Of course, if you're running the tests from the `contrib/` directory, you
should add the `NO_PGXS` variable.

Adding PL/Parrot to a Database

Once PL/Parrot has been built and tested, you can install it into a
PL/pgSQL-enabled database:

    psql -d dbname -f plparrot.sql

If you want PL/Parrot to be available to all new databases, install it into the
"template1" database:

    psql -d template1 -f plparrot.sql

The `plparrot.sql script will also be installed in the `contrib` directory
under the directory output by `pg_config --sharedir`. So you can always do

    psql -d template1 -f `pg_config --sharedir`/contrib/plparrot.sql
Something went wrong with that request. Please try again.