]> granicus.if.org Git - postgresql/commitdiff
Add gcj discussion.
authorBruce Momjian <bruce@momjian.us>
Sat, 2 Nov 2002 02:27:49 +0000 (02:27 +0000)
committerBruce Momjian <bruce@momjian.us>
Sat, 2 Nov 2002 02:27:49 +0000 (02:27 +0000)
doc/TODO.detail/java

index 040321d15709ee94909f823f25e8633f0298a1c5..3a8420cfc4380cd3a03863b98e9abf34ceba77b8 100644 (file)
@@ -2244,3 +2244,483 @@ TIP 3: if posting/reading through Usenet, please send an appropriate
 subscribe-nomail command to majordomo@postgresql.org so that your
 message can get through to the mailing list cleanly
 
+From pgsql-hackers-owner+M31158@postgresql.org Wed Oct 30 14:31:27 2002
+Return-path: <pgsql-hackers-owner+M31158@postgresql.org>
+Received: from postgresql.org (postgresql.org [64.49.215.8])
+       by candle.pha.pa.us (8.11.6/8.10.1) with ESMTP id g9UJVQU07194
+       for <pgman@candle.pha.pa.us>; Wed, 30 Oct 2002 14:31:26 -0500 (EST)
+Received: from localhost (postgresql.org [64.49.215.8])
+       by postgresql.org (Postfix) with ESMTP
+       id 353C9476C3C; Wed, 30 Oct 2002 14:30:18 -0500 (EST)
+Received: from postgresql.org (postgresql.org [64.49.215.8])
+       by postgresql.org (Postfix) with SMTP
+       id D8787476C72; Wed, 30 Oct 2002 14:30:06 -0500 (EST)
+Received: from localhost (postgresql.org [64.49.215.8])
+       by postgresql.org (Postfix) with ESMTP id A8D81476C42
+       for <pgsql-hackers@postgreSQL.org>; Wed, 30 Oct 2002 14:29:57 -0500 (EST)
+Received: from sss.pgh.pa.us (unknown [192.204.191.242])
+       by postgresql.org (Postfix) with ESMTP id 04987476C71
+       for <pgsql-hackers@postgreSQL.org>; Wed, 30 Oct 2002 14:29:57 -0500 (EST)
+Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1])
+       by sss.pgh.pa.us (8.12.5/8.12.5) with ESMTP id g9UJTvhR000820
+       for <pgsql-hackers@postgreSQL.org>; Wed, 30 Oct 2002 14:29:57 -0500 (EST)
+To: pgsql-hackers@postgresql.org
+Subject: [HACKERS] PG functions in Java: maybe use gcj?
+Date: Wed, 30 Oct 2002 14:29:57 -0500
+Message-ID: <819.1036006197@sss.pgh.pa.us>
+From: Tom Lane <tgl@sss.pgh.pa.us>
+X-Virus-Scanned: by AMaViS new-20020517
+Precedence: bulk
+Sender: pgsql-hackers-owner@postgresql.org
+X-Virus-Scanned: by AMaViS new-20020517
+Status: OR
+
+I had an interesting conversation today with Tom Tromey and Andrew Haley
+of Red Hat about how to implement "pljava" for Postgres.  Rather than
+futzing with an external JVM, their thought is to use gcj (gcc compiling
+Java).  It sounds like this approach would mostly just work, modulo
+needing to use a small amount of C++ code to call the defined APIs for
+gcj.
+
+This would not be a perfect solution: gcj isn't yet ported everywhere,
+and it would probably not play nice on machines where the standard C
+library isn't thread-safe.  But it seems a lot more within reach than
+the approaches we've discussed in the past.
+
+I'm not volunteering to try to do this, but I wanted to toss the idea
+up in the air and see if anyone wants to try it.  Tom and Andrew
+indicated they'd be willing to help out with advice etc for anyone
+who wants to take on the project.
+
+                       regards, tom lane
+
+---------------------------(end of broadcast)---------------------------
+TIP 2: you can get off all lists at once with the unregister command
+    (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
+
+From pgsql-hackers-owner+M31173@postgresql.org Wed Oct 30 22:51:48 2002
+Return-path: <pgsql-hackers-owner+M31173@postgresql.org>
+Received: from postgresql.org (postgresql.org [64.49.215.8])
+       by candle.pha.pa.us (8.11.6/8.10.1) with ESMTP id g9V3pkU27163
+       for <pgman@candle.pha.pa.us>; Wed, 30 Oct 2002 22:51:46 -0500 (EST)
+Received: from localhost (postgresql.org [64.49.215.8])
+       by postgresql.org (Postfix) with ESMTP
+       id CC02B476CE9; Wed, 30 Oct 2002 22:51:42 -0500 (EST)
+Received: from postgresql.org (postgresql.org [64.49.215.8])
+       by postgresql.org (Postfix) with SMTP
+       id 30D78476087; Wed, 30 Oct 2002 22:51:25 -0500 (EST)
+Received: from localhost (postgresql.org [64.49.215.8])
+       by postgresql.org (Postfix) with ESMTP id 49189475A1E
+       for <pgsql-hackers@postgresql.org>; Wed, 30 Oct 2002 22:51:18 -0500 (EST)
+Received: from mail.xythos.com (sdsl-216-36-77-241.dsl.sjc.megapath.net [216.36.77.241])
+       by postgresql.org (Postfix) with ESMTP id B9C5B474E5C
+       for <pgsql-hackers@postgresql.org>; Wed, 30 Oct 2002 22:51:17 -0500 (EST)
+Received: from ravms by mail.xythos.com with mail-ok (Exim 3.36 #3)
+       id 1876OD-0006U9-00; Thu, 31 Oct 2002 03:53:01 +0000
+Received: from h-66-166-17-184.snvacaid.covad.net ([66.166.17.184] helo=xythos.com)
+       by mail.xythos.com with asmtp (Exim 3.36 #3)
+       id 1876OC-0006Ty-00; Thu, 31 Oct 2002 03:53:00 +0000
+Message-ID: <3DC0AA42.4000205@xythos.com>
+Date: Wed, 30 Oct 2002 19:57:54 -0800
+From: Barry Lind <blind@xythos.com>
+User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.1) Gecko/20020826
+X-Accept-Language: en-us, en
+MIME-Version: 1.0
+To: Tom Lane <tgl@sss.pgh.pa.us>
+cc: pgsql-hackers@postgresql.org
+Subject: Re: [HACKERS] PG functions in Java: maybe use gcj?
+References: <819.1036006197@sss.pgh.pa.us>
+Content-Type: text/plain; charset=us-ascii; format=flowed
+Content-Transfer-Encoding: 7bit
+X-Envelope-To: tgl@sss.pgh.pa.us,
+       pgsql-hackers@postgreSQL.org
+X-Virus-Scanned: by AMaViS new-20020517
+Precedence: bulk
+Sender: pgsql-hackers-owner@postgresql.org
+X-Virus-Scanned: by AMaViS new-20020517
+Status: OR
+
+I am not sure I follow.  Are you suggesting:
+
+1)  create function takes java source and then calls gcj to compile it 
+to native and build a .so from it that would get called at runtime?
+
+or
+
+2)  create function takes java source and just compiles to java .class 
+files and the runtime invokes the gcj java interpreter.
+
+or I guess you could do both at the same time.
+
+In either case I am concerned about licensing issues.  gcj is not under 
+a BSD style license.  Depending on what you need you are either dealing 
+with regular GPL, LGPL, or LGPL with a special java exception.
+
+I beleive (without giving it too much thought) that doing either 1 or 2 
+above would end up linking GPL code into postgres.  This can be worked 
+around by requiring the the necessary gcj libraries be installed 
+separately and detected at configure time (like is done elsewhere).  But 
+is does (I think) present a problem for commercial products that would 
+like to redistribute postgres with pljava.
+
+
+Another challenge here it that the java code is going to want to use the 
+jdbc api when communicating with the database.  One difficulty here is 
+getting jdbc to be part of the same transaction as the calling java 
+function.  Such that if the java stored procedure selects or updates 
+data it is doing it in the same transaction as the caller of the 
+function.  Today the jdbc driver only knows how to communicate via the 
+FE/BE protocol which will end up creating a new process and transaction. 
+  The jdbc driver would need to not use the FE/BE protocol but instead 
+probably use jni calls.
+
+thanks,
+--Barry
+
+
+Tom Lane wrote:
+> I had an interesting conversation today with Tom Tromey and Andrew Haley
+> of Red Hat about how to implement "pljava" for Postgres.  Rather than
+> futzing with an external JVM, their thought is to use gcj (gcc compiling
+> Java).  It sounds like this approach would mostly just work, modulo
+> needing to use a small amount of C++ code to call the defined APIs for
+> gcj.
+> 
+> This would not be a perfect solution: gcj isn't yet ported everywhere,
+> and it would probably not play nice on machines where the standard C
+> library isn't thread-safe.  But it seems a lot more within reach than
+> the approaches we've discussed in the past.
+> 
+> I'm not volunteering to try to do this, but I wanted to toss the idea
+> up in the air and see if anyone wants to try it.  Tom and Andrew
+> indicated they'd be willing to help out with advice etc for anyone
+> who wants to take on the project.
+> 
+>                      regards, tom lane
+> 
+> ---------------------------(end of broadcast)---------------------------
+> TIP 2: you can get off all lists at once with the unregister command
+>     (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
+> 
+
+
+
+
+---------------------------(end of broadcast)---------------------------
+TIP 5: Have you checked our extensive FAQ?
+
+http://www.postgresql.org/users-lounge/docs/faq.html
+
+From pgsql-hackers-owner+M31175@postgresql.org Wed Oct 30 23:10:42 2002
+Return-path: <pgsql-hackers-owner+M31175@postgresql.org>
+Received: from postgresql.org (postgresql.org [64.49.215.8])
+       by candle.pha.pa.us (8.11.6/8.10.1) with ESMTP id g9V4AeU28809
+       for <pgman@candle.pha.pa.us>; Wed, 30 Oct 2002 23:10:41 -0500 (EST)
+Received: from localhost (postgresql.org [64.49.215.8])
+       by postgresql.org (Postfix) with ESMTP
+       id 8C73B476AD5; Wed, 30 Oct 2002 23:10:33 -0500 (EST)
+Received: from postgresql.org (postgresql.org [64.49.215.8])
+       by postgresql.org (Postfix) with SMTP
+       id 2E9DC4761DF; Wed, 30 Oct 2002 23:10:31 -0500 (EST)
+Received: from localhost (postgresql.org [64.49.215.8])
+       by postgresql.org (Postfix) with ESMTP id 1A441475A1E
+       for <pgsql-hackers@postgreSQL.org>; Wed, 30 Oct 2002 23:10:25 -0500 (EST)
+Received: from sss.pgh.pa.us (unknown [192.204.191.242])
+       by postgresql.org (Postfix) with ESMTP id 7D378474E5C
+       for <pgsql-hackers@postgreSQL.org>; Wed, 30 Oct 2002 23:10:24 -0500 (EST)
+Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1])
+       by sss.pgh.pa.us (8.12.5/8.12.5) with ESMTP id g9V4AThR003716;
+       Wed, 30 Oct 2002 23:10:29 -0500 (EST)
+To: Barry Lind <blind@xythos.com>
+cc: pgsql-hackers@postgresql.org
+Subject: Re: [HACKERS] PG functions in Java: maybe use gcj? 
+In-Reply-To: <3DC0AA42.4000205@xythos.com> 
+References: <819.1036006197@sss.pgh.pa.us> <3DC0AA42.4000205@xythos.com>
+Comments: In-reply-to Barry Lind <blind@xythos.com>
+       message dated "Wed, 30 Oct 2002 19:57:54 -0800"
+Date: Wed, 30 Oct 2002 23:10:28 -0500
+Message-ID: <3715.1036037428@sss.pgh.pa.us>
+From: Tom Lane <tgl@sss.pgh.pa.us>
+X-Virus-Scanned: by AMaViS new-20020517
+Precedence: bulk
+Sender: pgsql-hackers-owner@postgresql.org
+X-Virus-Scanned: by AMaViS new-20020517
+Status: OR
+
+Barry Lind <blind@xythos.com> writes:
+> I am not sure I follow.  Are you suggesting:
+> 1)  create function takes java source and then calls gcj to compile it 
+> to native and build a .so from it that would get called at runtime?
+> or
+> 2)  create function takes java source and just compiles to java .class 
+> files and the runtime invokes the gcj java interpreter.
+> or I guess you could do both at the same time.
+
+The impression I had (after not looking very closely) was that you could
+expect to compile to bytecodes on the fly and then run the gcj
+interpreter.  But the .so alternative might be a good fallback if that
+doesn't work.
+
+> In either case I am concerned about licensing issues.  gcj is not under 
+> a BSD style license.  Depending on what you need you are either dealing 
+> with regular GPL, LGPL, or LGPL with a special java exception.
+> I beleive (without giving it too much thought) that doing either 1 or 2 
+> above would end up linking GPL code into postgres.  This can be worked 
+> around by requiring the the necessary gcj libraries be installed 
+> separately and detected at configure time (like is done elsewhere).  But 
+> is does (I think) present a problem for commercial products that would 
+> like to redistribute postgres with pljava.
+
+Good point, but unless you want to build a BSD-license Java
+implementation, there will never be a pljava that doesn't have different
+licensing restrictions than PG itself does.  gcj is at least more free
+than either Sun's or IBM's JVM ...
+
+> Another challenge here it that the java code is going to want to use the 
+> jdbc api when communicating with the database.
+
+Yes.  I think we'd need a new implementation of jdbc that sits atop SPI
+(invoked via jni I guess) rather than a FE/BE connection.  How well
+layered is our jdbc code --- would this mean a large rewrite, or just
+rolling in a new bottom layer?
+
+                       regards, tom lane
+
+---------------------------(end of broadcast)---------------------------
+TIP 3: if posting/reading through Usenet, please send an appropriate
+subscribe-nomail command to majordomo@postgresql.org so that your
+message can get through to the mailing list cleanly
+
+From pgsql-hackers-owner+M31202@postgresql.org Thu Oct 31 21:18:38 2002
+Return-path: <pgsql-hackers-owner+M31202@postgresql.org>
+Received: from west.navpoint.com (west.navpoint.com [207.106.42.13])
+       by candle.pha.pa.us (8.11.6/8.10.1) with ESMTP id gA12ILU00147
+       for <pgman@candle.pha.pa.us>; Thu, 31 Oct 2002 21:18:37 -0500 (EST)
+Received: from postgresql.org (postgresql.org [64.49.215.8])
+       by west.navpoint.com (8.11.6/8.10.1) with ESMTP id g9VHv8h08054
+       for <pgman@candle.pha.pa.us>; Thu, 31 Oct 2002 12:57:08 -0500 (EST)
+Received: from localhost (postgresql.org [64.49.215.8])
+       by postgresql.org (Postfix) with ESMTP
+       id 5CA844768F1; Thu, 31 Oct 2002 12:54:18 -0500 (EST)
+Received: from postgresql.org (postgresql.org [64.49.215.8])
+       by postgresql.org (Postfix) with SMTP
+       id 973E1476060; Thu, 31 Oct 2002 12:54:11 -0500 (EST)
+Received: from localhost (postgresql.org [64.49.215.8])
+       by postgresql.org (Postfix) with ESMTP id 9A45F47668B
+       for <pgsql-hackers@postgresql.org>; Thu, 31 Oct 2002 12:54:05 -0500 (EST)
+Received: from mail.xythos.com (sdsl-216-36-77-241.dsl.sjc.megapath.net [216.36.77.241])
+       by postgresql.org (Postfix) with ESMTP id 0D7F5476684
+       for <pgsql-hackers@postgresql.org>; Thu, 31 Oct 2002 12:54:05 -0500 (EST)
+Received: from ravms by mail.xythos.com with mail-ok (Exim 3.36 #3)
+       id 187JXx-0006Pc-00; Thu, 31 Oct 2002 17:55:57 +0000
+Received: from sdsl-216-36-77-241.dsl.sjc.megapath.net ([216.36.77.241] helo=xythos.com)
+       by mail.xythos.com with asmtp (Exim 3.36 #3)
+       id 187JXx-0006PR-00; Thu, 31 Oct 2002 17:55:57 +0000
+Message-ID: <3DC175F7.90901@xythos.com>
+Date: Thu, 31 Oct 2002 10:27:03 -0800
+From: Barry Lind <blind@xythos.com>
+User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.1) Gecko/20020826
+X-Accept-Language: en-us, en
+MIME-Version: 1.0
+To: Tom Lane <tgl@sss.pgh.pa.us>
+cc: pgsql-hackers@postgresql.org
+Subject: Re: [HACKERS] PG functions in Java: maybe use gcj?
+References: <819.1036006197@sss.pgh.pa.us> <3DC0AA42.4000205@xythos.com> <3715.1036037428@sss.pgh.pa.us>
+Content-Type: text/plain; charset=us-ascii; format=flowed
+Content-Transfer-Encoding: 7bit
+X-Envelope-To: tgl@sss.pgh.pa.us,
+       pgsql-hackers@postgreSQL.org
+X-Virus-Scanned: by AMaViS new-20020517
+Precedence: bulk
+Sender: pgsql-hackers-owner@postgresql.org
+X-Virus-Scanned: by AMaViS new-20020517
+Status: OR
+
+
+
+Tom Lane wrote:
+> Barry Lind <blind@xythos.com> writes:
+> 
+>>In either case I am concerned about licensing issues.  gcj is not under 
+>>a BSD style license.  Depending on what you need you are either dealing 
+>>with regular GPL, LGPL, or LGPL with a special java exception.
+>>I beleive (without giving it too much thought) that doing either 1 or 2 
+>>above would end up linking GPL code into postgres.  This can be worked 
+>>around by requiring the the necessary gcj libraries be installed 
+>>separately and detected at configure time (like is done elsewhere).  But 
+>>is does (I think) present a problem for commercial products that would 
+>>like to redistribute postgres with pljava.
+> 
+> 
+> Good point, but unless you want to build a BSD-license Java
+> implementation, there will never be a pljava that doesn't have different
+> licensing restrictions than PG itself does.  gcj is at least more free
+> than either Sun's or IBM's JVM ...
+> 
+
+It depends on what you mean by more free.  An architecture that 
+interacts with an external jvm would let you use any jvm (free ones as 
+well as others).  From a licensing standpoint it is generally easy to 
+redistribute a jvm or expect the user to have one installed (most java 
+based products out there today do this).
+
+However in the proposal here we are talking about requiring a specific 
+jvm (gcj) and actually linking parts of it into postgres.  To the extent 
+that GPL code is linked in the GPL extends to the entire code base.  As 
+I said previously there are ways to work around this, but it becomes 
+tricky.  Especially when a commercial product wants to bundle postgres 
+and pljava.  That resulting bundle is probably entirely under the GPL 
+and then any changes to it are also GPL.  So it could be the case that 
+this company would be prevented from submitting improvements they made 
+back to the core product because their improvements are GPLed as a 
+result of pljava.
+
+Now having said all that, I have been monitoring the progres of gcj for 
+some time because I think there are very interesting possibilities.  And 
+I am all for anyone who wants to look into it further and investigate 
+the possiblities.  I just want to raise the licensing issue because it 
+can cause problems and it is better to think about them up front than 
+after the fact.
+
+> 
+>>Another challenge here it that the java code is going to want to use the 
+>>jdbc api when communicating with the database.
+> 
+> 
+> Yes.  I think we'd need a new implementation of jdbc that sits atop SPI
+> (invoked via jni I guess) rather than a FE/BE connection.  How well
+> layered is our jdbc code --- would this mean a large rewrite, or just
+> rolling in a new bottom layer?
+> 
+
+It isn't as well layered as it could be, but it isn't too bad.  Overall 
+it shouldn't be too much work, but not a little project either.  One 
+area that isn't well layered is the assumption that the raw data from 
+the server is in text format, since that is what the FE/BE protocol 
+provides.  So all the conversion functions that convert to/from java 
+datatypes do so in this format.  This assumption runs deep into the 
+code.  As a first pass it would be easiest to get raw data from SPI 
+convert to text and then convert to java datatypes instead of going 
+directly from the internal SPI format directly to java datatypes.  This 
+could be improved upon later.
+
+>                      regards, tom lane
+> 
+
+thanks,
+--Barry
+
+
+
+
+
+
+---------------------------(end of broadcast)---------------------------
+TIP 2: you can get off all lists at once with the unregister command
+    (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
+
+From pgsql-hackers-owner+M31223@postgresql.org Fri Nov  1 07:34:24 2002
+Return-path: <pgsql-hackers-owner+M31223@postgresql.org>
+Received: from postgresql.org (postgresql.org [64.49.215.8])
+       by candle.pha.pa.us (8.11.6/8.10.1) with ESMTP id gA1CYKU23527
+       for <pgman@candle.pha.pa.us>; Fri, 1 Nov 2002 07:34:21 -0500 (EST)
+Received: from localhost (postgresql.org [64.49.215.8])
+       by postgresql.org (Postfix) with ESMTP
+       id C48C44762EE; Fri,  1 Nov 2002 07:34:13 -0500 (EST)
+Received: from postgresql.org (postgresql.org [64.49.215.8])
+       by postgresql.org (Postfix) with SMTP
+       id 1F69C475F34; Fri,  1 Nov 2002 07:34:11 -0500 (EST)
+Received: from localhost (postgresql.org [64.49.215.8])
+       by postgresql.org (Postfix) with ESMTP id 06581474E53
+       for <pgsql-hackers@postgresql.org>; Fri,  1 Nov 2002 07:34:07 -0500 (EST)
+Received: from anchor-post-39.mail.demon.net (anchor-post-39.mail.demon.net [194.217.242.80])
+       by postgresql.org (Postfix) with ESMTP id 7D34D474E44
+       for <pgsql-hackers@postgresql.org>; Fri,  1 Nov 2002 07:34:06 -0500 (EST)
+Received: from lfix.demon.co.uk ([158.152.59.127] helo=linda.lfix.co.uk)
+       by anchor-post-39.mail.demon.net with esmtp (Exim 3.36 #2)
+       id 187b04-0002Pj-0U
+       for pgsql-hackers@postgresql.org; Fri, 01 Nov 2002 12:34:08 +0000
+Received: from localhost
+       ([127.0.0.1] helo=localhost.localdomain ident=olly)
+       by linda.lfix.co.uk with esmtp (Exim 3.36 #1 (Debian))
+       id 187b04-0007zb-00
+       for <pgsql-hackers@postgresql.org>; Fri, 01 Nov 2002 12:34:08 +0000
+Subject: Re: [HACKERS] PG functions in Java: maybe use gcj?
+From: Oliver Elphick <olly@lfix.co.uk>
+To: pgsql-hackers@postgresql.org
+In-Reply-To: <3DC175F7.90901@xythos.com>
+References: <819.1036006197@sss.pgh.pa.us> <3DC0AA42.4000205@xythos.com>
+       <3715.1036037428@sss.pgh.pa.us>  <3DC175F7.90901@xythos.com>
+Content-Type: text/plain
+Content-Transfer-Encoding: 7bit
+X-Mailer: Ximian Evolution 1.0.8 
+Date: 01 Nov 2002 12:34:08 +0000
+Message-ID: <1036154048.7925.73.camel@linda>
+MIME-Version: 1.0
+X-Virus-Scanned: by AMaViS new-20020517
+Precedence: bulk
+Sender: pgsql-hackers-owner@postgresql.org
+X-Virus-Scanned: by AMaViS new-20020517
+Status: OR
+
+On Thu, 2002-10-31 at 18:27, Barry Lind wrote:
+
+> However in the proposal here we are talking about requiring a specific 
+> jvm (gcj) and actually linking parts of it into postgres.  To the extent 
+> that GPL code is linked in the GPL extends to the entire code base.  As 
+> I said previously there are ways to work around this, but it becomes 
+> tricky.  Especially when a commercial product wants to bundle postgres 
+> and pljava.  That resulting bundle is probably entirely under the GPL 
+> and then any changes to it are also GPL.  So it could be the case that 
+> this company would be prevented from submitting improvements they made 
+> back to the core product because their improvements are GPLed as a 
+> result of pljava.
+
+Nothing that company does can affect the licensing of PostgreSQL itself
+- it doesn't belong to them, so they cannot change its licence.
+
+Nothing in the GPL forces them to put GPL copyright on their own
+alterations.
+
+What they cannot do is to _distribute_ binary code that links to GPL
+code while giving fewer rights to their distributees than they
+themselves received with the GPL code, whether in respect of their own
+code or the GPL code.  Therefore they would be required to make their
+source changes available to anyone to whom they gave a binary, and they
+would not be able to restrict the further distribution of those
+changes.  They can contribute those changes to the project under
+whatever licence they wish that is acceptable to the project.
+
+Furthermore, gcj is part of the GNU compiler collection, like gcc, and
+using it does not in itself cause code compiled under it to be subject
+to the GPL.  Linking to its runtime library would normally cause that,
+but the gcj-3.0 copyright contains the following text:
+
+========================================================================
+The libgcj library is licensed under the terms of the GNU General
+Public License, with this special exception:
+
+    As a special exception, if you link this library with other files
+    to produce an executable, this library does not by itself cause
+    the resulting executable to be covered by the GNU General Public
+    License.  This exception does not however invalidate any other
+    reasons why the executable file might be covered by the GNU
+    General Public License.
+========================================================================
+
+-- 
+Oliver Elphick                                Oliver.Elphick@lfix.co.uk
+Isle of Wight, UK                            
+http://www.lfix.co.uk/oliver
+GPG: 1024D/3E1D0C1C: CA12 09E0 E8D5 8870 5839  932A 614D 4C34 3E1D 0C1C
+                 ========================================
+     "But they that wait upon the LORD shall renew their 
+      strength; they shall mount up with wings as eagles; 
+      they shall run, and not be weary; and they shall walk,
+      and not faint."            Isaiah 40:31 
+
+
+---------------------------(end of broadcast)---------------------------
+TIP 2: you can get off all lists at once with the unregister command
+    (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
+