Last updated August 1,  2000.


Please send bug reports to freetds-jdbc-bugs@internetcds.com


The driver will not run on NT 4.0 with service pack 6.  Microsoft
broke a number of things in their TCP/IP stck.  For more information
see http://support.microsoft.com/support/kb/articles/Q245/6/78.asp. In
addition to that problem, SP6 appears to have broken the socket option
TCP_NODELAY.  The fix is to uninstall SP6 or to install a hot fix from
Microsoft.

Most stored procedures fail with 

  java.sql.SQLException: Protocol confusion.  Got a 0x79 packet"


The Makefiles are hopeless.  Java might be write-once, run anywhere,
but the getting a makefile that works under Windows and Unix is a
pain.  :-(


This driver doesn't handle decimal values that are bigger than 64 bits
yet.

There should be a finalize() method for the TdsConnection class.
(Note-  With JDBC you can't rely on a finalize method to close the
database connections.  The JVM does not guarantee when the finalize
method will be called.  It could be as soon as the object is has no
more reference, or it could be months from now.)


Query cancels and timeouts don't work for Sybase.  They do work for
SQLServer.

Port number must be specified numerically.  Symbolic port names aren't
supported yet.  Since Java doesn't have support for Symbolic port
names I'm not sure what to do with this problem.

Doesn't handle TDS_DONEINPROC packets correctly.  Demonstrated by
t0032.java.

Race condition between TdsComm.peek() and TdsComm.getByte().  Methods
in TdsComm that access the inBuffer and inBufferIndex need to be
synchronized on inBuffer.  Note- The methods in the TdsComm class
can't be synchronized because the cancel thread needs to be able to
send cancel requests even if another thread is waiting in
TdsComm.getByte() for database results.

PreparedStatements aren't working very well for Sybase yet.

DatabaseMetaData.getColumns() and DatabaseMetaData.getTables() 
create global temporary tables that they never clean up.

DatabaseMetaData.getTables() doesn't work with SQLServer 7.0.

Although the overall design of creating and accessing TDS streams
takes multithreadedness into account, some of the individual methods
in the higher lever classes still need to be 'synchronized'.  At this
time the driver should not be considered thread safe.  This shouldn't
be too difficult to fix.

PreparedStatement.setString() method fails if the string is more than
255 characters long.  Demonstrated by t0021.java

PreparedStatement.setBytes() fails if the destination column is
BINARY.  The stored procedure that is created should have a formal
parameter of type VARBINARY if the length of the byte array is < 256.
Demonstrated by t0021.java

Doesn't handle 'compute' clauses yet.  Demonstrated by t0026.java

Not really a bug, but I need someway of generating the dependencies in
the makefile.  Maintaining those by hand is not fun.  Need to look at
using jikes for that.


