Hi Nicholas,
I think that your issue is due to java policy ( either you need to change your
Java policy file, or if you supply any do your derby context, update this one ).
Please check https://docs.oracle.com/cd/E19225-01/820-5594/ahtbo/index.html,
and
this
http://docs.oracle.com/javase/7/docs/technotes/guides/security/permissions.html
for more information.
In the end , I believe that you will need to append accessClassInPackage rights
to the derby aggregator, org.apache.derby.agg.Aggregator;.
E.g. :
grant{
permission java.lang.RuntimePermission
"accessClassInPackage.org.apache.derby.agg";
}
Regards,
George
Sent from Windows Mail
From: nicholas walton
Sent: Friday, February 17, 2017 7:42 PM
To: derby-user@db.apache.org
Hi,
I need to extend Java’s aggregate functions to include Median, using the code
below
import java.util.ArrayList;
import java.util.Collections;
import org.apache.derby.agg.Aggregator;
public class median>
implements Aggregator
{
private ArrayList _values;
public median() {}
public void init() { _values = new ArrayList(); }
public void accumulate( V value ) { _values.add( value ); }
public void merge( median other )
{
_values.addAll( other._values );
}
public V terminate()
{
Collections.sort( _values );
int count = _values.size();
if ( count == 0 ) { return null; }
else { return _values.get( count/2 ); }
}
}
To install I used
CALL
SQLJ.INSTALL_JAR('/Users/nwalton/Documents/Databases/derbyStats/dist/derbyStats.jar',
'NWALTON.median',0);
CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY
('derby.database.classpath','NWALTON.median’);
CREATE DERBY AGGREGATE "NWALTON"."MEDIAN" FOR DOUBLE RETURNS DOUBLE EXTERNAL
NAME 'aggregates.median’ ;
At first this works fine in a trigger or in plain SQL but after a while I get
the following error
Error code 3, SQL state 38000: The exception
'java.security.AccessControlException: access denied
("java.lang.RuntimePermission" "accessClassInPackage.sun.reflect")' was thrown
while evaluating an expression.
Error code 9, SQL state XJ001: Java exception: 'access denied
("java.lang.RuntimePermission" "accessClassInPackage.sun.reflect"):
java.security.AccessControlException'.
Line 1, column 1
I’ve Googled to no avail for an answer! Can anyone suggest a solution. I’m
running OS X Sierra Apache Derby Network Server - 10.6.2.1 - (999685) under
Java version 1.8.0_31-b13.
Thanks in advance
Nick