This directory contains the Easysoft JDBC-ODBC Bridge.
The Easysoft JDBC-ODBC Bridge (JOB) provides zero installation JDBC access
from any Java platform to remote ODBC data sources on Unix, Linux and Windows
platforms. The main points to note about JOB are:

[1] You can connect to Microsoft SQL Server, Microsoft Access or any other 
    ODBC data source for which you have an ODBC driver. Access can be from Java
    Applets, Applications, Servlets or Application Servers on any Java 
    platform.

[2] Unlike SUN's Bridge, JOB is Type 3, client server solution, allowing Java 
     applications and ODBC drivers to be on separate machines.

[3] JOB is J2EE compliant, as certified by SUN Microsystems.

[3] JOB supports core JDBC 2 methods in addition to all JDBC 1.22 methods.

[4] You can set and retrieve UNICODE data with ResultSet.getString() and
    PreparedStatement.setString().

[5]  On non-windows platforms JOB provides JDBC access to ODBC Data 
    Sources set up under the unixODBC ODBC Driver Manager.

[6] JOB ships with an simple, integral HTTP server to provide web based 
    remote monitoring and configuration of the JOB server.
    The easysoft.sql.jobDriver package can be served by this web server
    alongside applet code to achieve zero installation solutions.

[7] JOB provides outstanding performance when tested with JBench.


Demonstrations of Easysoft JDBC-ODBC Bridge in action are available at

http://www.easysoft.com/products/9999/demonstrations.phtml?product=2003

** You should only install this software onto a machine that has ODBC
** drivers that you want to access over the Easysoft JDBC-ODBC Bridge 
** from other machines.

** If the ODBC data sources to which you would like to gain remote access
** from any Java platform reside on other platforms (such as Linux or Unix),
** please obtain and install the Easysoft JDBC-ODBC Bridge Server
** appropriate for those platforms.

** If you wish to gain access to your ODBC Data sources via JDBC from
** applets, you can use the built-in HTTP server to serve them.

** For production use it is recommended that you take the Easysoft JDBC-ODBC
** Bridge Driver classes from  <install_path>/easysoft/job/EJOB.jar and make
** them available via your own Web server.

** If you are developing or deploying applications you can download
** the Easysoft JDBC-ODBC Bridge Driver classes directly from the machine
** that runs the server. See the page
**      http://<your machine>:<EJOB HTTP PORT>/

On Unix and Linux systems you must be root to install the server properly 
as it requires write access to /usr/local tree.

For information on installing the Easysoft JDBC-ODBC Bridge see the
INSTALL file.

Post any queries to the USENET group

news://news.easysoft.com/easysoft.public.jdbc-odbc-bridge

or by contacting Easysoft Ltd on +44 01937 860000.

There is also a MajorDomo mailing list. You may obtain a list of lists by
sending an email message to majordomo@easysoft.com where the body of
the message contains only the text "lists" (without the quotes). Once
you locate the list you would like to join send an email to
majordomo@easysoft.com where the body of the message is:

subscribe <list>

where <list> is the name of the list you would like to join.

Changes
-------
Please NOTE: All changes are logged here but distributions containing these
changes are not automatically released i.e. just because you see a change
associated with a particular version does not mean that version is available
for your platform. Changes and bug fixes are rolled into the next minor or
major version. If you have a support contract and need a fix contact Easysoft
Support. 

Changes in 1.4.3

	Client no longer caches metadata object (BZ1855)

Changes in 1.4.2

	Client can now handle short form tiemstamps and times (BZ1801)

	Fix problem returnng LOGVARCHAR fields from MS Access. (BZ1767)

	Stop client reporting a failure if the driver doesn't support
	SQLGetInfo( SQL_ACCESS_MODE ). It wasn't a bug, but when combined with
	a driver that didn't do this, and a IDE that wasn't expecting the exception,
	it was causing a problem. (BZ1754)

Changes in 1.4.1
	Alter client to add extra fields to the result set from a getColumns call when
	going to a ODBC 2 driver. (BZ1679)

