Subject: [Pljava-dev] problems running test suite

From: pierce at hogranch.com (John R Pierce)
Date: Tue, 20 Apr 2010 22:16:25 -0700

I've built pl/java for Solaris 10 Sparc 64bit, with Sun JDK 1.5.0 64bit 
and Postgres 8.4.3 64bit...  I used `HEAD` from the pljava CVS about 5 
days ago (I see Jurka has checked in some new stuff since then, if 
there's a reason to go ahead and rebuild I will...).  To get this build 
to work, I had to track down the packager of the Solaris binaries, and 
acquire pg_config.h and Makefile.global from him as he mistakenly 
packaged the wrong 32bit files with the 64 bit binaries.

When I run the test.jar suite, I'm getting this error.  I'm wondering if 
the deploy.jar neglected to create javaU or something?

If I add -exclude trustedsecurity, then it passes all the other tests.

$ java org.postgresql.pljava.test.Tester -password XXXXXXXX
*** testTimestamp()
Timestamp = 2010-04-20 21:41:01.046, Timestamptz = 2010-04-20 21:41:01.048
*** testInt()
54 + 2 = 56
nullOnEven(1) = 1
nullOnEven(2) = null
*** testInsertUsernameTrigger()
Name = "nothing", username = "thomas"
Name = "null", username = "piercej"
Name = "empty string", username = ""
Name = "space", username = " "
Name = "tab", username = "      "
Name = "name", username = "name"
*** testModdatetimeTrigger()
Id = "1", idesc = "first", moddate = "2010-04-20 21:41:01.123038"
Id = "2", idesc = "second", moddate = "2010-04-20 21:41:01.126033"
Id = "3", idesc = "third", moddate = "2010-04-20 21:41:01.128966"
Id = "4", idesc = "first", moddate = "2010-04-20 21:41:01.274"
Id = "5", idesc = "second", moddate = "2010-04-20 21:41:01.28"
Id = "6", idesc = "third", moddate = "2010-04-20 21:41:01.286"
*** testSPIActions()
Id = "3", name = "Rebecka Shawn", salary = "30000"
Id = "4", name = "Priscilla Johnson", salary = "25000"
*** testTupleReturn()
Base = "1", incbase = "6", ctime = "2010-04-20 21:41:01.37"
Base = "1", incbase = "0", ctime = "2010-04-20 21:41:01.374"
*** testSetReturn()
Base = "1", incbase = "1", ctime = "2010-04-20 21:41:01.376"
Base = "1", incbase = "6", ctime = "2010-04-20 21:41:01.376"
Base = "1", incbase = "11", ctime = "2010-04-20 21:41:01.376"
Base = "1", incbase = "16", ctime = "2010-04-20 21:41:01.376"
Base = "1", incbase = "21", ctime = "2010-04-20 21:41:01.376"
Base = "1", incbase = "26", ctime = "2010-04-20 21:41:01.376"
Base = "1", incbase = "31", ctime = "2010-04-20 21:41:01.376"
Base = "1", incbase = "36", ctime = "2010-04-20 21:41:01.376"
Base = "1", incbase = "41", ctime = "2010-04-20 21:41:01.376"
Base = "1", incbase = "46", ctime = "2010-04-20 21:41:01.376"
Base = "1", incbase = "51", ctime = "2010-04-20 21:41:01.376"
Base = "1", incbase = "56", ctime = "2010-04-20 21:41:01.376"
*** testCallInCall()
Max = "10"
*** testCurrentDir()
Server directory = /var/postgres/8.4-community/data_64
*** testUsingProperties()
Name = "first.example.property", value = "1"
Name = "third.example.property", value = ""Hmm, take a guess. Could it 
be three?""
Name = "second.example.property", value = "two"
*** testUsingScalarProperties()
first.example.property = 1
third.example.property = "Hmm, take a guess. Could it be three?"
second.example.property = two
*** testUsingResultSetProperties()
Name = "first.example.property", value = "1"
Name = "third.example.property", value = ""Hmm, take a guess. Could it 
be three?""
Name = "second.example.property", value = "two"
*** testSavepointSanity()
Savepoint sanity = 1
*** testTransactionRecovery()
Transaction recovery = 1
*** testTrustedSecurity()
OK, creation of temp file was *unsuccessful* as it should be
*** testUntrustedSecurity()
org.postgresql.util.PSQLException: ERROR: java.lang.NoClassDefFoundError
        at 
org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1512)
        at 
org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1297)
        at 
org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:188)
        at 
org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:430)
        at 
org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:332)
        at 
org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:231)
        at 
org.postgresql.pljava.test.Tester.tryCreateTempFile(Tester.java:694)
        at 
org.postgresql.pljava.test.Tester.testTrustedSecurity(Tester.java:662)
        at org.postgresql.pljava.test.Tester.main(Tester.java:253)

---

From: pierce at hogranch.com (John R Pierce)
Date: Wed, 21 Apr 2010 18:16:57 -0700

John R Pierce wrote:
> I've built pl/java for Solaris 10 Sparc 64bit, with Sun JDK 1.5.0 
> 64bit and Postgres 8.4.3 64bit...  I used `HEAD` from the pljava CVS 
> about 5 days ago (I see Jurka has checked in some new stuff since 
> then, if there's a reason to go ahead and rebuild I will...).  To get 
> this build to work, I had to track down the packager of the Solaris 
> binaries, and acquire pg_config.h and Makefile.global from him as he 
> mistakenly packaged the wrong 32bit files with the 64 bit binaries. ....

and, even stranger.      So I bundle up my files with instructions and 
pass them off to our production folks to deploy on their staging/test 
server.   After some minor issues with sorting out the CLASSPATH, 
LD_LIBRARY_PATH and PATH and JAVA_HOME, they get it installed just fine 
by running the Deployer...

but, when we try and load the examples.jar, we get this...

$ psql -c "SELECT 
sqlj.install_jar('file:///app/postgres/8.4/pljava/examples.jar', 
'samples',true)" dbname pgadmin
Password for user pgadmin:
ERROR:  java.lang.SecurityException: read on 
/app/postgres/8.4/pljava/examples.jar

pgadmin is the superuser and the owner of the 'dbname' database..    
also the owner of the examples.jar file.  in fact, also the owner of the 
whole postgres cluster.

I dunno how to get any more info on why this is happening.... but...  I 
compiled and tested on postgres 8.4.3 with Sun JDK 1.5.0_24, and this 
staging server has postgres 8.4.1 and Sun JDK 1.5.0_18...  could that 
make a difference like this?   I've asked them to update their 
postgresql.   and they can probably update their Java too, if it will 
matter.

Or should I build from HEAD again, since I grabbed CVS HEAD on the 15th, 
and as I note above, I saw there were a couple minor updates in the 
meantime ?.

---

From: pierce at hogranch.com (John R Pierce)
Date: Thu, 22 Apr 2010 15:59:54 -0700

John R Pierce wrote:
> (Solaris 10, Sparc, 64 bit Postgres 8.4.3, 64 bit Sun JDK 1.5.0...  
> had built pljava on 8.4.3+1.5.0_24 and passed tests, but on another 
> system with 8.4.1+1.5.0_18 it failed to run the tests with...)
>
> $ psql -c "SELECT 

another update...

I went ahead and pulled down the updates from HEAD last night, also used 
jdk 1.5.0_21 instead of _24, meanwhile the production site upgraded 
their JDK to 1.5.0_22 and Postgres to 8.4.3, and it got past the step 
that failed, but the person I'm working with in Asia was too tired 
(4:30AM her time) to complete the testing, so we don't know if its 
actually working yet or not.  I'll probably find out later tonite..