aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2002-11-02 02:27:49 +0000
committerBruce Momjian <bruce@momjian.us>2002-11-02 02:27:49 +0000
commit08dd92cdeba1a0becb0a1bb50aa6311ac62b4773 (patch)
treef91e886901457004329dd636aef9a5d3d5e65d83
parent62636a3d4bc63f293744215939ca644ca3d53a95 (diff)
downloadpostgresql-08dd92cdeba1a0becb0a1bb50aa6311ac62b4773.tar.gz
postgresql-08dd92cdeba1a0becb0a1bb50aa6311ac62b4773.zip
Add gcj discussion.
-rw-r--r--doc/TODO.detail/java480
1 files changed, 480 insertions, 0 deletions
diff --git a/doc/TODO.detail/java b/doc/TODO.detail/java
index 040321d1570..3a8420cfc43 100644
--- a/doc/TODO.detail/java
+++ b/doc/TODO.detail/java
@@ -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)
+