I have been playing with postgresql at home, working through a book on general database installation and use. Mostly is is an oracle book, but much of the book is easily translated to Postgres. This is on a fedora core 2 linux box, kept fully yum updated.
Here are the packages installed via yum:
$ rpm -qa | grep postgres postgresql-libs-7.4.2-1 postgresql-server-7.4.2-1 postgresql-test-7.4.2-1 postgresql-7.4.2-1 postgresql-devel-7.4.2-1
Then I enable plpgsql:
$ droplang plpgsql template1 $ createlang plpgsql template1 $ createlang -l template1 Procedural Languages Name | Trusted? ---------+---------- plpgsql | yes
As user postgres I try and run the tests:
$ pwd /usr/lib/pgsql/test/regress $ time ./pg_regress.sh --schedule=parallel_schedule ... ==================================================== 6 of 93 tests failed, 1 of these failures ignored. ==================================================== ...
$ grep -i FAIL ./regression.out test create_function_1 ... FAILED triggers ... FAILED plpgsql ... failed (ignored) copy2 ... FAILED rangefuncs ... FAILED test stats ... FAILED
Here are some results from the diffs:
$ grep ERROR regression.diffs ERROR: could not access file "nosuchfile": No such file or directory ! ERROR: Can't find function nosuchsymbol in file /usr/lib/pgsql/test/regress/regress.so ERROR: there is no built-in function named "nosuch" ERROR: could not access file "nosuchfile": No such file or directory ! ERROR: could not find function "nosuchsymbol" in file "/usr/lib/pgsql/test/regress/regress.so" ERROR: there is no built-in function named "nosuch" + ERROR: language "plpgsql" does not exist + ERROR: function trigger_func() does not exist + ERROR: function trigger_func() does not exist + ERROR: function trigger_func() does not exist + ERROR: function trigger_func() does not exist + ERROR: language "plpgsql" does not exist ...
$ grep plpgsql regression.diffs | more + ERROR: language "plpgsql" does not exist *** ./expected/plpgsql.out Wed Sep 24 23:58:06 2003 --- ./results/plpgsql.out Mon Sep 27 21:11:32 2004 ' language 'plpgsql'; + ERROR: language "plpgsql" does not exist ...
$ grep HINT regression.diffs + HINT: You need to use "createlang" to load the language into the database. ...
So I guess I am confused. I thought I added the required language (plpgsql) properly. Sorry if this is something obvious, I have googled several times and have not found much help for this.
Perhaps I should be building from source or using the RedHat "rhdb" iso?
Thanks for any hints, John
John McBride wrote:
As user postgres I try and run the tests:
$ pwd /usr/lib/pgsql/test/regress $ time ./pg_regress.sh --schedule=parallel_schedule ... ==================================================== 6 of 93 tests failed, 1 of these failures ignored. ====================================================
This problem is caused by the postgresql-test rpm. The tests depend on a Makefile being present at a higher level, from the source build.
$ pwd /usr/lib/pgsql/test/regress $ gmake check GNUmakefile:16: ../../../src/Makefile.global: No such file or directory gmake: *** No rule to make target `../../../src/Makefile.global'. Stop.
$ chmod +x ./pg_regress.sh
Change/add the following variable set in pg_regress.sh:
bindir=/usr/bin libdir=/usr/lib/pgsql pkglibdir=/usr/lib/pgsql datadir=/var/lib/pgsql VERSION=7.4.2 host_tuple= GMAKE=gmake enable_shared=yes GCC=yes
$ time ./pg_regress.sh --schedule=parallel_schedule ... test create_function_1 ... FAILED ... ======================= 1 of 93 tests failed. =======================
$ cat ./regression.diffs *** ./expected/create_function_1.out Wed Mar 10 13:36:51 2004 --- ./results/create_function_1.out Sat Oct 2 15:20:50 2004 *************** *** 70,76 **** ERROR: could not access file "nosuchfile": No such file or directory CREATE FUNCTION test1 (int) RETURNS int LANGUAGE c AS '/usr/lib/pgsql/test/regress/regress.so', 'nosuchsymbol'; ! ERROR: Can't find function nosuchsymbol in file /usr/lib/pgsql/test/regress/regress.so
Not sure what this is. The postgresql-test rpm needs some massaging I think.
--- John