From pgsql-hackers-owner+M4145@postgresql.org Sat Feb 3 05:54:06 2001 Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id FAA22302 for ; Sat, 3 Feb 2001 05:54:04 -0500 (EST) Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28]) by mail.postgresql.org (8.11.1/8.11.1) with SMTP id f13Ap4q95132; Sat, 3 Feb 2001 05:51:04 -0500 (EST) (envelope-from pgsql-hackers-owner+M4145@postgresql.org) Received: from mail.retep.org.uk ([216.126.85.184]) by mail.postgresql.org (8.11.1/8.11.1) with ESMTP id f13AnIq94863 for ; Sat, 3 Feb 2001 05:49:18 -0500 (EST) (envelope-from peter@retep.org.uk) Received: from heather.retep.org.uk ([193.113.118.193]) (authenticated) by mail.retep.org.uk (8.11.1/8.11.1) with ESMTP id f13AlnO94823; Sat, 3 Feb 2001 05:47:49 -0500 (EST) (envelope-from peter@retep.org.uk) Message-Id: <5.0.2.1.0.20010203103036.009efec0@mail.retep.org.uk> X-Sender: peter@mail.retep.org.uk X-Mailer: QUALCOMM Windows Eudora Version 5.0.2 Date: Sat, 03 Feb 2001 10:46:24 +0000 To: Alex Pilosov , tomasz konefal From: Peter Mount Subject: Re: [HACKERS] TODO list: Allow Java server-side programming Cc: pgsql-hackers@postgresql.org In-Reply-To: References: <20010202194049.38902.qmail@web12003.mail.yahoo.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; format=flowed Precedence: bulk Sender: pgsql-hackers-owner@postgresql.org Status: OR At 14:57 02/02/01 -0500, Alex Pilosov wrote: >On Fri, 2 Feb 2001, tomasz konefal wrote: > > > could someone please clarify what "Allow Java > > server-side programming" actually means? what are the > > limitations of using java and jdbc with pgsql? > >It means to embed Java interpreter inside postgres, and allow writing >stored procedures and triggers in Java. Thats correct. Basically you are talking of something like PL/Java. The Java side would be simple, but its linking the JVM to the backend that's the problem. It's been a while since I delved into the backend, but unless it's changed from fork() to threading, I don't really see this happening, unless someone who knows C that well knows of a portable way of communicating between two processes - other than RMI. If that could be solved, then you could use JNI to interface the JVM. I know some people think this would slow the backend down, but it's only the instanciation of the JVM thats slow, hence the other reason fork() is holding this back. Ideally you would want the JVM to be running with PostMaster, and then each backend can then use the JVM as and when necessary. Obviously you wouldn't want a JVM in every installation, but there are a lot of good reasons to have this capability. For example, as part of the course I did this week, we used Tomcat (Servlet/JSP/Web server). Now there's no reason why Tomcat could run within the same JVM. JBoss is another good example (EJB Server). The JBoss team have actually got Tomcat to run within the same JVM. Doesn't hinder performance at all, but does reduce the memory footprint. This is a good future thing to look into (why not for 8.0 ;-) ). If we could find an _optional_ way of hooking the backend direct into the JVM, we could get PostgreSQL into a lot of new areas. It also would make things like CORBA etc a doddle. PS: I'm writing down notes of the course to go onto the JDBC web site this weekend, so there's some nice things for EJB, RMI, Corba etc. More later, Peter From pgsql-hackers-owner+M4153@postgresql.org Sat Feb 3 11:54:12 2001 Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id LAA13446 for ; Sat, 3 Feb 2001 11:54:12 -0500 (EST) Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28]) by mail.postgresql.org (8.11.1/8.11.1) with SMTP id f13GrZq17345; Sat, 3 Feb 2001 11:53:35 -0500 (EST) (envelope-from pgsql-hackers-owner+M4153@postgresql.org) Received: from mailout04.sul.t-online.com (mailout04.sul.t-online.com [194.25.134.18]) by mail.postgresql.org (8.11.1/8.11.1) with ESMTP id f13GnZq17000 for ; Sat, 3 Feb 2001 11:49:37 -0500 (EST) (envelope-from peter_e@gmx.net) Received: from fwd06.sul.t-online.com by mailout04.sul.t-online.com with smtp id 14P5rE-0000zq-00; Sat, 03 Feb 2001 17:48:16 +0100 Received: from peter.localdomain (520083510237-0001@[212.185.245.12]) by fmrl06.sul.t-online.com with esmtp id 14P5r6-0YvD60C; Sat, 3 Feb 2001 17:48:08 +0100 Date: Sat, 3 Feb 2001 17:56:33 +0100 (CET) From: Peter Eisentraut To: Peter Mount cc: Alex Pilosov , tomasz konefal , Subject: Re: [HACKERS] TODO list: Allow Java server-side programming In-Reply-To: <5.0.2.1.0.20010203103036.009efec0@mail.retep.org.uk> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Sender: 520083510237-0001@t-dialin.net Precedence: bulk Sender: pgsql-hackers-owner@postgresql.org Status: OR Peter Mount writes: > Thats correct. Basically you are talking of something like PL/Java. The > Java side would be simple, but its linking the JVM to the backend that's > the problem. I've tried that recently, here's how it looks as far as Linux JVMs go: * Kaffe has a very polluted name space. Calls to its own functions get resolved to PostgreSQL, and vice versa. Crash and burn result. The Kaffe folks have admitted that this should be fixed but I didn't look farther yet. * The Sun/Blackdown JVM didn't work at all (not even 'java -version') until I upgraded my libc. Then a simple test run crashes with an "error external to JVM"; at first it looked like a segfault when referencing a string constant. In gdb I saw myself faced with about 10 threads running when nothing was going on yet, at which point I was too exhausted to proceed. * IBM's offering didn't work at all. I don't recall the problem anymore but I think it didn't even link correctly. So currently I don't see how this could become a mainstream project, let alone across platforms. > I know some people think this would slow the backend down, but it's only > the instanciation of the JVM thats slow, hence the other reason fork() is > holding this back. Ideally you would want the JVM to be running with > PostMaster, and then each backend can then use the JVM as and when necessary. But how do the other languages cope? Starting up a new Perl for each backend can't be so cheap either. -- Peter Eisentraut peter_e@gmx.net http://yi.org/peter-e/ From pgsql-hackers-owner+M4154@postgresql.org Sat Feb 3 12:37:02 2001 Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id MAA00813 for ; Sat, 3 Feb 2001 12:37:01 -0500 (EST) Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28]) by mail.postgresql.org (8.11.1/8.11.1) with SMTP id f13Haiq21225; Sat, 3 Feb 2001 12:36:44 -0500 (EST) (envelope-from pgsql-hackers-owner+M4154@postgresql.org) Received: from spider.pilosoft.com (p55-222.acedsl.com [160.79.55.222]) by mail.postgresql.org (8.11.1/8.11.1) with ESMTP id f13HX9q20913 for ; Sat, 3 Feb 2001 12:33:09 -0500 (EST) (envelope-from alex@pilosoft.com) Received: from localhost (alexmail@localhost) by spider.pilosoft.com (8.9.3/8.9.3) with ESMTP id MAA09231; Sat, 3 Feb 2001 12:36:01 -0500 (EST) Date: Sat, 3 Feb 2001 12:36:01 -0500 (EST) From: Alex Pilosov To: Peter Mount cc: Alex Pilosov , tomasz konefal , pgsql-hackers@postgresql.org Subject: Re: [HACKERS] TODO list: Allow Java server-side programming In-Reply-To: <5.0.2.1.0.20010203103036.009efec0@mail.retep.org.uk> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Precedence: bulk Sender: pgsql-hackers-owner@postgresql.org Status: OR On Sat, 3 Feb 2001, Peter Mount wrote: > It's been a while since I delved into the backend, but unless it's > changed from fork() to threading, I don't really see this happening, > unless someone who knows C that well knows of a portable way of > communicating between two processes - other than RMI. If that could be > solved, then you could use JNI to interface the JVM. There are many ways one can do this: a) each backend will have a JVM linked in (shared object). This is the way perl/tcl/ruby is embedded, and it works pretty nice. But, Java ['s memory requirement] sucks, therefore, this may not be the optimal way. > I know some people think this would slow the backend down, but it's > only the instanciation of the JVM thats slow, hence the other reason > fork() is holding this back. Ideally you would want the JVM to be > running with PostMaster, and then each backend can then use the JVM as > and when necessary. b) since JVM is threaded, it may be more efficient to have a dedicated process running JVM, and accepting some sort of IPC connections from postgres processes. The biggest problem here is SPI, there aren't a good way for that JVM to talk back to database. c) temporarily, to have quick working code, you can reach java using hacks using programming languages already built into postgres. Both TCL (tcl blend) and Perl (JPL and another hack which name escapes me) are able to execute java code. SPI is possible, I think both of these bindings are two-way (you can go perl-java-perl-java). Might be worth a quick try? -alex From pgsql-hackers-owner+M4164@postgresql.org Sun Feb 4 04:23:42 2001 Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id EAA04260 for ; Sun, 4 Feb 2001 04:23:41 -0500 (EST) Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28]) by mail.postgresql.org (8.11.1/8.11.1) with SMTP id f149Nhx75443; Sun, 4 Feb 2001 04:23:43 -0500 (EST) (envelope-from pgsql-hackers-owner+M4164@postgresql.org) Received: from me.tm.ee (adsl895.estpak.ee [213.168.23.133]) by mail.postgresql.org (8.11.1/8.11.1) with ESMTP id f149Mgx75338 for ; Sun, 4 Feb 2001 04:22:42 -0500 (EST) (envelope-from hannu@tm.ee) Received: from tm.ee (IDENT:hannu@localhost.localdomain [127.0.0.1]) by me.tm.ee (8.9.3/8.9.3) with ESMTP id LAA01488; Sun, 4 Feb 2001 11:18:09 +0200 Message-ID: <3A7D1E51.E383AB7F@tm.ee> Date: Sun, 04 Feb 2001 11:18:09 +0200 From: Hannu Krosing X-Mailer: Mozilla 4.72 [en] (X11; U; Linux 2.2.17 i686) X-Accept-Language: en MIME-Version: 1.0 To: Peter Mount CC: Alex Pilosov , tomasz konefal , pgsql-hackers@postgresql.org Subject: Re: [HACKERS] TODO list: Allow Java server-side programming References: <20010202194049.38902.qmail@web12003.mail.yahoo.com> <5.0.2.1.0.20010203103036.009efec0@mail.retep.org.uk> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Precedence: bulk Sender: pgsql-hackers-owner@postgresql.org Status: OR Peter Mount wrote: > > At 14:57 02/02/01 -0500, Alex Pilosov wrote: > >On Fri, 2 Feb 2001, tomasz konefal wrote: > > > > > could someone please clarify what "Allow Java > > > server-side programming" actually means? what are the > > > limitations of using java and jdbc with pgsql? > > > >It means to embed Java interpreter inside postgres, and allow writing > >stored procedures and triggers in Java. > > Thats correct. Basically you are talking of something like PL/Java. The > Java side would be simple, but its linking the JVM to the backend that's > the problem. > > It's been a while since I delved into the backend, but unless it's changed > from fork() to threading, Someone posted here recently his port/tweaks of backend so that it used threads instead of fork(). IIRC it was done to be used inside a java client in an embedded system. ---------------- Hannu From pgsql-hackers-owner+M4168@postgresql.org Sun Feb 4 06:54:27 2001 Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id GAA19741 for ; Sun, 4 Feb 2001 06:54:26 -0500 (EST) Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28]) by mail.postgresql.org (8.11.1/8.11.1) with SMTP id f14BsOx83329; Sun, 4 Feb 2001 06:54:24 -0500 (EST) (envelope-from pgsql-hackers-owner+M4168@postgresql.org) Received: from mail.retep.org.uk ([216.126.85.184]) by mail.postgresql.org (8.11.1/8.11.1) with ESMTP id f14Bs9x83240 for ; Sun, 4 Feb 2001 06:54:09 -0500 (EST) (envelope-from peter@retep.org.uk) Received: from heather.retep.org.uk ([193.113.241.180]) (authenticated) by mail.retep.org.uk (8.11.1/8.11.1) with ESMTP id f14BqkR83161; Sun, 4 Feb 2001 06:52:46 -0500 (EST) (envelope-from peter@retep.org.uk) Message-Id: <5.0.2.1.0.20010204114942.00a0c8d0@mail.retep.org.uk> X-Sender: peter@mail.retep.org.uk X-Mailer: QUALCOMM Windows Eudora Version 5.0.2 Date: Sun, 04 Feb 2001 11:51:21 +0000 To: Peter Eisentraut From: Peter Mount Subject: Re: [HACKERS] TODO list: Allow Java server-side programming Cc: Alex Pilosov , tomasz konefal , In-Reply-To: References: <5.0.2.1.0.20010203103036.009efec0@mail.retep.org.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; format=flowed Precedence: bulk Sender: pgsql-hackers-owner@postgresql.org Status: OR At 17:56 03/02/01 +0100, Peter Eisentraut wrote: >Peter Mount writes: > > > Thats correct. Basically you are talking of something like PL/Java. The > > Java side would be simple, but its linking the JVM to the backend that's > > the problem. > >I've tried that recently, here's how it looks as far as Linux JVMs go: [snip] >So currently I don't see how this could become a mainstream project, let >alone across platforms. I don't think it would be, but it would be a good side-project. Over time the various JVM's should become better to interface with. > > I know some people think this would slow the backend down, but it's only > > the instanciation of the JVM thats slow, hence the other reason fork() is > > holding this back. Ideally you would want the JVM to be running with > > PostMaster, and then each backend can then use the JVM as and when > necessary. > >But how do the other languages cope? Starting up a new Perl for each >backend can't be so cheap either. But a lot cheaper than Java. Peter From pgsql-hackers-owner+M4169@postgresql.org Sun Feb 4 06:57:24 2001 Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28]) by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id GAA19817 for ; Sun, 4 Feb 2001 06:57:23 -0500 (EST) Received: from mail.postgresql.org (webmail.postgresql.org [216.126.85.28]) by mail.postgresql.org (8.11.1/8.11.1) with SMTP id f14BvLx83711; Sun, 4 Feb 2001 06:57:21 -0500 (EST) (envelope-from pgsql-hackers-owner+M4169@postgresql.org) Received: from mail.retep.org.uk ([216.126.85.184]) by mail.postgresql.org (8.11.1/8.11.1) with ESMTP id f14Bv7x83611 for ; Sun, 4 Feb 2001 06:57:07 -0500 (EST) (envelope-from peter@retep.org.uk) Received: from heather.retep.org.uk ([193.113.241.180]) (authenticated) by mail.retep.org.uk (8.11.1/8.11.1) with ESMTP id f14BtjR83557; Sun, 4 Feb 2001 06:55:45 -0500 (EST) (envelope-from peter@retep.org.uk) Message-Id: <5.0.2.1.0.20010204115139.009f1c50@mail.retep.org.uk> X-Sender: peter@mail.retep.org.uk X-Mailer: QUALCOMM Windows Eudora Version 5.0.2 Date: Sun, 04 Feb 2001 11:54:20 +0000 To: Alex Pilosov From: Peter Mount Subject: Re: [HACKERS] TODO list: Allow Java server-side programming Cc: Alex Pilosov , tomasz konefal , pgsql-hackers@postgresql.org In-Reply-To: References: <5.0.2.1.0.20010203103036.009efec0@mail.retep.org.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; format=flowed Precedence: bulk Sender: pgsql-hackers-owner@postgresql.org Status: OR At 12:36 03/02/01 -0500, Alex Pilosov wrote: >On Sat, 3 Feb 2001, Peter Mount wrote: [snip] > > I know some people think this would slow the backend down, but it's > > only the instanciation of the JVM thats slow, hence the other reason > > fork() is holding this back. Ideally you would want the JVM to be > > running with PostMaster, and then each backend can then use the JVM as > > and when necessary. >b) since JVM is threaded, it may be more efficient to have a dedicated >process running JVM, and accepting some sort of IPC connections from >postgres processes. The biggest problem here is SPI, there aren't a good >way for that JVM to talk back to database. That was my other idea, but it is the IPC thats problematical. You would still need to do some native api to implement some messaging system between the two. However, at the other extreme there is RPC, which is possible now, but would be a lot slower. >c) temporarily, to have quick working code, you can reach java using hacks >using programming languages already built into postgres. Both TCL (tcl >blend) and Perl (JPL and another hack which name escapes me) are able to >execute java code. SPI is possible, I think both of these bindings are >two-way (you can go perl-java-perl-java). Might be worth a quick try? Might be one way to go... Peter >-alex > From pgsql-jdbc-owner+M884@postgresql.org Wed Jun 27 13:36:09 2001 Return-path: Received: from postgresql.org (webmail.postgresql.org [216.126.85.28]) by candle.pha.pa.us (8.10.1/8.10.1) with ESMTP id f5RHa9q05483 for ; Wed, 27 Jun 2001 13:36:09 -0400 (EDT) Received: from postgresql.org.org (webmail.postgresql.org [216.126.85.28]) by postgresql.org (8.11.3/8.11.1) with SMTP id f5RHaAa03078 for ; Wed, 27 Jun 2001 13:36:10 -0400 (EDT) (envelope-from pgsql-jdbc-owner+M884@postgresql.org) Received: from net2.micro-automation.com (net2.micro-automation.com [64.7.141.29]) by postgresql.org (8.11.3/8.11.1) with SMTP id f5RHOka96908 for ; Wed, 27 Jun 2001 13:24:46 -0400 (EDT) (envelope-from Dave@micro-automation.net) Received: (qmail 32671 invoked from network); 27 Jun 2001 17:24:39 -0000 Received: from eboxwest.ebox.com (HELO INSPIRON) (206.51.23.194) by net2.micro-automation.com with SMTP; 27 Jun 2001 17:24:39 -0000 Reply-To: From: "Dave Cramer" To: "'Barry Lind'" cc: Subject: [JDBC] RE: Todo/missing? (was Re: [ADMIN] High memory usage [PATCH]) Date: Wed, 27 Jun 2001 13:22:42 -0400 Organization: Micro Automation Inc. Message-ID: <008301c0ff2d$c885d880$0201a8c0@INSPIRON> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Priority: 3 (Normal) X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook, Build 10.0.2616 Importance: Normal In-Reply-To: <3B39352E.6060904@xythos.com> X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400 X-AntiVirus: scanned for viruses by AMaViS 0.2.1 (http://amavis.org/) Precedence: bulk Sender: pgsql-jdbc-owner@postgresql.org Status: OR Barry, The getXXXFunctions aren't implemented Some of the other functions are correct for version 7.1 but not for previous versions. Ie. The row length, etc. I think the driver should get the version and determine what is correct for each version. I think this is incorrect. public boolean supportsSelectForUpdate() throws SQLException { // XXX-Not Implemented return false; } There are a number of things here which are hard coded, and possible wrong. I started to work on this, but since I am going on vacation next week I have a number of fires to get down to a slow burn before I go. Dave -----Original Message----- From: Barry Lind [mailto:barry@xythos.com] Sent: June 26, 2001 9:22 PM To: Dave Cramer Cc: pgsql-jdbc@postgresql.org Subject: Re: Todo/missing? (was Re: [ADMIN] High memory usage [PATCH]) Dave, Can you give a little more detail on what you mean by 'Improved DatabaseMetaData'? What specific areas are currently lacking? thanks, --Barry >>On Mon, Jun 25, 2001 at 10:56:18PM -0400, Dave Cramer wrote: >> >>>I have to agree, we need to compile a todo list. >>> >>>Mine would include: >>> >>>1) Comprehensive test suite. This may be available already. >>>2) Updateable resultSet >>>3) Improved DatabaseMetaData >>>4) Compatible blob support >>> > > Added to official PostgreSQL TODO: > > * JDBC > * Comprehensive test suite. This may be available already. > * Updateable resultSet > * Improved DatabaseMetaData > * Compatible blob support > > ---------------------------(end of broadcast)--------------------------- TIP 4: Don't 'kill -9' the postmaster From pgsql-jdbc-owner+M968@postgresql.org Sun Jul 8 18:59:29 2001 Return-path: Received: from postgresql.org (webmail.postgresql.org [216.126.85.28]) by candle.pha.pa.us (8.10.1/8.10.1) with ESMTP id f68MxTl05403 for ; Sun, 8 Jul 2001 18:59:29 -0400 (EDT) Received: from postgresql.org.org (webmail.postgresql.org [216.126.85.28]) by postgresql.org (8.11.3/8.11.1) with SMTP id f68MxWa07043 for ; Sun, 8 Jul 2001 18:59:32 -0400 (EDT) (envelope-from pgsql-jdbc-owner+M968@postgresql.org) Received: from mailout02.sul.t-online.de (mailout02.sul.t-online.com [194.25.134.17]) by postgresql.org (8.11.3/8.11.1) with ESMTP id f68MrGa05368 for ; Sun, 8 Jul 2001 18:53:16 -0400 (EDT) (envelope-from peter_e@gmx.net) Received: from fwd06.sul.t-online.de by mailout02.sul.t-online.de with smtp id 15JNQP-0004x9-00; Mon, 09 Jul 2001 00:53:13 +0200 Received: from peter.localdomain (520083510237-0001@[212.185.245.47]) by fmrl06.sul.t-online.com with esmtp id 15JNQH-0xfc00C; Mon, 9 Jul 2001 00:53:05 +0200 Date: Mon, 9 Jul 2001 00:55:37 +0200 (CEST) From: Peter Eisentraut To: Subject: [JDBC] To do list for DatabaseMetaData Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Sender: 520083510237-0001@t-dialin.net Precedence: bulk Sender: pgsql-jdbc-owner@postgresql.org Status: OR Since DatabaseMetaData seems to have been a subject of interest lately I have composed a list of concrete things that need to be done there. The spec of DatabaseMetaData is here: http://java.sun.com/j2se/1.3/docs/api/java/sql/DatabaseMetaData.html All the functions listed in the spec and not listed below I have recently checked and updated for correctness and compliance. Thus, this list is complete. Functions marked with '?' I have not checked yet. If someone wants to tackle some of the getThings() functions, a description of the system catalogs is in the Developer's Guide. Also note that some functions currently incorrectly handle the case of null patterns vs. "" patterns vs. "%" patterns. At least two parameters obtained by a DatabaseMetaData method are user-tunable on the server side. The only way to get at those numbers currently is to use SHOW and parse the NOTICE: it sends back (which is impossible in the days of internationalized messages), so a nice side-project would be to implement a get_config_variable(text) returns text (better names possible) function to allow easier access. Now the list: allProceduresAreCallable() not all procedures listed are callable (triggers, in/out) allTablesAreSelectable() should this check access privileges or what? getSQLKeywords() outdated, could be automated like keywords.sgml getNumericFunctions() decide what exactly is a "numeric function"? getStringFunctions() ditto getSystemFunctions() ditto getTimeDateFunctions() ditto getExtraNameCharacters() server allows \200 to \377, how does this fit in with Unicode? getMaxColumnNameLength() 32 is hard-coded here, maybe query server getMaxColumnsInIndex() this should be detected from server getMaxColumnsInTable() this limit is probably shaky getMaxConnections() could query the server for this (SHOW, see above) getMaxCursorNameLength() 32 hard-coded getMaxSchemaNameLength() will be 32 when done getMaxProcedureNameLength() 32 hard-coded getMaxCatalogNameLength() should be NAMEDATALEN doesMaxRowSizeIncludeBlobs() since we don't have blobs, should this throw an exception? getMaxStatements() questionable, see comment there getMaxTableNameLength() 32 hard-coded getMaxUserNameLength() 32 hard-coded getDefaultTransactionIsolation() This is configurable in 7.2. (SHOW, see above) getProcedures() missing catalog (database) and remarks columns getProcedureColumns() only dummy implementation getTables() fails to handle pre-7.1 servers (relkind 'v') getSchemas() This should throw an exception. getTableTypes() ? getColumns() ? getColumnPrivileges() not implemented getTablePrivileges() not implemented getBestRowIdentifier() only dummy implementation getVersionColumns() not implemented getPrimaryKeys() ? getImportedKeys() ? getExportedKeys() not implemented getCrossReference() not implemented getTypeInfo() ? getIndexInfo() ? getUDTs() ? -- Peter Eisentraut peter_e@gmx.net http://funkturm.homeip.net/~peter ---------------------------(end of broadcast)--------------------------- TIP 6: Have you searched our list archives? http://www.postgresql.org/search.mpl From pgsql-general-owner+M14602@postgresql.org Sat Sep 1 00:50:49 2001 Return-path: Received: from server1.pgsql.org (server1.pgsql.org [64.39.15.238] (may be forged)) by candle.pha.pa.us (8.11.6/8.10.1) with ESMTP id f814onF24433 for ; Sat, 1 Sep 2001 00:50:49 -0400 (EDT) Received: from postgresql.org (webmail.postgresql.org [216.126.85.28]) by server1.pgsql.org (8.11.6/8.11.6) with ESMTP id f814pNq39726; Fri, 31 Aug 2001 23:51:23 -0500 (CDT) (envelope-from pgsql-general-owner+M14602@postgresql.org) Received: from ns1.austin.rr.com (ns1.austin.rr.com [24.93.35.62]) by postgresql.org (8.11.3/8.11.4) with ESMTP id f81439f96700 for ; Sat, 1 Sep 2001 00:03:09 -0400 (EDT) (envelope-from rsanford@nolimitsystems.com) Received: from mightywombat (cs662523-179.houston.rr.com [66.25.23.179]) by ns1.austin.rr.com (8.12.0.Beta16/8.12.0.Beta16) with SMTP id f813x7pX027417 for ; Fri, 31 Aug 2001 22:59:07 -0500 From: "Robert J. Sanford, Jr." To: Subject: Re: [GENERAL] PL/java? Date: Fri, 31 Aug 2001 23:02:04 -0500 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit X-Priority: 3 (Normal) X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook IMO, Build 9.0.2416 (9.0.2910.0) Importance: Normal X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4522.1200 In-Reply-To: Precedence: bulk Sender: pgsql-general-owner@postgresql.org Status: OR note - i don't work for any of the companies whose products are mentioned below. i have performed evaluations of these products and the support provided when attempting to determine what platform my company's systems should run on. unfortunately, i did not choose orion and i am suffering for it now... some goober blathered thusly: > Have you ever actually used Java on an enterprise-level > application? Ever see the Tomcat webserver? It uses > 100MB of memory, drives the load on our server up to 8, > and doesn't serve nearly as fast apache. Do you really > want that in your database? first - don't complain about java because you or someone in your group/department/company made a poor decision on what tools to use. that's like complaining about mexican food when the only experience you have is eating an out- dated frozen burrito from the 7-11 freezer. when looking at the performance of java you have to take a look at two things - first you have to compare various java implementations against each other and then you have to compare the best java implementations against native c/c++ code. the following link does that. the java tests include tomcat, orion, websphere, and resin. jrun and weblogic were originally included in the testing but were both removed at their companies' request. the tests also compare orion vs microsoft asp running on win2k and iis5. all tests run on the same hardware. what i believe these tests clearly demonstrate is that java is not the problem, the implementation applications based on java is. i also do not believe that tomcat is a fair representation of java performance in that it is intended to be a reference implementation. as such, the code base should sacrifice performance for clarity. http://www.orionserver.com/benchmarks/benchmark.html while not in the benchmark i would also like to recommend jetty as an app server. it is an opensource, 100% java web and application server. in its base form it is "just" a web, servlet, and jsp engine. it does, however, have contributed code providing integration with other j2ee opensource projects such as the JBoss EJB engine. you can find the jetty home page at: http://jetty.mortbay.com/ and then they blathered some more: > Compare the speed of Oracle 8 with 8i if you don't > believe me. The stability is also much worse. Ever > see a JVM on any platform that didn't crash if you > looked at it cockeyed? Ever really trust the garbage > collection? I don't. I've found a memory leak in IBM > developed java libraries. Gotta restart that app > every once in a while to reclaim system resources it > gobbled up and never gave back. some mention was made regarding the performance of the oracle8i application server. well, oracle has realized that their performance was sub-optimal and rectified the situation by licensing the orion server for oracle9i. while money and politics most certainly play a part in any licensing arrangement they must also realize that making customers happy through the performance of their applications will lead to more money. the link to the press release is below. http://www.oracle.com/corporate/press/index.html?759347.html all of that being said... i don't think that the person that started this thread did anything wrong by making the request they did. that is what opensource is all about - contributions, even just contributions of ideas, are welcomed. even so, there are several options that i see for getting it implemented: 1) its an open source project so implement it yourself. while i have never worked on modifying the code base i am extremely confident that the current developers will be more than willing to give you advice and pointers. 2) if #1 is not feasible either because you don't have the time, the inclination, or the experience then you can write a contract that will pay one of the postgres developers to implement it for you. 3) if that isn't feasible you can try to get a volunteer to do so. 4) if that isn't feasible then you either have to live with what you have, go elsewhere, or be quiet. to the person that blathered thusly in response to the request for java: > Merits of the language notwithstanding, I'd rather > not have a buggy, still under development > (depreciating everything under the sun with every > new iteration) JVM parasite in my DB. informed and intelligent debate is good. given that i believe such to be true, i would request that you refrain from blathering such vitriol and uninformed nonsense. not only is it for the good of the people on the list who don't want to hear it but it will also do you good by not telling everyone out there that you are a very silly person that doesn't deal with logic and/or facts. to everyone else on the list - if we all contribute a penny we could probably buy enough burritos from 7-11 to make sure that his hands and mouth are busy for a good long while. rjsjr ---------------------------(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-general-owner+M14597@postgresql.org Fri Aug 31 23:23:15 2001 Return-path: Received: from server1.pgsql.org (server1.pgsql.org [64.39.15.238] (may be forged)) by candle.pha.pa.us (8.11.6/8.10.1) with ESMTP id f813NEF20222 for ; Fri, 31 Aug 2001 23:23:14 -0400 (EDT) Received: from postgresql.org (webmail.postgresql.org [216.126.85.28]) by server1.pgsql.org (8.11.6/8.11.6) with ESMTP id f813Njq38048; Fri, 31 Aug 2001 22:23:46 -0500 (CDT) (envelope-from pgsql-general-owner+M14597@postgresql.org) Received: from spider.pilosoft.com (p55-222.acedsl.com [160.79.55.222]) by postgresql.org (8.11.3/8.11.4) with ESMTP id f812Yuf42942 for ; Fri, 31 Aug 2001 22:35:04 -0400 (EDT) (envelope-from alex@pilosoft.com) Received: from localhost (alexmail@localhost) by spider.pilosoft.com (8.9.3/8.9.3) with ESMTP id WAA20075; Fri, 31 Aug 2001 22:35:23 -0400 (EDT) Date: Fri, 31 Aug 2001 22:35:23 -0400 (EDT) From: Alex Pilosov To: Alex Knight cc: pgsql-general@postgresql.org Subject: [WAY OT] Re: [GENERAL] PL/java? In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Precedence: bulk Sender: pgsql-general-owner@postgresql.org Status: OR On Fri, 31 Aug 2001, Alex Knight wrote: > It is generally wiser to split the webservers from the appservers; > that will save on memory footprints from each respectively. That alone > can give each machine a specific task to accomplish... generally more > efficiently. But I would assume you know this. And it is wise to split database from middleware, and not try to saddle PostgreSQL with requirements to support Java in-process. _IF_ java stored procedures are implemented, it should be via something like a) oracle's extproc (start a separate process to load the function) b) some of perl java tools (they start a jdk in a separate process and communicate with it using RMI). Problem with java-pgsql integration is the threads model: Java really really wants threads. Postgres doesn't do threads. So if most simple way is attempted, you will incur overhead of starting up JVM for each backend (a few seconds as opposed to milliseconds) and non-shared 30M of memory per backend (as opposed to currently <3 megs of non-shared memory per backend). > Using something like WebLogic, WebSphere, or Orion would be a wiser > approach. For the company with the low budget, Orion is only something > like $2000, and it has full J2EE support, including EJBs, etc. Try > finding that kind of richness in Tomcat. Also, Orion takes up only > 40-50mb at start, which is really fairly reasonable; ram is cheap > anyways... a server that has to perform complicated algorithms to a > large audience but has hardly any ram shouldn't be on the internet > anyways; unless it can handle it. _ONLY_ 40-50Mb?! Egads, I'm hard pressed to find any other piece of (non-windows, non-java) software that takes 40-50M just to start up! I worked with both CrapLogic and CrapSphere. Weblogic takes 20-60 seconds to start up on P3-800, that, IMHO, is ridiculous. It is not only issue of memory, its easy to throw memory at the problem, its an issue of _incremental use_ of memory. As you scale > I feel that you don't really have enough experience with _java_ to > judge it accurately. Frankly, the JVM is quite small nowadays, > considering the amount of base classes that sit in memory much of the > time. And the JVMs are really much faster these days. Java is still > slow for 2 reasons: 1) Developers who don't optimize their code as > they write it, 2) Bytecode interpretation is and probably never will > be as fast as something like C/C++. But it certainly isn't the JVM > itself slowing it down because of some "extended memory" that it lives > in. Any reasonable server should have absolutely no problems if the > jvm is implemented _properly_ (which many packages do not do), etc. If > you're comparing Java to perl, yes, certainly it's a bit more of a > beast, but perl quite simply can't keep up in speed and feature > richness (when was the last time you secured your perl code in a > redistributable fashion?) _WHY_ the heck do all base classes need to be in memory all the time? Why are they so huge? Libc is _far far_ smaller, and libstdc++ is tiny compared to all the java standard library. You know what the answer to it is: Because they are ALL written in java, as opposed to more sane languages like perl which handcode their "standard libraries" or the most important pieces of them in C. Perl is far faster than java in about any practical application I did. Again, the issue is not speed of JVM versus PP (perl virtual machine), if you did number crunching in perl and java, they would probably be at par. Its an issue of standard libraries. They are _horribly slow_. Perl's hashtables are a very nice piece of optimized C code. Java's hashtables are written in Java. Need I say more? Java's AWT was a dog. Swing is a dog and a half, because they reimplemented all the things that are commonly done in C in Java. > The only mistake the developers can make is poorly implementing the > jvm, but most certainly not Java itself. I've been working on > architecting and building enterprise level sites and applications for > nearly 8 years now, and I've seen too many people try to implement > perl cgi websites for enterprise sites and watch them choke and crawl > to their knees because of poor system resource handling, lack of > scalability, etc... I most certainly don't consider a single webserver > with an appserver and tiny database to be enterprise level either (not > that I'm inferring you said it was). You cannot compare a perl CGI script and a J2EE server. Its like comparing a webserver you wrote yourself vs apache! There are application servers (or more closely, code libraries) for perl that match what J2EE provides. -- Alex Pilosov | http://www.acedsl.com/home.html CTO - Acecape, Inc. | AceDSL:The best ADSL in the world 325 W 38 St. Suite 1005 | (Stealth Marketing Works! :) New York, NY 10018 | ---------------------------(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+M14652=candle.pha.pa.us=pgman@postgresql.org Thu Oct 25 22:24:44 2001 Return-path: Received: from rs.postgresql.org (server1.pgsql.org [64.39.15.238] (may be forged)) by candle.pha.pa.us (8.11.6/8.10.1) with ESMTP id f9Q1Oim04694 for ; Thu, 25 Oct 2001 21:24:44 -0400 (EDT) Received: from postgresql.org (webmail.postgresql.org [216.126.85.28]) by rs.postgresql.org (8.11.6/8.11.6) with ESMTP id f9Q1CeR31737 for ; Thu, 25 Oct 2001 20:21:26 -0500 (CDT) (envelope-from pgsql-hackers-owner+M14652=candle.pha.pa.us=pgman@postgresql.org) Received: from smaug.polygnosis.com (smaug.polygnosis.com [195.139.160.201]) by postgresql.org (8.11.3/8.11.4) with ESMTP id f9Q16NP39474 for ; Thu, 25 Oct 2001 21:06:23 -0400 (EDT) (envelope-from gunnar@smaug.polygnosis.com) Received: (from gunnar@localhost) by smaug.polygnosis.com (8.11.0/8.11.0) id f9Q15nC01560; Fri, 26 Oct 2001 03:05:49 +0200 To: tweekie cc: pgsql-hackers@postgresql.org Subject: Re: [HACKERS] java virtual machine References: <3bd825e2_1@Usenet.com> From: Gunnar =?iso-8859-1?q?R=F8nning?= Date: 26 Oct 2001 03:05:49 +0200 In-Reply-To: <3bd825e2_1@Usenet.com> Message-ID: Lines: 19 User-Agent: Gnus/5.0808 (Gnus v5.8.8) Emacs/20.7 MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Precedence: bulk Sender: pgsql-hackers-owner@postgresql.org Status: OR * tweekie wrote: | | I asked this question a while back but got no response - is there any way of | creating a Java stored procedure in a postgres database ? I can see that | there is a built-in PL/sql type of environment and a python one but it would | be nice if I could migrate Java stored procedures in an Oracle database into | postgres. | | Any comments? It would rock ;-) An Hungarian guy just sent a mail indicating that he had a first prototype version of something with Kaffe up and running. But I believe there is a lot of issues to be solved, especially threading issues... -- Gunnar Rønning - gunnar@polygnosis.com Senior Consultant, Polygnosis AS, http://www.polygnosis.com/ ---------------------------(end of broadcast)--------------------------- TIP 5: Have you checked our extensive FAQ? http://www.postgresql.org/users-lounge/docs/faq.html From pgsql-general-owner+M18147=candle.pha.pa.us=pgman@postgresql.org Mon Dec 3 13:53:24 2001 Return-path: 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 fB3IrNS29264 for ; Mon, 3 Dec 2001 13:53:24 -0500 (EST) Received: from rs.postgresql.org (server1.pgsql.org [64.39.15.238] (may be forged)) by west.navpoint.com (8.11.6/8.10.1) with ESMTP id fB3IrO213373 for ; Mon, 3 Dec 2001 13:53:24 -0500 (EST) Received: from postgresql.org (postgresql.org [64.49.215.8]) by rs.postgresql.org (8.11.6/8.11.6) with ESMTP id fB3Iq1N35610 for ; Mon, 3 Dec 2001 12:52:02 -0600 (CST) (envelope-from pgsql-general-owner+M18147=candle.pha.pa.us=pgman@postgresql.org) Received: from tiger.tigrasoft (fw.tigrasoft.hu [195.70.42.161]) by postgresql.org (8.11.3/8.11.4) with ESMTP id fAU95km73601 for ; Fri, 30 Nov 2001 04:05:46 -0500 (EST) (envelope-from hornyakl@freemail.hu) Received: from freemail.hu ([192.168.0.200]) by tiger.tigrasoft (8.9.3/8.9.3/Debian 8.9.3-21) with ESMTP id KAA11457 for ; Fri, 30 Nov 2001 10:05:45 +0100 X-Authentication-Warning: tiger.tigrasoft: Host [192.168.0.200] claimed to be freemail.hu Message-ID: <3C074DE4.9040905@freemail.hu> Date: Fri, 30 Nov 2001 10:14:12 +0100 From: Laszlo Hornyak Reply-To: hornyakl@users.sourceforge.net User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.4) Gecko/20010913 X-Accept-Language: hu, en-us MIME-Version: 1.0 To: pgsql-general@postgresql.org Subject: [GENERAL] java stored procedures Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Precedence: bulk Sender: pgsql-general-owner@postgresql.org Status: OR Hi! A few months ago I asked if anyone started working on PL/JAVA, the ansver was no. Now I started to write a java stored procedure language and environment for PostgreSQL. Some code is already working, and it is geting interresting. So, I would like to ask you to write me your ideas, suggestions, etc for this environment. The source code will be available under GPL when it is worth for distributing it (this will take for a while). thanks. Laszlo Hornyak ---------------------------(end of broadcast)--------------------------- TIP 4: Don't 'kill -9' the postmaster From pgsql-general-owner+M18182=candle.pha.pa.us=pgman@postgresql.org Tue Dec 4 13:14:09 2001 Return-path: 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 fB4IE3r15972 for ; Tue, 4 Dec 2001 13:14:04 -0500 (EST) Received: from rs.postgresql.org (server1.pgsql.org [64.39.15.238] (may be forged)) by west.navpoint.com (8.11.6/8.10.1) with ESMTP id fB4IE2Y07122 for ; Tue, 4 Dec 2001 13:14:02 -0500 (EST) Received: from postgresql.org (postgresql.org [64.49.215.8]) by rs.postgresql.org (8.11.6/8.11.6) with ESMTP id fB4I9HN76662 for ; Tue, 4 Dec 2001 12:09:17 -0600 (CST) (envelope-from pgsql-general-owner+M18182=candle.pha.pa.us=pgman@postgresql.org) Received: from belphigor.mcnaught.org ([216.151.155.121]) by postgresql.org (8.11.3/8.11.4) with ESMTP id fB4Hwsm96365; Tue, 4 Dec 2001 12:58:59 -0500 (EST) (envelope-from doug@wireboard.com) Received: (from doug@localhost) by belphigor.mcnaught.org (8.11.6/8.9.3) id fB4Hwlo07786; Tue, 4 Dec 2001 12:58:47 -0500 X-Authentication-Warning: belphigor.mcnaught.org: doug set sender to doug@wireboard.com using -f To: Barry Lind cc: Laszlo Hornyak , pgsql-general@postgresql.org, pgsql-jdbc@postgresql.org Subject: Re: [GENERAL] java stored procedures References: <3C074DE4.9040905@freemail.hu> <3C0BE325.3020809@xythos.com> <3C0C937E.9000405@freemail.hu> <3C0CFD82.1030600@xythos.com> From: Doug McNaught Date: 04 Dec 2001 12:58:47 -0500 In-Reply-To: Barry Lind's message of "Tue, 04 Dec 2001 08:44:50 -0800" Message-ID: Lines: 42 User-Agent: Gnus/5.0806 (Gnus v5.8.6) XEmacs/21.1 (20 Minutes to Nikko) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Precedence: bulk Sender: pgsql-general-owner@postgresql.org Status: OR Barry Lind writes: > Having one jvm that all the postgres backend processes communicate with makes > the whole feature much more complicated, but is necessary in my opinion. Agreed. Also, the JVM is a multithreaded app, and running it inside a non-threaded program (the backend) might cause problems. > Then the question becomes how does the jvm process interact with the database > since they are two different processes. You will need some sort of > interprocess communication between the two to execute sql statements. This > could be accomplished by using the existing jdbc driver. But the bigest > problem here is getting the transaction semantics right. How does a sql > statement being run by a java stored procedure get access to the same > connection/transaction as the original client? What you don't want happening > is that sql issued in a stored java procedure executes in a different > transaction as the caller, what would rollback of the stored function call > mean in that case? I think you would have to to expose the SPI layer to Java running in a separate process, either using an RMI server written in C or a custom protocol over a TCP socket (Java of course can't do Unix sockets). This raises some thorny issues of authentication and security but I don't think they're insurmountable. You could, for example, create a cryptographically strong "cookie" in the backend when a Java function is called. The cookie would be passed to the Java function when it gets invoked, and then must be passed back to the SPI layer in order for the latter to accept the call. A bit clunky but should be safe as far as I can see. The cookie would be needed anyhow, I think, in order for the SPI layer to be able to find the transaction that the Java function was originally invoked in. You could make the SPI layer stuff look like a normal JDBC driver to user code--PL/Perl does this kind of thing with the Perl DBI interface. -Doug -- Let us cross over the river, and rest under the shade of the trees. --T. J. Jackson, 1863 ---------------------------(end of broadcast)--------------------------- TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org From pgsql-jdbc-owner+M2545@postgresql.org Tue Dec 4 12:49:03 2001 Return-path: 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 fB4Hn1r09487 for ; Tue, 4 Dec 2001 12:49:01 -0500 (EST) Received: from rs.postgresql.org (server1.pgsql.org [64.39.15.238] (may be forged)) by west.navpoint.com (8.11.6/8.10.1) with ESMTP id fB4HmxY25870 for ; Tue, 4 Dec 2001 12:48:59 -0500 (EST) Received: from postgresql.org (postgresql.org [64.49.215.8]) by rs.postgresql.org (8.11.6/8.11.6) with ESMTP id fB4HiLN75867; Tue, 4 Dec 2001 11:44:21 -0600 (CST) (envelope-from pgsql-jdbc-owner+M2545@postgresql.org) Received: from barry.xythos.com ([64.139.0.223]) by postgresql.org (8.11.3/8.11.4) with ESMTP id fB4H9bm94568; Tue, 4 Dec 2001 12:09:38 -0500 (EST) (envelope-from barry@xythos.com) Received: from xythos.com (localhost.localdomain [127.0.0.1]) by barry.xythos.com (8.11.6/8.11.6) with ESMTP id fB4Gior02314; Tue, 4 Dec 2001 08:44:50 -0800 Message-ID: <3C0CFD82.1030600@xythos.com> Date: Tue, 04 Dec 2001 08:44:50 -0800 From: Barry Lind User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.6) Gecko/20011120 X-Accept-Language: en-us MIME-Version: 1.0 To: Laszlo Hornyak cc: pgsql-general@postgresql.org, pgsql-jdbc@postgresql.org Subject: Re: [JDBC] [GENERAL] java stored procedures References: <3C074DE4.9040905@freemail.hu> <3C0BE325.3020809@xythos.com> <3C0C937E.9000405@freemail.hu> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Precedence: bulk Sender: pgsql-jdbc-owner@postgresql.org Status: OR Laszlo, I think it would help a lot if you could take a little time to write down what your planned architecture for a pljava would be. It then becomes much easier for myself and probably others reading these lists to make suggestions on ways to improve what you are planning (or possible problems with your strategy). Without knowing what exactly you are thinking of doing it is difficult to comment. But let me try throwing out a few thoughts about how I think this should be done. First question is how will the jvm be run? Since postgres is a multiprocess implementation (i.e. each connection has a separate process on the server) and since java is a multithreaded implementation (i.e. one process supporting multiple threads), what should the pljava implementation look like? I think there should be a single jvm process for the entire db server that each postgresql process connects to through sockets/rmi. It will be too expensive to create a new jvm process for each postgresql connection (expensive in both terms of memory and cpu, since the startup time for the jvm is significant and it requires a lot of memory). Having one jvm that all the postgres backend processes communicate with makes the whole feature much more complicated, but is necessary in my opinion. Then the question becomes how does the jvm process interact with the database since they are two different processes. You will need some sort of interprocess communication between the two to execute sql statements. This could be accomplished by using the existing jdbc driver. But the bigest problem here is getting the transaction semantics right. How does a sql statement being run by a java stored procedure get access to the same connection/transaction as the original client? What you don't want happening is that sql issued in a stored java procedure executes in a different transaction as the caller, what would rollback of the stored function call mean in that case? I am very interested in hearing what your plans are for pl/java. I think this is a very difficult project, but one that would be very useful and welcome. thanks, --Barry Laszlo Hornyak wrote: > Hi! > > I am such a lame in the licensing area. As much as I know, BSD license > is more free than GPL. I think it is too early to think about licensing, > but it`s ok, you won :), when it will be ready(or it will seem to get > closer to a working thing, currently it looks more like a interresting > test), I will ask you if you want to distribute it with Postgres, and if > you say yes, the license will be the same as Postgresql`s license. > Anyway is this neccessary when it is the part of the distribution? > Is this ok for you? > > thanks, > Laszlo Hornyak > > ps: still waiting for your ideas, suggestions, etc :) I am not memeber > of the mailing list, please write me dirrectly! > > Barry Lind wrote: > >> Laszlo, >> >> In my mind it would be more useful if this code was under the same >> license as the rest of postgresql. That way it could become part of >> the product as opposed to always being a separate component. (Just >> like plpgsql, pltcl and the other procedural languages). >> >> thanks, >> --Barry >> >> > > ---------------------------(end of broadcast)--------------------------- TIP 4: Don't 'kill -9' the postmaster From pgsql-jdbc-owner+M2555@postgresql.org Thu Dec 6 10:16:31 2001 Return-path: 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 fB6FGUZ29382 for ; Thu, 6 Dec 2001 10:16:30 -0500 (EST) Received: from rs.postgresql.org (server1.pgsql.org [64.39.15.238] (may be forged)) by west.navpoint.com (8.11.6/8.10.1) with ESMTP id fB6FGTE25863 for ; Thu, 6 Dec 2001 10:16:29 -0500 (EST) Received: from postgresql.org (postgresql.org [64.49.215.8]) by rs.postgresql.org (8.11.6/8.11.6) with ESMTP id fB6F9lN55201; Thu, 6 Dec 2001 09:09:48 -0600 (CST) (envelope-from pgsql-jdbc-owner+M2555@postgresql.org) Received: from tiger.tigrasoft (fw.tigrasoft.hu [195.70.42.161]) by postgresql.org (8.11.3/8.11.4) with ESMTP id fB4JB2m99252; Tue, 4 Dec 2001 14:11:03 -0500 (EST) (envelope-from hornyakl@freemail.hu) Received: from freemail.hu ([192.168.0.200]) by tiger.tigrasoft (8.9.3/8.9.3/Debian 8.9.3-21) with ESMTP id UAA07040; Tue, 4 Dec 2001 20:10:17 +0100 X-Authentication-Warning: tiger.tigrasoft: Host [192.168.0.200] claimed to be freemail.hu Message-ID: <3C0D219C.1090804@freemail.hu> Date: Tue, 04 Dec 2001 20:18:52 +0100 From: Laszlo Hornyak Reply-To: hornyakl@users.sourceforge.net User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.4) Gecko/20010913 X-Accept-Language: hu, en-us MIME-Version: 1.0 To: Barry Lind cc: pgsql-general@postgresql.org, pgsql-jdbc@postgresql.org Subject: Re: [JDBC] [GENERAL] java stored procedures References: <3C074DE4.9040905@freemail.hu> <3C0BE325.3020809@xythos.com> <3C0C937E.9000405@freemail.hu> <3C0CFD82.1030600@xythos.com> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Precedence: bulk Sender: pgsql-jdbc-owner@postgresql.org Status: OR Hi! Barry Lind wrote: > Laszlo, > > I think it would help a lot if you could take a little time to write > down what your planned architecture for a pljava would be. It then > becomes much easier for myself and probably others reading these lists > to make suggestions on ways to improve what you are planning (or > possible problems with your strategy). Without knowing what exactly > you are thinking of doing it is difficult to comment. > > > But let me try throwing out a few thoughts about how I think this > should be done. > > First question is how will the jvm be run? Since postgres is a > multiprocess implementation (i.e. each connection has a separate > process on the server) and since java is a multithreaded > implementation (i.e. one process supporting multiple threads), what > should the pljava implementation look like? I think there should be a > single jvm process for the entire db server that each postgresql > process connects to through sockets/rmi. It will be too expensive to > create a new jvm process for each postgresql connection (expensive in > both terms of memory and cpu, since the startup time for the jvm is > significant and it requires a lot of memory). I absolutely agree. OK, it`s done. So, a late-night-brainstorming here: What I would like to see in PL/JAVA is the object oriented features, that makes postgresql nice. Creating a new table creates a new class in the java side too. Instantiating an object of the newly created class inserts a row into the table. In postgresql tables can be inherited, and this could be easyly done by pl/java too. I think this would look nice. But this is not the main feature. Why I would like to see a nice java procedural language inside postgres is java`s advanced communication features (I mean CORBA, jdbc, other protocols). This is the sugar in the caffe. I am very far from features like this. PL/JAVA now: -there is a separate process running java (kaffe). this process creates a sys v message queue, that holds requests. almost forgot, a shared memory segment too. I didn`t find better way to tell postgres the informations about the java process. -the java request_handler function on the server side attaches to the shared memory, reads the key of the message queue., attaches to it, sends the data of the function, and a signal for the pl/java. after, it is waiting for a signal from the java thread. -when java thread receives the signal, it reads the message(s) from the queue, and starts some actions. When done it tells postgres with a signal that it is ready, and it can come for its results. This will be rewritten see below problems. -And postgres is runing, while java is waiting for postgres to say something. Threading on the java process side is not done yet, ok, it is not that hard, I will write it, if it will be realy neccessary. The problems, for now: I had a very simple system, that passed a very limited scale of argument types, with a very limited quantity of parameters (int, varchar, bool). Postgres has limits for the argument count too, but not for types. It had too much limits, so I am working (or to tell the truth now only thinking) on a new type handling that fits the felxibility of Postgresql`s type flexibility. For this I will have to learn a lot about Postgres`s type system. This will be my program this weekend. :) thanks, Laszlo Hornyak ---------------------------(end of broadcast)--------------------------- TIP 5: Have you checked our extensive FAQ? http://www.postgresql.org/users-lounge/docs/faq.html From pgsql-jdbc-owner+M2549@postgresql.org Tue Dec 4 22:34:48 2001 Return-path: 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 fB53Ykr17433 for ; Tue, 4 Dec 2001 22:34:47 -0500 (EST) Received: from rs.postgresql.org (server1.pgsql.org [64.39.15.238] (may be forged)) by west.navpoint.com (8.11.6/8.10.1) with ESMTP id fB53YkY26794 for ; Tue, 4 Dec 2001 22:34:46 -0500 (EST) Received: from postgresql.org (postgresql.org [64.49.215.8]) by rs.postgresql.org (8.11.6/8.11.6) with ESMTP id fB53UcN93073; Tue, 4 Dec 2001 21:30:38 -0600 (CST) (envelope-from pgsql-jdbc-owner+M2549@postgresql.org) Received: from barry.xythos.com (h-64-105-36-191.SNVACAID.covad.net [64.105.36.191]) by postgresql.org (8.11.3/8.11.4) with ESMTP id fB53Obm35215; Tue, 4 Dec 2001 22:24:37 -0500 (EST) (envelope-from barry@xythos.com) Received: from xythos.com (localhost.localdomain [127.0.0.1]) by barry.xythos.com (8.11.6/8.11.6) with ESMTP id fB51YLJ03883; Tue, 4 Dec 2001 17:34:21 -0800 Message-ID: <3C0D799D.4010808@xythos.com> Date: Tue, 04 Dec 2001 17:34:21 -0800 From: Barry Lind User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.6) Gecko/20011120 X-Accept-Language: en-us MIME-Version: 1.0 To: hornyakl@users.sourceforge.net cc: pgsql-general@postgresql.org, pgsql-jdbc@postgresql.org Subject: Re: [JDBC] [GENERAL] java stored procedures References: <3C074DE4.9040905@freemail.hu> <3C0BE325.3020809@xythos.com> <3C0C937E.9000405@freemail.hu> <3C0CFD82.1030600@xythos.com> <3C0D219C.1090804@freemail.hu> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Precedence: bulk Sender: pgsql-jdbc-owner@postgresql.org Status: OR Laszlo, > I am very far from features like this. > PL/JAVA now: > -there is a separate process running java (kaffe). this process creates > a sys v message queue, that holds requests. almost forgot, a shared > memory segment too. I didn`t find better way to tell postgres the > informations about the java process. Does the mechanism you are planning support running any JVM? In my opionion Kaffe isn't good enough to be widely useful. I think you should be able to plugin whatever jvm is best on your platform, which will likely be either the Sun or IBM JVMs. Also, can you explain this a little bit more. How does the jvm process get started? (I would hope that the postgresql server processes would start it when needed, as opposed to requiring that it be started separately.) How does the jvm access these shared memory structures? Since there aren't any methods in the java API to do such things that I am aware of. > -the java request_handler function on the server side attaches to the > shared memory, reads the key of the message queue., attaches to it, > sends the data of the function, and a signal for the pl/java. after, it > is waiting for a signal from the java thread. I don't understand how you do this in java? I must not be understanding something correctly here. > -when java thread receives the signal, it reads the message(s) from the > queue, and starts some actions. When done it tells postgres with a > signal that it is ready, and it can come for its results. This will be > rewritten see below problems. Are signals the best way to accomplish this? > -And postgres is runing, while java is waiting for postgres to say > something. But in reality if the postgres process is executing a stored function it needs to wait for the result of that function call before continuing doesn't it? > > Threading on the java process side is not done yet, ok, it is not that > hard, I will write it, if it will be realy neccessary. Agreed, this is important. > > The problems, for now: > I had a very simple system, that passed a very limited scale of argument > types, with a very limited quantity of parameters (int, varchar, bool). > Postgres has limits for the argument count too, but not for types. It > had too much limits, so I am working (or to tell the truth now only > thinking) on a new type handling that fits the felxibility of > Postgresql`s type flexibility. For this I will have to learn a lot about > Postgres`s type system. This will be my program this weekend. :) Shouldn't this code use all or most of the logic found in the FE/BE protocol? Why invent and code another mechanism to transfer data when one already exists. (I will admit that the current FE/BE mechanism isn't the ideal choice, but it seems easier to reuse what exists for now and improve on it later). > > thanks, > Laszlo Hornyak > You didn't mention how you plan to deal with the transaction symantics. So what happens when the pl/java function calls through jdbc back to the server to insert some data? That should happen in the same transaction as the caller correct? thanks, --Barry ---------------------------(end of broadcast)--------------------------- TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org From pgsql-jdbc-owner+M2559@postgresql.org Thu Dec 6 10:18:55 2001 Return-path: 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 fB6FIrZ29672 for ; Thu, 6 Dec 2001 10:18:54 -0500 (EST) Received: from rs.postgresql.org (server1.pgsql.org [64.39.15.238] (may be forged)) by west.navpoint.com (8.11.6/8.10.1) with ESMTP id fB6FIrE26972 for ; Thu, 6 Dec 2001 10:18:53 -0500 (EST) Received: from postgresql.org (postgresql.org [64.49.215.8]) by rs.postgresql.org (8.11.6/8.11.6) with ESMTP id fB6F9nN55205; Thu, 6 Dec 2001 09:09:49 -0600 (CST) (envelope-from pgsql-jdbc-owner+M2559@postgresql.org) Received: from tiger.tigrasoft (fw.tigrasoft.hu [195.70.42.161]) by postgresql.org (8.11.3/8.11.4) with ESMTP id fB58wVm49422; Wed, 5 Dec 2001 03:58:31 -0500 (EST) (envelope-from hornyakl@freemail.hu) Received: from freemail.hu ([192.168.0.200]) by tiger.tigrasoft (8.9.3/8.9.3/Debian 8.9.3-21) with ESMTP id JAA12365; Wed, 5 Dec 2001 09:57:35 +0100 X-Authentication-Warning: tiger.tigrasoft: Host [192.168.0.200] claimed to be freemail.hu Message-ID: <3C0DE382.1050400@freemail.hu> Date: Wed, 05 Dec 2001 10:06:10 +0100 From: Laszlo Hornyak Reply-To: hornyakl@users.sourceforge.net User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.4) Gecko/20010913 X-Accept-Language: hu, en-us MIME-Version: 1.0 To: Barry Lind cc: hornyakl@users.sourceforge.net, pgsql-general@postgresql.org, pgsql-jdbc@postgresql.org Subject: Re: [JDBC] [GENERAL] java stored procedures References: <3C074DE4.9040905@freemail.hu> <3C0BE325.3020809@xythos.com> <3C0C937E.9000405@freemail.hu> <3C0CFD82.1030600@xythos.com> <3C0D219C.1090804@freemail.hu> <3C0D799D.4010808@xythos.com> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Precedence: bulk Sender: pgsql-jdbc-owner@postgresql.org Status: OR Hi! Barry Lind wrote: > Does the mechanism you are planning support running any JVM? In my > opionion Kaffe isn't good enough to be widely useful. I think you > should be able to plugin whatever jvm is best on your platform, which > will likely be either the Sun or IBM JVMs. Ok, I also had problems with caffe, but it may work. I like it becouse it is small (the source is about 6M). As much as I know Java VM`s has a somewhat standard native interface called JNI. I use this to start the VM, and communicate with it. If you think I should change I will do it, but it may take a long time to get the new VM. For then I have to run kaffe. > Also, can you explain this a little bit more. How does the jvm > process get started? (I would hope that the postgresql server > processes would start it when needed, as opposed to requiring that it > be started separately.) How does the jvm access these shared memory > structures? Since there aren't any methods in the java API to do such > things that I am aware of. JVM does not. 'the java process' does with simple posix calls. I use debian potatoe, on any other posix system it should work, on any other somewhat posix compatible system it may work, I am not sure... > > I don't understand how you do this in java? I must not be > understanding something correctly here. My failure. The 'java request_handler' is not a java function, it is the C call_handler in the Postgres side, that is started when a function of language 'pljava' is called. I made some failure in my previous mail. At home I named the pl/java language pl/pizza (something that is not caffe, but well known enough :). The application has two running binaries: -pizza (which was called 'java process' last time) This is a small C program that uses JNI to start VM and call java methods. -plpizza.so the shared object that contains the call_handler function. > > >> -when java thread receives the signal, it reads the message(s) from >> the queue, and starts some actions. When done it tells postgres with >> a signal that it is ready, and it can come for its results. This will >> be rewritten see below problems. > > > > Are signals the best way to accomplish this? I don`t know if it is the best, it is the only way I know :) Do you know any other ways? > > >> -And postgres is runing, while java is waiting for postgres to say >> something. > > But in reality if the postgres process is executing a stored function > it needs to wait for the result of that function call before > continuing doesn't it? Surely, this is done. How could Postgres tell the result anyway ? :) > >> >> Threading on the java process side is not done yet, ok, it is not >> that hard, I will write it, if it will be realy neccessary. > > Agreed, this is important. > > Shouldn't this code use all or most of the logic found in the FE/BE > protocol? Why invent and code another mechanism to transfer data when > one already exists. (I will admit that the current FE/BE mechanism > isn't the ideal choice, but it seems easier to reuse what exists for > now and improve on it later). Well, I am relatively new to Postgres, and I don`t know these protocols. In the weekend I will start to learn it, and in Sunday or Monday I maybe I will understand it, if not, next weekend.. > > You didn't mention how you plan to deal with the transaction > symantics. So what happens when the pl/java function calls through > jdbc back to the server to insert some data? That should happen in > the same transaction as the caller correct? I don`t think this will be a problem, I have ideas for this. Idea mean: I know how I will start it, it may be good, or it may be fataly stupid idea, it will turn out when I tried it. Simply: The same way plpizza tells pizza the request, pizza can talk back to plpizza. This is planed to work with similar mechanism I described last time (shm+signals). Monday I will try to send a little pieces of code to make thing clear, ok? thanks, Laszlo Hornyak ---------------------------(end of broadcast)--------------------------- TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org From pgsql-jdbc-owner+M2567@postgresql.org Thu Dec 6 12:05:50 2001 Return-path: 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 fB6H5nZ07357 for ; Thu, 6 Dec 2001 12:05:49 -0500 (EST) Received: from rs.postgresql.org (server1.pgsql.org [64.39.15.238] (may be forged)) by west.navpoint.com (8.11.6/8.10.1) with ESMTP id fB6H5ma17427 for ; Thu, 6 Dec 2001 12:05:48 -0500 (EST) Received: from postgresql.org (postgresql.org [64.49.215.8]) by rs.postgresql.org (8.11.6/8.11.6) with ESMTP id fB6H1DN59312; Thu, 6 Dec 2001 11:01:13 -0600 (CST) (envelope-from pgsql-jdbc-owner+M2567@postgresql.org) Received: from barry.xythos.com (h-64-105-36-191.SNVACAID.covad.net [64.105.36.191]) by postgresql.org (8.11.3/8.11.4) with ESMTP id fB6Gtsm73872; Thu, 6 Dec 2001 11:55:55 -0500 (EST) (envelope-from barry@xythos.com) Received: from xythos.com (localhost.localdomain [127.0.0.1]) by barry.xythos.com (8.11.6/8.11.6) with ESMTP id fB5HWJ902835; Wed, 5 Dec 2001 09:32:19 -0800 Message-ID: <3C0E5A23.7060701@xythos.com> Date: Wed, 05 Dec 2001 09:32:19 -0800 From: Barry Lind User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.6) Gecko/20011120 X-Accept-Language: en-us MIME-Version: 1.0 To: hornyakl@users.sourceforge.net cc: pgsql-hackers@postgresql.org, pgsql-jdbc@postgresql.org Subject: Re: [JDBC] [GENERAL] java stored procedures References: <3C074DE4.9040905@freemail.hu> <3C0BE325.3020809@xythos.com> <3C0C937E.9000405@freemail.hu> <3C0CFD82.1030600@xythos.com> <3C0D219C.1090804@freemail.hu> <3C0D799D.4010808@xythos.com> <3C0DE382.1050400@freemail.hu> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Precedence: bulk Sender: pgsql-jdbc-owner@postgresql.org Status: OR Laszlo, I have cc'ed the hackers mail list since that group of developers is probably better able than I to make suggestions on the best interprocess communication mechanism to use for this. See http://archives2.us.postgresql.org/pgsql-general/2001-12/msg00092.php for background on this thread. I also stopped cc'ing the general list, since this is getting too detailed for most of the members on that list. Now to your mail: Laszlo Hornyak wrote: > Hi! > > Barry Lind wrote: > >> Does the mechanism you are planning support running any JVM? In my >> opionion Kaffe isn't good enough to be widely useful. I think you >> should be able to plugin whatever jvm is best on your platform, which >> will likely be either the Sun or IBM JVMs. > > > Ok, I also had problems with caffe, but it may work. I like it becouse > it is small (the source is about 6M). As much as I know Java VM`s has a > somewhat standard native interface called JNI. I use this to start the > VM, and communicate with it. If you think I should change I will do it, > but it may take a long time to get the new VM. For then I have to run > kaffe. > This seems like a reasonable approach and should work across different JVMs. It would probably be a good experiment to try this with the Sun or IBM jvm at some point to verify. What I was afraid of was that you were hacking the Kaffe code to perform the integration which would limit this solution to only using Kaffe. >> Also, can you explain this a little bit more. How does the jvm >> process get started? (I would hope that the postgresql server >> processes would start it when needed, as opposed to requiring that it >> be started separately.) How does the jvm access these shared memory >> structures? Since there aren't any methods in the java API to do such >> things that I am aware of. > > > JVM does not. 'the java process' does with simple posix calls. I use > debian potatoe, on any other posix system it should work, on any other > somewhat posix compatible system it may work, I am not sure... > >> >> I don't understand how you do this in java? I must not be >> understanding something correctly here. > > > My failure. > The 'java request_handler' is not a java function, it is the C > call_handler in the Postgres side, that is started when a function of > language 'pljava' is called. > I made some failure in my previous mail. At home I named the pl/java > language pl/pizza (something that is not caffe, but well known enough > :). The application has two running binaries: > -pizza (which was called 'java process' last time) This is a small C > program that uses JNI to start VM and call java methods. > -plpizza.so the shared object that contains the call_handler function. > Just a suggestion: PL/J might be a good name, since as you probably know it can't be called pl/java because of the trademark restrictions on the word 'java'. I am a little concerned about the stability and complexity of having this '-pizza' program be responsible for handling the calls on the java side. My concern is that this will need to be a multithreaded program since multiple backends will concurrently be needing to interact with multiple java threads through this one program. It might be simpler if each postgres process directly communicated to a java thread via a tcpip socket. Then the "-pizza" program would only need to be responsible for starting up the jvm and creating java threads and sockets for a postgres process (it would perform a similar role to postmaster for postgres client connections). > >> >> >>> -when java thread receives the signal, it reads the message(s) from >>> the queue, and starts some actions. When done it tells postgres with >>> a signal that it is ready, and it can come for its results. This will >>> be rewritten see below problems. >> >> >> >> >> Are signals the best way to accomplish this? > > > I don`t know if it is the best, it is the only way I know :) > Do you know any other ways? > I don't know, but hopefully someone on the hackers list will chip in here with a comment. >> >>> >>> Threading on the java process side is not done yet, ok, it is not >>> that hard, I will write it, if it will be realy neccessary. >> >> >> Agreed, this is important. >> >> Shouldn't this code use all or most of the logic found in the FE/BE >> protocol? Why invent and code another mechanism to transfer data when >> one already exists. (I will admit that the current FE/BE mechanism >> isn't the ideal choice, but it seems easier to reuse what exists for >> now and improve on it later). > > > Well, I am relatively new to Postgres, and I don`t know these protocols. > In the weekend I will start to learn it, and in Sunday or Monday I maybe > I will understand it, if not, next weekend.. > >> >> You didn't mention how you plan to deal with the transaction >> symantics. So what happens when the pl/java function calls through >> jdbc back to the server to insert some data? That should happen in >> the same transaction as the caller correct? > > > I don`t think this will be a problem, I have ideas for this. Idea mean: > I know how I will start it, it may be good, or it may be fataly stupid > idea, it will turn out when I tried it. Simply: The same way plpizza > tells pizza the request, pizza can talk back to plpizza. This is planed > to work with similar mechanism I described last time (shm+signals). > OK, so the same backend process that called the function gets messaged to process the sql. This should work. However it means you will need a special version of the jdbc driver that uses this shm+signals communication mechanism instead of what the current jdbc driver does. This is something I would be happy to help you with. ---------------------------(end of broadcast)--------------------------- TIP 5: Have you checked our extensive FAQ? http://www.postgresql.org/users-lounge/docs/faq.html From pgsql-hackers-owner+M16317=candle.pha.pa.us=pgman@postgresql.org Thu Dec 6 10:11:27 2001 Return-path: 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 fB6FBQZ28795 for ; Thu, 6 Dec 2001 10:11:26 -0500 (EST) Received: from rs.postgresql.org (server1.pgsql.org [64.39.15.238] (may be forged)) by west.navpoint.com (8.11.6/8.10.1) with ESMTP id fB6FBPE23613 for ; Thu, 6 Dec 2001 10:11:25 -0500 (EST) Received: from postgresql.org (postgresql.org [64.49.215.8]) by rs.postgresql.org (8.11.6/8.11.6) with ESMTP id fB6F5MR55091 for ; Thu, 6 Dec 2001 09:08:01 -0600 (CST) (envelope-from pgsql-hackers-owner+M16317=candle.pha.pa.us=pgman@postgresql.org) Received: from tiger.tigrasoft (fw.tigrasoft.hu [195.70.42.161]) by postgresql.org (8.11.3/8.11.4) with ESMTP id fB5JWMm92521; Wed, 5 Dec 2001 14:32:26 -0500 (EST) (envelope-from hornyakl@freemail.hu) Received: from freemail.hu ([192.168.0.200]) by tiger.tigrasoft (8.9.3/8.9.3/Debian 8.9.3-21) with ESMTP id UAA20333; Wed, 5 Dec 2001 20:30:51 +0100 X-Authentication-Warning: tiger.tigrasoft: Host [192.168.0.200] claimed to be freemail.hu Message-ID: <3C0E77F0.5030904@freemail.hu> Date: Wed, 05 Dec 2001 20:39:28 +0100 From: Laszlo Hornyak Reply-To: hornyakl@users.sourceforge.net User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.4) Gecko/20010913 X-Accept-Language: hu, en-us MIME-Version: 1.0 To: Barry Lind , pgsql-hackers@postgresql.org, pgsql-jdbc@postgresql.org Subject: Re: [HACKERS] [GENERAL] java stored procedures References: <3C074DE4.9040905@freemail.hu> <3C0BE325.3020809@xythos.com> <3C0C937E.9000405@freemail.hu> <3C0CFD82.1030600@xythos.com> <3C0D219C.1090804@freemail.hu> <3C0D799D.4010808@xythos.com> <3C0DE382.1050400@freemail.hu> <3C0E5A23.7060701@xythos.com> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Precedence: bulk Sender: pgsql-hackers-owner@postgresql.org Status: OR Barry Lind wrote: > > I also stopped cc'ing the general list, since this is getting too > detailed for most of the members on that list. Ok. > Now to your mail: > > This seems like a reasonable approach and should work across different > JVMs. It would probably be a good experiment to try this with the Sun > or IBM jvm at some point to verify. What I was afraid of was that you > were hacking the Kaffe code to perform the integration which would > limit this solution to only using Kaffe. I am sure they wont work the same way. I think I have a sun jdk 1.3.0-2, so I will try to port it soon. The IBM implementation must wait I think until january. > > Just a suggestion: PL/J might be a good name, since as you probably > know it can't be called pl/java because of the trademark restrictions > on the word 'java'. Ok, you won, I do not read the licenses. From now it`s name is pl/j. Isn`t 'j' too short for the name of the process that runns java? :) > > I am a little concerned about the stability and complexity of having > this '-pizza' program be responsible for handling the calls on the > java side. My concern is that this will need to be a multithreaded > program since multiple backends will concurrently be needing to > interact with multiple java threads through this one program. It > might be simpler if each postgres process directly communicated to a > java thread via a tcpip socket. Then the "-pizza" program would only > need to be responsible for starting up the jvm and creating java > threads and sockets for a postgres process (it would perform a similar > role to postmaster for postgres client connections). With good design we can solve stability problems. As much as I know, if postmaster dies, the postgres server becomes unavailable, this looks the same problem. I do not know if we realy need sockets. Anyway, if 'j' dies, we can create a new one, and restart calculations. Some watchdog functionality... Doing thing with sockets need a lot of rework. It is the best time for this, while there is not too much thing done. >>> >>>> -when java thread receives the signal, it reads the message(s) from >>>> the queue, and starts some actions. When done it tells postgres >>>> with a signal that it is ready, and it can come for its results. >>>> This will be rewritten see below problems. >>> >>> Are signals the best way to accomplish this? >> >> I don`t know if it is the best, it is the only way I know :) >> Do you know any other ways? >> > I don't know, but hopefully someone on the hackers list will chip in > here with a comment. After a first developement cycle (if my brain doesn`t burn down), the signals can be replaced to a plugable communication interface I think. So maybe we can use CORBA, or sockets, or something else. This will take a lot of time. > OK, so the same backend process that called the function gets messaged > to process the sql. This should work. However it means you will need > a special version of the jdbc driver that uses this shm+signals > communication mechanism instead of what the current jdbc driver does. > This is something I would be happy to help you with. This is kind of you. :) For this, I will have to finish the protocol of communication. I have to learn Postgres enough, so I am not sure this will be done this weekend. I have ideas, only time is needed to implement them or to recognize the failures. Thanks, Laszlo Hornyak ---------------------------(end of broadcast)--------------------------- TIP 4: Don't 'kill -9' the postmaster From pgsql-hackers-owner+M16313=candle.pha.pa.us=pgman@postgresql.org Thu Dec 6 10:01:29 2001 Return-path: 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 fB6F1RZ28000 for ; Thu, 6 Dec 2001 10:01:27 -0500 (EST) Received: from rs.postgresql.org (server1.pgsql.org [64.39.15.238] (may be forged)) by west.navpoint.com (8.11.6/8.10.1) with ESMTP id fB6F1OE19111 for ; Thu, 6 Dec 2001 10:01:25 -0500 (EST) Received: from postgresql.org (postgresql.org [64.49.215.8]) by rs.postgresql.org (8.11.6/8.11.6) with ESMTP id fB6EvtR54729 for ; Thu, 6 Dec 2001 08:59:16 -0600 (CST) (envelope-from pgsql-hackers-owner+M16313=candle.pha.pa.us=pgman@postgresql.org) Received: from tiger.tigrasoft (fw.tigrasoft.hu [195.70.42.161]) by postgresql.org (8.11.3/8.11.4) with ESMTP id fB6EFfm64066; Thu, 6 Dec 2001 09:15:41 -0500 (EST) (envelope-from hornyakl@freemail.hu) Received: from freemail.hu ([192.168.0.200]) by tiger.tigrasoft (8.9.3/8.9.3/Debian 8.9.3-21) with ESMTP id PAA29094; Thu, 6 Dec 2001 15:15:01 +0100 X-Authentication-Warning: tiger.tigrasoft: Host [192.168.0.200] claimed to be freemail.hu Message-ID: <3C0F7F6B.2060605@freemail.hu> Date: Thu, 06 Dec 2001 15:23:39 +0100 From: Laszlo Hornyak Reply-To: hornyakl@users.sourceforge.net User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.4) Gecko/20010913 X-Accept-Language: hu, en-us MIME-Version: 1.0 To: Gunnar =?ISO-8859-1?Q?R=F8nning?= cc: Barry Lind , pgsql-hackers@postgresql.org, pgsql-jdbc@postgresql.org Subject: Re: [HACKERS] [GENERAL] java stored procedures References: <3C074DE4.9040905@freemail.hu> <3C0BE325.3020809@xythos.com> <3C0C937E.9000405@freemail.hu> <3C0CFD82.1030600@xythos.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Precedence: bulk Sender: pgsql-hackers-owner@postgresql.org Status: OR Hi! Sorry, I have time only for short ansvers, it is company time :((. Gunnar Rønning wrote: >* Barry Lind wrote: >| >| possible problems with your strategy). Without knowing what exactly >| you are thinking of doing it is difficult to comment. > >Agreed. > Ok, I will try to bring the code here before Monday, or at least some pieces. It is full of hardcoded constants from my developement environment. :( > >| I am very interested in hearing what your plans are for pl/java. I >| think this is a very difficult project, but one that would be very >| useful and welcome. > >I would very much like to hear about the plans myself. > I do not see so big difficulities yet, am I so lame? It won`t be easy, realy, we should keep it simple, at least becouse of me. thanks, Laszlo Hornyak ---------------------------(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+M16334=candle.pha.pa.us=pgman@postgresql.org Thu Dec 6 16:11:23 2001 Return-path: 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 fB6LBLZ25078 for ; Thu, 6 Dec 2001 16:11:22 -0500 (EST) Received: from rs.postgresql.org (server1.pgsql.org [64.39.15.238] (may be forged)) by west.navpoint.com (8.11.6/8.10.1) with ESMTP id fB6LBMa12305 for ; Thu, 6 Dec 2001 16:11:22 -0500 (EST) Received: from postgresql.org (postgresql.org [64.49.215.8]) by rs.postgresql.org (8.11.6/8.11.6) with ESMTP id fB6L6wR66812 for ; Thu, 6 Dec 2001 15:08:01 -0600 (CST) (envelope-from pgsql-hackers-owner+M16334=candle.pha.pa.us=pgman@postgresql.org) Received: from rh72.home.ee (adsl895.estpak.ee [213.168.23.133]) by postgresql.org (8.11.3/8.11.4) with ESMTP id fB6Kxtm98840; Thu, 6 Dec 2001 15:59:55 -0500 (EST) (envelope-from hannu@tm.ee) Received: from tm.ee (localhost.localdomain [127.0.0.1]) by rh72.home.ee (8.11.6/8.11.6) with ESMTP id fB6I2pn02024; Thu, 6 Dec 2001 23:02:52 +0500 Message-ID: <3C0FB2CB.90901@tm.ee> Date: Thu, 06 Dec 2001 23:02:51 +0500 From: Hannu Krosing User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.4) Gecko/20011019 Netscape6/6.2 X-Accept-Language: et, en-us MIME-Version: 1.0 To: hornyakl@users.sourceforge.net cc: Gunnar =?ISO-8859-1?Q?R=F8nning?= , Barry Lind , pgsql-hackers@postgresql.org, pgsql-jdbc@postgresql.org Subject: Re: [HACKERS] [GENERAL] java stored procedures References: <3C074DE4.9040905@freemail.hu> <3C0BE325.3020809@xythos.com> <3C0C937E.9000405@freemail.hu> <3C0CFD82.1030600@xythos.com> <3C0F7F6B.2060605@freemail.hu> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Precedence: bulk Sender: pgsql-hackers-owner@postgresql.org Status: OR Laszlo Hornyak wrote: >> >> | I am very interested in hearing what your plans are for pl/java. I >> | think this is a very difficult project, but one that would be very >> | useful and welcome. >> >> I would very much like to hear about the plans myself. > > I do not see so big difficulities yet, am I so lame? It won`t be easy, > realy, we should keep it simple, at least becouse of me. Let me propose a very different approach to PL/J - use gcc-java and figure out the problems with (dynamic) compiling and dynamic linking. This is an approach somewhat similar to .NET/C# that you first compile things and then run instead of trying to do both at the same time ;) Oracle /may/ be doing something similar with their java stored procedures, as they claim these to be "compiled". ----------------- Hannu ---------------------------(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+M17140@postgresql.org Thu Jan 3 09:13:32 2002 Return-path: Received: from rs.postgresql.org (server1.pgsql.org [64.39.15.238] (may be forged)) by candle.pha.pa.us (8.11.6/8.10.1) with ESMTP id g03EDVc00444 for ; Thu, 3 Jan 2002 09:13:31 -0500 (EST) Received: from postgresql.org (postgresql.org [64.49.215.8]) by rs.postgresql.org (8.11.6/8.11.6) with ESMTP id g03E41N54463; Thu, 3 Jan 2002 08:04:01 -0600 (CST) (envelope-from pgsql-hackers-owner+M17140@postgresql.org) Received: from tiger.tigrasoft (fw.tigrasoft.hu [195.70.42.161]) by postgresql.org (8.11.3/8.11.4) with ESMTP id g01Csdm40742 for ; Tue, 1 Jan 2002 07:54:39 -0500 (EST) (envelope-from hornyakl@freemail.hu) Received: from freemail.hu ([192.168.0.200]) by tiger.tigrasoft (8.9.3/8.9.3/Debian 8.9.3-21) with ESMTP id NAA14425; Tue, 1 Jan 2002 13:54:35 +0100 X-Authentication-Warning: tiger.tigrasoft: Host [192.168.0.200] claimed to be freemail.hu Message-ID: <3C31B3B7.6030703@freemail.hu> Date: Tue, 01 Jan 2002 14:03:51 +0100 From: Laszlo Hornyak Reply-To: hornyakl@users.sourceforge.net User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.4) Gecko/20010913 X-Accept-Language: hu, en-us MIME-Version: 1.0 To: pgsql-hackers@postgresql.org, ssutjiono@wc-group.com Subject: [HACKERS] PL/(pg)J Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Precedence: bulk Sender: pgsql-hackers-owner@postgresql.org Status: OR Happy new year for all! I would like to tell you about the results of my work on pl/j. memo: Java and postgres must run in a separate address space. First I wanted to use the sys v ipc, which was a bad idea becouse of some problems with java VM-s. Many hackers told me about its bad sides, and the good sides of the sockets, so I droped the whole code and started a new one. I started to write the java side first, which is maybe almost 10% ready :)) -we have is a communication protocol between the two process. I know noone will like it, so there is an API for protocols, so it is plugable. The current implementation is receiveing calls,sends exceptions, but sending the results is not implemented yet. -the Postgres side is not yet done. It sends function calls without arguments, it doesn`t receive sql queries, exceptions or results at all, and there is no API for it, it is an uggly hardcoded thing. -there is no JDBC implementation, and I have never written JDBC driver, so it may take for a while... But it says "hello world" :)) Todo for me: -learn more about postgres, jdbc drivers, etc, etc -develop api for the postgres side of the communication. This will take for a good while becouse of other todos but I hope next time I can tell you good news. thx, Laszlo Hornyak ---------------------------(end of broadcast)--------------------------- TIP 5: Have you checked our extensive FAQ? http://www.postgresql.org/users-lounge/docs/faq.html From pgsql-general-owner+M19758=candle.pha.pa.us=pgman@postgresql.org Wed Jan 23 11:33:11 2002 Return-path: Received: from server1.pgsql.org (www.postgresql.org [64.49.215.9]) by candle.pha.pa.us (8.11.6/8.10.1) with SMTP id g0NGXAU13298 for ; Wed, 23 Jan 2002 11:33:10 -0500 (EST) Received: (qmail 89931 invoked by alias); 23 Jan 2002 16:32:58 -0000 Received: from unknown (HELO postgresql.org) (64.49.215.8) by www.postgresql.org with SMTP; 23 Jan 2002 16:32:58 -0000 Received: from barry.xythos.com (h-64-105-36-191.SNVACAID.covad.net [64.105.36.191]) by postgresql.org (8.11.3/8.11.4) with ESMTP id g0NG9Tl75462 for ; Wed, 23 Jan 2002 11:09:29 -0500 (EST) (envelope-from barry@xythos.com) Received: from xythos.com (localhost.localdomain [127.0.0.1]) by barry.xythos.com (8.11.6/8.11.6) with ESMTP id g0N1sGn24841; Tue, 22 Jan 2002 17:54:16 -0800 Message-ID: <3C4E17C8.8040909@xythos.com> Date: Tue, 22 Jan 2002 17:54:16 -0800 From: Barry Lind User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.7) Gecko/20011221 X-Accept-Language: en-us MIME-Version: 1.0 To: Nic Ferrier cc: Doug McNaught , pgsql-general@postgresql.org Subject: Re: [GENERAL] implemention of calls to stored procs. References: <87sn8yx6xu.fsf@tf1.tapsellferrier.co.uk> <87n0z5yjer.fsf@tf1.tapsellferrier.co.uk> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Precedence: bulk Sender: pgsql-general-owner@postgresql.org Status: OR Nic, Check out http://www.rootshell.be/~hornyakl/download This has the latest code for pl/pgj. The Java procedure language support that Laszlo Hornyak (hornyakl@users.sourceforge.net) has been working on for the last month or so. thanks, --Barry Nic Ferrier wrote: > Firstly, thanks for your responses... good to know I was thinking the > right thing (and, yes, I was taking the process thing into account, > tho' I didn't realise threads weren't used at all). > > > Doug McNaught writes: > > >>Nic Ferrier writes: >> >> >>>I've been looking at the implementation of the procedural language >>>support code with a view to writing a java plugin (ie: something to >>>allow java classes to be used as stored procs). >>> >> >>Someone else has been talking about this--check the archives from the >>last six months. >> > > I couldn't find any reference but the archive searcher is broken right > now and a manual search is not very reliable. > > It's not terribly difficult to crack this actually... I was going to > use GCJ as a platform for a base java class that could be used like a > quick C stored proc. > > I envisage having a natively implemented JDBC Connection passed to an > init method in such a class. > > > GCJ is perfect for this task because it has a native call interface, > CNI, which is a seamless part of the class heirarchy. > > Once I've got something working I'll drop a line here. > > > > Nic > > ---------------------------(end of broadcast)--------------------------- > TIP 5: Have you checked our extensive FAQ? > > http://www.postgresql.org/users-lounge/docs/faq.html > > ---------------------------(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+M31158@postgresql.org Wed Oct 30 14:31:27 2002 Return-path: 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 ; 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 ; 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 ; 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 ; 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 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: 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 ; 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 ; 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 ; 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 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 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: 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 ; 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 ; 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 ; 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 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 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 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 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: 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 ; 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 ; 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 ; 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 ; 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 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 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 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: 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 ; 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 ; 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 ; 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 ; Fri, 01 Nov 2002 12:34:08 +0000 Subject: Re: [HACKERS] PG functions in Java: maybe use gcj? From: Oliver Elphick 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)