Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Embed Parrot+Rakudo into PostgreSQL
Elixir C++ C Parrot Perl CSS

This branch is 62 commits behind master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
bin
expected
html
libsrc/handler
t/sql
.gitignore
CREDITS
HACKING.git
HACKING.parrot
HACKING.postgres
HISTORY
IDEAS
LICENSE
Makefile
PLATFORMS
README
ROADMAP
TODO
config.h
load_pir.test.sql
pgtap.sql
plparrot.c
plparrot.sql.in
plparrot_secure.pir
plperl6.pir
sql

README

PL/Parrot 0.01
==============

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

Installation
============

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

    make
    make install
    make installcheck

If you get an error such as:

Makefile:13: /usr/lib/postgresql/8.4/lib/pgxs/src/makefiles/pgxs.mk: No such file or directory
make: *** No rule to make target `/usr/lib/postgresql/8.4/lib/pgxs/src/makefiles/pgxs.mk'.  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':

    gmake
    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](http://search.cpan.org/dist/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:

* `$PGDATABASE`
* `$PGHOST`
* `$PGPORT`
* `$PGUSER`

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
this:

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