Changes in 1.4.0
   	Add support for Solaris 10.

Changes in 1.3.3

	Make a rs.updateRow() reset the row pointer, so another setXXX() will reuse 
	the first batch position

	Fix ommision, that prevented getBytes from returning from a updatable 
	result set

	Map ODBC WCHAR types to JDBC equivilant

	Prevent large numbers of errors from causing memory corruption

	Fix small memory leak on server with batch operations

	Where possible, use driver provided information when binding columns for 
	batch updates

	Updating via batch SQL Server smalldatetime types could fail as its
	display size was less than 21, but the client expected all timestamps
	to have that display size

	Only call SQLMoreResults if the target driver supports it  (BZ1254)

	updateRow and insertRow didn't reset the count of parameters, so
	after the first update, further data was ignored

	Allow getTime() to be called on a SQL Server shortdatetime column

	If Fetchsize was set to anything other that 0 or -1 a exception was 
	thrown. (BZ1178)

	The jNET benchmark failed against JOB, it now doesn't. (BZ1178)

Changes in 1.3.2

   Change to use new unlimited connection licenses (BZ1110).

   Fix problem preventing DSN popup from appearing in test applet.
      (BZ1104)

   The new applets/applications didn't work with MS JVM. 
	(BZ1083, BZ1087, BZ1088).

   The web server was serving the incorrect demo page. (BZ1084).

   Incorrect initial index page. (BZ1093).

   Fix problems in startjob where you need to be in /usr/local/easysoft/job
   before it works.

   Fix stopjob which reports job server stopped when they may not have
   been e.g. when the user running stopjob does not have permission.

   Alter the text in esjobserver.ini. (BZ929)

   The build name for Solaris sparc,  AIX and HPUX were incorrect. 
	(BZ948, BZ935, BZ949, BZ941)

   The included unixODBC was not built with rtlgroup set. (BZ940)

Changes in 1.3.1

   Fix problem in startjob script that caused it to fail if the LOG file
   didn't exist BZ793.

Changes in 1.3.0

   Repeated calls to getString return the same result (BZ140).

   Removed incorrect error message when MaxThreadCount reached in server 
   (BZ146).

   Removed unused file from distribution (BZ147).

   Fix problem in getRowCount() with multiple result sets (BZ148).

   Catch "not supported" exception when calling getTransactionIsolation() 
   against MS EXCEL ODBC Driver (BZ151).

   Alter Test.java class to accept logonuser and logonpassword parameter 
   (BZ152).
	
   Removed "reserved"/unused fields visible in Configuration page of
   JOB Web Server (BZ153).

   Test applet doesn't accept logonuser and logonpassword parameter (BZ155).

   If the connections failed, the client didn't always throw a exception 
   (BZ215).

   Start menu option changed from "Run Server" to "Services" on Windows NT 
   platforms (BZ239).

   Server-Client-License.txt missing from the initial untar dir (BZ269)

   Install forces installation of unixODBC (BZ284).

   Uninstall failed because of additional file (BZ293).

   If you do not have permissions to start the JOB server it still allows you 
   to run ./startjob and it does not error (BZ298).

   The limit in the job url in the test applet did not work (BZ312).

   No help gif and link next to read-only fields on the Change
   Configuration web page (e.g. for "Path"). (BZ423)

   Spelling mistake fixed in admin page (BZ424).

   Registry settings for license app were deleted during install (BZ439)

   Socket used for HTTP connections has SO_REUSEADDR set on
   it now to avoid the annoyance of having to wait to reuse the socket (BZ451)

   JOB HTTP Server puts the wrong JOB version in the HTTP header (BZ452).

   rs.updateRow() could return a "Degree of derived table does not match 
   column list" error (BZ519).

   Possibility of incorrect column names from JDBC getTables() with 
   non-conformant ODBC driver (BZ525).

   rs.updateString() could not set a empty string, and rs.updateNull() failed 
   (BZ526).

   Fix potential problem in jobCheckHost() (internal function) (BZ564).

   testGetUpdateCounts fails in JDBC conformance test (BZ612).

   testGetObject14 Fails in JDBC conformance test (BZ613).

   Change link to admin page to remove localhost lookup (BZ620).

   Updating a column via a parameter bound as a SQL_CHAR so inserted trailing 
   spaces (BZ628).

   Prevent the server allowing a updateRow() if no updates have been set.

   Check that the cursor is at the insert row before allowing a insertRow().

   Check if the driver support the required cursor type at the 
   createStatment() time, not the execute (BZ638).

   Map JDBC cursor and concurrency types dynamically to ODBC types based
   on reported driver capabilities (BZ638).

   Catch unsertRow() without set values (BZ640).

   The DSN pop-up from the test applet could not be closed without completely 
   coming out of the browser (BZ328).

   If the close button is clicked on the test applet the applet still
   needed disconnect pressing before another connect (BZ420).

   Fix problem running on systems with UTF unicode settings (i.e. RH 9) 
   (BZ384).

