From: thomas at tada.se (Thomas Hallgren) Date: Tue, 15 Aug 2006 00:44:49 +0200 Subject: [Pljava-dev] Custom java objects In-Reply-To: <12743.060808@yandex.ru> References: <12743.060808@yandex.ru> Message-ID: <44E0FCE1.6020609@tada.se> Hi Maxim, You should be able to do this by just installing a custom type mapping for type 'a'. See: http://wiki.tada.se/wiki/display/pljava/Mapping+an+SQL+type+to+a+Java+class Regards, Thomas Hallgren Maxim wrote: > Hello, > > I try to write aggregate function in Java for PostgeeSQL 8.1. > > I just want to know, are there any ways to pass custom java objects > thorough iterations of row handler? > > For example, I have functions in PostgreSQL (a is a table): > > CREATE FUNCTION handler1(a, a) > returns a > as 'functions.handler1' > immutable language java; > > CREATE FUNCTION handler2(a) > returns a > as 'functions.handler2' > immutable language java; > > CREATE AGGREGATE aa ( BASETYPE = a, SFUNC = handler1, STYPE = a, FINALFUNC = handler2); > > > And two functions in Java: > > public static boolean handler1(ResultSet a, ResultSet record, ResultSet result) throws Exception { > int v = a == null ? Integer.MIN_VALUE : a.getInt(1); > if (record.getInt(1) > v) { > result.updateInt(1, record.getInt(1)); > result.updateString(2, record.getString(2)); > } else { > result.updateInt(1, a.getInt(1)); > result.updateString(2, a.getString(2)); > } > return true; > } > > public static boolean handler2(ResultSet a, ResultSet result) throws Exception { > if (a == null) return false; > result.updateInt(1, a.getInt(1)); > result.updateString(2, a.getString(2)); > return true; > } > > > I Just want to use custom java object instead of "ResultSet a". > > >