RE: Status of JDBC Interface - Mailing list pgsql-hackers

From Peter Mount
Subject RE: Status of JDBC Interface
Date
Msg-id 1B3D5E532D18D311861A00600865478CF1B6A6@exchange1.nt.maidstone.gov.uk
Whole thread Raw
In response to Status of JDBC Interface  (Peter Mount <petermount@maidstone.gov.uk>)
List pgsql-hackers

-- 
Peter Mount
Enterprise Support Officer, Maidstone Borough Council
Email: petermount@maidstone.gov.uk
WWW: http://www.maidstone.gov.uk
All views expressed within this email are not the views of Maidstone Borough
Council


> -----Original Message-----
> From: Peter Eisentraut [mailto:peter_e@gmx.net]
> Sent: Thursday, December 21, 2000 6:30 PM
> To: Peter Mount
> Cc: PostgreSQL Interfaces (E-mail); PostgreSQL Developers 
> List (E-mail)
> Subject: Re: [HACKERS] Status of JDBC Interface
> 
> 
> Peter Mount writes:
> 
> > 1) ANT vs Make
> 
> > I suggest we keep supporting both methods for now to see 
> how people get on.
> 
> If you're confident about ANT is suggest that you dump the 
> make interface because otherwise you increase the possible
> failure scenarios at the install level alone in combinatorial ways.

My plan is to keep both for this release and then (assuming there's feedback
about how ANT is working) to remove the current Makefile for the next one.

> What's a bit sad about the JDBC subtree is that it doesn't follow the
> build system conventions in the rest of the tree.  For example, I would
> really like to be able to do this:
> 
> ./configure ... --with-java[=/usr/local/j2sdk1.3.0]
> make
> make install

I did think about that but ran out of time. What would be nice would be for
configure to either detect the presence of the JDK & ANT (with --with-java
and --with-ant pairs) and then automatically call a cut down Makefile. ie:

-- Begin Makefile --
all:ant

clean:ant clean
-- End Makefile --

The one big thing for ANT is that it makes the detection of the JDK/JVM
version simple, so detecting the JDK/JVM version isn't required anywhere in
the Makefiles.

> This wouldn't only make it easier on users, but many more people would
> perhaps be exposed to the fact that there's a JDBC driver in 
> the tree at all.

Agreed. I still get emails from people asking for the source when it's
included in the main source tree.

> I have on and off had some ideas about autoconfiscating the 
> JDBC build but I'm glad I didn't do it since this Ant thing seems to be
much better.
> But it would still be desirable to have a make wrapper since 
> that is what people are accustomed to.

Yes. I could replace Makefile now, but I wanted to see what everyones
opinion on ANT was first.

> Btw., how does Ant choose the JDK it uses if I have three or four
> installed at random places?  (This is perhaps yet another source of
> problems, if make and ant use different JDKs by default.)

There's the JAVA_HOME environment variable used by the JDK. Normally the JDK
can work it out without the user setting it. I use it to switch between
1.1.8 & 1.2.2 (you also have to change PATH).

Anyhow, you have set JAVA_HOME then ANT will use that for the compiler.
There's also ANT_HOME but I'm running ok without that one set.

PS: ANT works with both Sun's javac, jikes (IBM's compiler) and jvc
(Micro$oft's Java/VisualJ++)

The more I look into ANT's capabilities the more I like it. It's extensible
(you can write your own class to implement new tasks) and it even has the
ability to use CVS and apply patches on the fly, so if someone has CVS
installed they only need to run:
ant update

and an update target (ANT's name for a rule in Make) then checks out the
current source before building.

> > 2) Versioning
> 
> > one location. Also as suggested on the Hackers list Make 
> now extracts the
> > version from Makefile.global. This works fine for Make, but 
> there are two
> > problems.
> >
> > First, ANT can't read this easily. This isn't that major, 
> but the second one
> > is. I've had reports that some people checkout just the 
> interfaces, and not
> > the entire source, so Makefile.global is not available.
> 
> Just checking out interfaces is not advertised AFAIK and it definitely
> doesn't work for anything but the JDBC driver.

I had an email from someone who said they did this (I didn't know you could
before then) because of space reasons. Before 7.0 yes JDBC would be
compileable but it has a link to Makefile.global now.

> OTOH, nothing is stopping you from inventing your own 
> versioning scheme for the driver only.  Several other things in the tree
do this as well
> (PyGreSql, PgAccess).

True, but historically the JDBC versioning has matched that of the backend,
and I think it makes it easier to say JDBC Driver v7.1 is for 7.1.x
backends. This is especially as in this version DatabaseMetaData will not
work with earlier version backends (uses INNER & OUTER joins).

If I get chance today I'll see if I can get it to pull the versions out of
Makefile.global.

Peter



pgsql-hackers by date:

Previous
From: Tatsuo Ishii
Date:
Subject: Re: Re: [PATCHES] A Patch for MIC to EUC_TW code converting inmbsupport
Next
From: Partyka Robert
Date:
Subject: Merry X-Mass