Changes in 1.2.1

   Detect and warn about previous non 1.2 versions in the install
   Return the Content-Length: field in jar file responses

Changes in 1.2.0

   Support for Windows 2003 added to tree.

Changes in 1.1.15

   Allow the number of batches in a batch execution to exceed 10.
   Fix buffer overflow in server, when multiple connections are 
     generated to drivers that only support one active statement.

Changes in 1.1.14

   Fix problem with batches of prepared statements.

Changes in 1.1.13

   Alter how the return array from failed batchUpdates are handled.

Changes in 1.1.12

   Client only, catch number format exception in getLong().

Changes in 1.1.11

   Check if we are using a Microsoft VM and if so, tread carefully.
    Using the MS JVM (Especially with JIT) exceptions that should be
    catchable can cause the browser to fail and exit.

   Alter the index2.html link from the installer, this allows the test
    app to be loaded.

   Handle short timestamp strings within the ResultSet.getTimestamp code.

Chnages in 1.1.10

   Remove restriction on number of bound parameters

Changes in 1.1.9

   Alter how getUpdateCount() works when called on a closed RS,
    this caused a problem in ColdFusion MX.
   Fix problem returning result sets from queries with more than 
    71 columns.
   Check if the driver supports SQLDescribeParam before calling.
   Map ODBC 3 timestamp values to ODBC 2.
   Set the return Status to 08S01 if any unexpected socket error
    happens.

Changes in 1.1.8
----------------

   Alter the default settings on web admin
   Alter text in installer
   Alter the redirection on the web administrator

Changes in 1.1.7
----------------

   Fix problem with Access ODBC driver and UNICODE
   Add missing DLL that prevented windows uninstall from working
   Fix OS check problem on Solaris
   Remove debug lines from server and client
   Fix problem with web pages and direct (file:) access

Changes in 1.1.6
----------------

   Add optin to demo app to choose if catalogs and schemas need adding

Changes in 1.1.5
----------------

   Assorted tidying up before signoff of 1.1

Changes in 1.1.4
----------------

   Alter the demo jar file to use swing instead of awt

Changes in 1.1.3
----------------

   Alter the shortcut URLs for the Applet demo

Changes in 1.1.2
----------------

   Stop getWarnings() returning a empty SQLWarning in Connection.getWarnings()

Changes in 1.1.1
----------------

   Fix problem with corruption of free statement list, when SQLPrepares fail

Changes in 1.1.0
----------------

   Fix problem with demo applet and cutdown JVM's
   Driver now certified as J2EE compatible driver by Sun

Changes in 1.0.18.35
--------------------

   Fix race condition with ODBC driver manager

Changes in 1.0.18.34
--------------------

   Add logonuser and password fields in demo app(lets)

Changes in 1.0.18.33
--------------------

   Fix authentication issues
   Fix token leak

Changes in 1.0.18.32
--------------------

   Assorted small changes to conform with J2EE standard tests, all
   tests now pass, including those in the exclude scripts (assuming
   that sufficient support is provided by the target ODBC driver).

Changes in 1.0.18.31
--------------------

   Fix problem in rs.absolute()

