Subject Re: Jaybird and API calls
Author Roman Rokytskyy <rrokytskyy@acm.org>
> #1 I don't know java.

ok. then why java?

> #2 We want to write a GUI FB Manager product that
> is cross platform.

ok. but there was a discussion to provide a set of crossplatform
command line tools + UI for them.

> #3 It will be open source, so we need to use open
> source libraries.

ok. we are LGPL.

> #4 Are you saying GDS_Impl.java will give us
> the ability to call API functions?

yes, pretty the same way you do in ibase.h

> #5 Does it exist yet? If not when?

yes it is available, this is the key component of the driver. but
driver considerably simplifies interface and provides functionality
you have to write by hands otherwise.

in c++ you have ibpp components, delphi - ibx/dbexpress, in java -
our jdbc driver.

> #6 Are you saying that if 2 API calls are missing
> that we need, there won't be any way to add them?

it is possible. we will need to dig engine sources, find out the
calls sent over the wire and implement them. unfortunatelly no
document describing wire protocol exists.

> #7 Should we rule out Java and go with C++ and a
> cross platform library? There seems to be a C++
> library that has a conciderable amount of the
> API wrapped.

we wrapped everything needed to get jdbc compliant driver. we do not
have services api. this means that currently you cannot add/remove
users, make backup/restore, etc. we implemented
isc_dsql_execute_immediate(), so you can create or drop databases. if
engine developers add sql interface to manage other features (BACKUP
DATABASE, RESTORE DATABASE, CREATE/DROP USER, etc.) you can use this
call. personally i think it is easier to implement services api
(whatever it is) then to convince engine developers to even think
about these statements.

with current implementation you can explore your database, check
metadata, etc. jdbc does not know anything about triggers and
generators, so this is not available via jdbc api. but it can be
implemented additionally.

however, iirc the conclusion of the discussion in firebird-devel list
was that it makes more sense to have collection of command-line tools
than java client. jdbc driver is missing some features that are
needed to get tool like ibexpert (for example we do not have
scrollable cursors and i see no point in implementing in-memory
scrolling).

however to get something similar to ibconsole is relatively easy.
there is open-source java gui called squirrel-sql. one needs to add
firebird plugin and we will need to add all needed and unimplemented
api calls.

best regards,
roman rokytskyy