Changes in 1.0.18.30
--------------------

   Alter ResultSet.last() to correctly update the row number.
   Catch attempts to use anything other than ResultSet.next() if its
                a TYPE_FORWARD_ONLY result set
   Throw a exception if executeQuery doesn't generate a result set

Changes in 1.0.18.29
--------------------

   Fixed problem with setByte(), it was passing as a BINARY not a TINYINT.
   Fixed problem with returning NULL from a output parameter of a callable 
        statement.
   Fixed problem NUMERIC/DECIMAL param binding failing as though they were
        bound as SQL_CHAR the scale was remaining set
   Fixed problem using setObject and TINYINT's
   Fixed problem using setObject and LONGVARCHAR's
   Alter executeBatch to continue after exception
   Fix problem in DatabaseMetaData and statement reuse
   Fix problem setting nulls via params
   Fix problem with getLong on a null field
   Fix problem where server leaked licenses
   Fix problem with output parameters
   Fix problem returning NULL from binary types

Changes in 1.0.18.28
--------------------

29-Oct-2002
   Fixed bug in CallableStatement.getObject(parameterIndex) returned null
   for all outputparameters that required scale setting.
   
   CallableStatement.getObject(index) now works for Types.REAL.
   
   Statement.executeQuery(sql) thows an exception when no result set
   is generated. |1616|

   Statement.executeUpdate(sql) throws an exception when result set is
   generated. 

   PreparedStatement.getMetaData() returns result set metadata even before 
   execute is called.

   ResultSet.getTime/Timestamp/Date(index,calendar) methods are now working.
   

Changes in 1.0.18.27
--------------------

28-Oct-2002
   JDBC test conformance changes, callable statements and output parameters

   Fix problem returning NULL in output parameters

Changes in 1.0.18.26
--------------------

01-Oct-2002
   SQLExceptions are now properly chained. |1513|

04-Oct-2002
   ResultSet.wasNull has intermittently returned incorrect result. |1538|

04-Oct-2002
   Elliminated 28 old-style, inefficient, job tracing calls. On certain data
   intensive tests performance has improved by as much as 5 per cent. |1537|
   

Changes in 1.0.18.25
--------------------

30-Sep-2002
  JOB demos now retrieve warnings in a loop as they should. |1506|

  Changes in connection attributes are now propagated to database connections
  opened behind the scenes in support for multiple concurrent statements 
  where the backend does not support it. The is only recommended for read-only
  use.|1436|

Changes in 1.0.18.23
--------------------

23-Sep-2002

   Fixed problem with jobConnection.close() when called from finalize |1504| 
   |1508|

   JOB Web server now dies, as it should, when main server program is 
   terminated. |1426|

   Max client connect is now reported correctly by the JOB Web Admin. |1442|

   Confusing entries in LOG file have been eliminated. |1445|
   
20-Sep-2002
   Installer no longer asks for User name to setup JOB server authentication 
   on Windows 95/98. |907|

18-Sep-2002
   stopjob on Unix now responds with
       No JOB server is running
   when the job server is not running. It no longer asks users to remove 
   non-existing process and issues a warning about attached clients. |1443|


Changes since 1.0.0.17
----------------------


17-Sep-2002
   JOB service is launched automatically on install. |1487| 
   
   Launching JOB demo from Start Menu uses users's default browser instead of 
   IE.  |1428| | |1488| 
   

16-Sep-2002
   JOB installer should not ask for HTTP Admin user on Win95/98, since
   webadmin authentication does not work on these platforms. |907|

   Fixed JOB Demo Launcher to take into account users preference for
   Web Browser. |1428|

13-Sep-2002
   DataBaseMetaData.supporsMixedCaseIdentifier returns correct results. |472|

12-Sep-2002
   getWarnings now returns a chain of errors instead of just one string
   containing all warnings available. Apps relying on the getWarnings 
   previous non-standard behaviour may need to be modified.  |471|



10-Sep-2002
   Fixed garbled display of DSNs in browse connect popup on Macintosh. 
   The new client with this fix is not compatible with older servers. |1236|

10-Jun-2002
   DatabaseMetaData.getColumns/getTypeInfo returns valid java.sql.Types codes
   for DATE(91),TIME(92), and TIMESTAMP(93). Used to return ODBC 2 values of
   10,11 and 12.

24-May-2002
   Added support for ResultSet.getDate/Time/Timestamp involving Calendar object
s.

22-May-2002
   Problem with rowUpdated/Inserted/Deleted have been fixed.

   Missing ResultSet.updateXXX methods have been added.

   Scrollable Result Sets can now be created with PreparedStatements and Callab
leStatements


Changes since 1.0.0.16
----------------------
12-Apr-2002
   Fixed problem with isConnected.

12-Apr-2002
   Fixed missing trace entry and exit points.

12-Mar-2002
   The server thread/process is now closed/exited when connection is refused
   on licencing failure.
      
01-Feb-2001
   Resolved problem of hanging connection attempts  to a server that
   has been stopped with active connections.
   
08-Jan-2002
   JOB Passes JDBC J2EE conformance tests.

10-Dec-2001
   JOB Web server robots

07-Dec-2001
   Batch Updates is now implemented.

07-Dec-2001
   Fixed problem with PreparedStatement.clearParameters().

07-Dec-2001
   Statement.executeUpdate now raises an exception if statement returns a
   result set.

05-Dec-2001
   Fixed problem with programmable updates when only a few columns were to be 
   updated.

20-Nov-2001
   Trace output defaults to standard error instead of standard out.

19-Nov-2001
   user and password attributes in JDBC URL override anything passed in
   the Properties list to DriverManager.getConnection.

15-Nov-2001
   Added traceFile connection attribute. Note that `:' is used as the attribute
   separator in JOB Urls. Hence you need to use the
   escape characters %3A for `:' in the file specs for traceFile attributes:

     jdbc:easysoft://demo.easysoft.com/pubs:traceFile=F%3A\logs\job.log:limit=5

14-Nov-2001
   Added support for DSNless connections. JDBC url must be of the form: 

   jdbc:easysoft://<host>/Driver={<driver name>}[;<attr>=<value>]+ 
    e.g.
   jdbc:easysoft://<host>/Driver={Microsoft Access Driver (*.mdb)};DBQ=C\:tsmal
l.mdb;trace=on 

Note that when using DSNless connections the JOB JDBC URL attribute separator '
:' is changed to ';' so that ':' can be accepted as part of the ODBC connection
 attributes (as in driver names on windows)


Changes since 1.0.0.15
----------------------

29-Oct-2001
   DatabaseMetaData.getPrimaryKeys throws exception if driver does not
   support this function.

29-Oct-2001
   On upgrading JOB Server installer now gives the option to save existing
   settings. Note, running JOB server will be stopped during the update.

22-Oct-2001
   Upgraded Web Administrator. Added Security feature to allow/deny access
   to JOB server from/to specified IP addresses.

17-Oct-2001
   JOB Demo pages revised.

   Browse Connect dialog that pops up when no DSN is specified can now be
   closed without connecting.

02-Oct-2001
   License Application and Help file is updated.

01-Oct-2001
   Added new item to Start->Programs->Easysoft->JDBC-ODBC Bridge on windows
   'JOB App Demo' that runs the JOB demo applet as an application.
   Useful if EJOB.jar has been added to the Java CLASSPATH.

26-Sep-2001
   Remove limit on the size of columns transferable. If required, a limit
   can be set using the JDBC URL connection attribute :mb=<float>.
   e.g.
         :mb=2.5
   sets the maximum size of a column transferred to the client to 2.5
   megabytes.

   JOB client prints it's version ID when tracing is turned on.
   e.g.
   JOB CLIENT $Id: README.html,v 1.70 2004/04/27 12:28:38 nick Exp nick $.

   Socket timeout problem associated with long running queries have been
   resolved.

Changes since 1.0.0.14
----------------------

26-Jul-2001
   Add new JDBC connection attribute: clearText=on to force connection in
   formation to be sent in cleartext, useful for debugging purposes.

19-Jul-2001
   Connection information is sent from the client to the server as non-clear
   text.

16-Jul-2001
   Problem with 4K+ UNICODE fields is now fixed.

11-Jul-2001
   null can now be passed to DriverManger.getInfo(URL,info);.

04-Jul-2001
   Problem with tracing of ResultSet.next(), PreparedStatment.executeUpdate
   is now fixed.

Changes since 1.0.0.13
----------------------

18-May-2001
   Error codes sent back to the browser are not all 500.

16-May-2001
   Sockets are now reused. JOB server can now be restarted quickly.

16-May-2001
   Browsers can now cache images served by JOB's web server.

16-May-2001
   Mime type of jar files is reported correctly by JOB's web server.

15-May-2001
   Expiry date for unlicensed server is printed at server startup.

14-May-2001
   Statements are now closed automatically on garbage collection.

14-May-2001
   Fixed possible buffer overflow in server diagnostic output on
   client disconnection.

08-May-2001
   If no DSN is specified and an ODBC Driver specific attribute is added to
   the JOB JDBC URL an exception is thrown: [JOB] Connection failed Need to
   specify DSN when specifying ODBC Driver specific attribute.

05-May-2001
   Added Start->Easysoft->JDBC-ODBC Bridge->JBuilder 5 Help to download and
   install Help files (3 Mb) for using JOB with JBuilder 5.

Changes since 1.0.0.12
----------------------

18-Apr-2001
   DatabaseMetaData.getExtraNameCharacters() returns accented characters
   correctly.

10-Apr-2001
   Popup dialog to select a DSN if no DSN is specified in the JDBC URL
   now works in JBuilder. JBuilder's Lightweight AWT does not support
   Choice.getSelectedItem(). Use instead choice.getSelectedIndex(choice.getSele
ctedIndex()).

06-Apr-2001
   ResultSet.getXXX did not throw an exception when called without
   ResultSet.next() called first.

06-Apr-2001
   Fixed problem with retrieval of UNICODE data > 255 characters.

04-Apr-2001
   ResulSet.getRow now returns correct values even if Statement has been
   created according to JDBC 1 with forward only cursor.

22-Mar-2001
   If unicode=on is set and the server is licensed UNICODE data can now
   be retrieved from access without the need to use the attributes
   :unicode=all and fetchSize=0. Just use :unicode=on.

22-Mar-2001
   When the backend is MS Access PreparedStatement.setFloat() does no longer
   throws an exception:
   [Microsoft][ODBC Microsoft Access Driver]Optional feature not implemented.

21-Mar-2001
   Added new demos to Getting Started to show handling of UNICODE data.

16-Mar-2001
   Problems with Error Codes returned in SQL Exceptions has been fixed.

12-Mar-2001
   The driver itself attempts to discover the name of the host that it is
   loaded from, and will attempt a connection to the default 8831 port.
   This requires the class ez.class to be placed in the same directory the
   html file that is used to run you applet.
   If connection to other hosts and/or port is intended it has to be given
   explicitly.

12-Mar-2001
   JDBC URL of the form jdbc:easysoft:<DSN> are now supported.
   The new modified format of the Easysoft JDBC URL can be summarized as:
   It is fully backward compatible with the previously used URLs.

     * <url> ::= jdbc:easysoft:[<server spec>]:[<database>]{:<attr>=<value>}*
     *
     * <server spec> ::= //[<host name>][:<port>]/
     *
     * <database>    ::= <DSN>
     *               ::= <ODBC CS>
     *
     * <DSN>         ::= // ODBC Data Source name
     *
     * <ODBC CS>     ::= // ODBC Connection string including FILEDSN=<file>.


09-Mar-2001
   Attribute value pairs not recognized by JOB are passed on to the ODBC
   driver unchanged. If DSN is given as attribute value pair,
   it has to be the first attribute given.

07-Mar-2001
   JOB client now throws an exception if an attempt is made to establish a
   JDBC connection to other than the JOB server.

06-Mar-2001
   OutputApplet.html now provides a link to create and populate sample
   table with some UNICODE data.

06-Mar-2001
   JOB licenses are checked before getting list of dsns if dsn is not
   specified in the JDBC URL.

02-Mar-2001
   On Exception the name of the last called Remote Procedure is recorded.

28-Feb-2001
   Pages served by the built-in web server, administrator and the demo
   have the new look and feel to match the new www.easysoft.com site.

Changes since 1.0.0.11
----------------------

19-Feb-2001
   Connection.close() no longer raises an exception if it was called on
   an already disconnected connection.

19-Feb-2001
   Fixed potential buffer overrun in presenting list of connected hosts.

08-Feb-2001
   ResultSet.close() no longer raises an exception if it was called on a
   result set that had already been closed.

09-Jan-2001
   Web Administrator has been upgraded to allow changes to operational flags,
   such as turning on Multi process mode.

04-Jan-2001
   File dsn can now be passed using the JDBC URL:
      jdbc:easysoft://<job server>/FILEDSN=<file dsn>.

04-Jan-2001
   A limit on the maximum number of threads/processes in the server can now
   be set using the JOB Web Administrator. This can be particularly useful
   when JOB is used in a servlet engine and the backend database goes down.

14-Dec-2000
   PreparedStatement.setBigDecimal sends the right SQL type to back-end now.

Changes since 1.0.0.10
----------------------

07-Dec-2000
   Fixed huge memory increase in the Java client on disruption to the network
   connection to the backend database.

Changes since 1.0.0.9
---------------------

04-Dec-2000
   Fixed tracing in Statement.get/set attributes.

29-Nov-2000
   PreparedStatement.setTimeStamp() sets faction part to the right precision.

28-Nov-2000
   DatabaseMetadata.getCatalogs() returns null if catalogs are not supported
   by the ODBC driver.

27-Nov-2000
   Statement.setQueryTimeOut() throws an exception when setting query timeout
   is not supported in the driver (SQLState: SC100).
   This is a problem when using servlet engines such as Tomcat with Access.
   To change the SQLException to an SQLWarning in this situation set the
   registry key
   HKEY_LOCAL_MACHINE\SOFTWARE\Easysoft JDBC-ODBC Bridge\Configuration\System\s
ettings\SC100
   in the server to "y" or "Y".

24-Nov-2000
   Easysoft JDBC-ODBC Bridge Service can now be Paused and Continued not just
   Stopped and Started.

23-Nov-2000
   DatabaseMetadata.getSchemas and getCatalogs now return a result set
   comprising a single column.

20-Nov-2000
   MaxRows settings on a statement has wrongly been "inherited" by subsequent
   statements on the same connection.

17-Nov-2000
   Fixed memory leak in jobTrace class.

15-Nov-2000
   If trace is set to off (trace=off) and the JVM is Java 1.1.X an
   error results as the DriverManager.setLogWriter() method is a JDBC 2 method.

14-Nov-2000
   PreparedStatement.executeQuery now closes pending result sets.

14-Nov-2000
   Added missing method PreparedStatement.setObject(index,object).

14-Nov-2000
   If DatabaseMetaData.getTableTypes returns a result set with two rows:
   SYSTEM TABLE and TABLE, even when the backend does not support the required
   calls to SQLTables.

10-Nov-2000
   Restored disappearing SQLState codes.

09-Nov-2000
   The registry entry [HKEY_LOCAL_MACHINE\SOFTWARE\Easysoft JDBC-ODBC Bridge\
   Configuration\System\settings]"SingleStatement has been added. If it is
   set to "y" or "Y" no attempt is made to overcome the backends restriction
   to a single concurrent active statement. This is the default.

02-Nov-2000
   The registry entry [HKEY_LOCAL_MACHINE\SOFTWARE\Easysoft JDBC-ODBC Bridge\
   Configuration\System\settings]" Logging is set to 64 by default. It prints
   statistics for each connection to stdout where the server is running.
   Setting this flag to 0 disables this output.

Changes since 1.0.0.8
---------------------

01-Nov-2000
   Added patch to restrict connections to a specified DSN, the value of the
   registry key HKEY_LOCAL_MACHINE\SOFTWARE\Easysoft JDBC-ODBC Bridge\
   Configuration\System\Settings\DSN.

25-Oct-2000
   JDBC URL in use is no longer printed out on stdout.


25-Oct-2000
   Connection.isClosed returns true if server has gone away or connection has
   been closed.

23-Oct-2000
   PreparedStatement.setInt works now for negative integers.

16-Oct-2000
   Default port for JOB Server (:8831) could be omitted from the Easysoft
   JDBC URL.

 6-Oct-2000
   JOB works well with JBuilder 3.5.

 6-Oct-2000
   DatabaseMetaData.getTableTypes() generates a result set in which
   getString(1) works. This is needed by JBuilder 3.5 and 4.

 2-Oct-2000
   Changed the default for the JOB Server configuration ReverseLookup
   from on to off. Often customer networks do not have reverse lookups
   working and it adds to the connection time. This change only affects
   the statistics page where connecting clients IP addresses and names
   are shown. With ReverseLookup off the machine names are shown as
   "unknown".

 2-Oct-2000
   Fixed bug in automatic switching from Smart Block Fetch Mode to getting
   each column as a separate Remote Procedure Call (:fetchSize=0) and back.
   The elusive ntext problem.

26-Sept-2000
   Support for getting/setting UNICODE data.

19-Sept-2000
   Alpha release of core JDBC 2.1 features includes support for
   Scrollable Result Sets, programmatic inserts, deletes, and updates,
   character streams for streams of internationalized UNICODE characters.

12-Sept-2000
   Tracing can be enabled by DriverManger.setLogStream() for JDBC 1.2,
   DriverManager.setLogWriter() or with the :trace=on JDBC URL attribute
   setting.

31-Jul-2000
   A single connection to the JOB server can be shared across several client
   threads.

Changes since 1.0.0.7
---------------------

12-Jun-2000
   Changes to the licensing now mean that the JOB Server
   works out of the box for 1 connection without the installer applying
   for a license key. The free 1 connection license is time limited
   although no one is prevented from downloading a new time limited 1
   free connection version at a later date.

12-Jun-2000
   EJOB.jar (compressed) driver class sizes are down to 65K.

11-Jun-2000
   4K limit in the size of queries passed to the data source has been removed.

10-Jun-2000
   Connection.isClosed() spots if the server has timed out.

10-Jun-2000
   Default log directory on NT is now C:\TEMP instead of C:\tmp.

Changes since 1.0.0.6
---------------------

20-Jun-2000
   Problem with Memory increase as Statements created on the server were not
   reused is now resolved.

15-Jun-2000
   On server thread exit pending transactions are rolled back so that
   inaccessible connections are not left open to the backend db.

09-Jun-2000
   PreparedStatement.setNull(index,types) works now as expected.

31-May-2000
   String data returned with the platform's default character encoding.

30-May-2000
   PreparedStatement.setTimeStamp (setDate) sets the month correctly now.

Changes since 1.0.0.5
---------------------

24-May-2000
   Performance enhancements 5-40 %.

22-May-2000
   Tracing for Remote Procedure Calls on the server is disabled by default.

19-May-2000
   Introduced retries for opening socket connection to server.

16-May-2000
   Fixed memory leak in PreparedStatement.setXXX.

10-May-2000
   If a column name is used as the parameter to getXXX method, getXXX will
   return the value of the first matching column name. (it used to be the last)
.

10-May-2000
   Out of sequence, and repeated calls to ResultSet.getXXX calls now works
   in Smart Block Fetch Mode (default) even if the underlying ODBC data source
   does not support it.


Changes since 1.0.0.4
---------------------

 5-May-2000
   NULL status of columns was reported incorrectly.

 4-May-2000
   Second result set on a Statement object returned garbage in Smart Block
   Fetch Mode.

26-Apr-2000
   Only the first block of data is returned if the last column is
   not retrieved.