$Id: NEWS,v 1.44.4.3 2011/05/03 00:53:20 jklowden Exp $
Summary of Changes in release 0.91
--------------------------------------------
1. Full Kerberos and SSPI support for passwordless login to
Microsoft SQL Server from Unix and Windows clients.
Includes Kerberos delegation option.
2. Full support for DB-Library under Win32/64 via NMAKE.EXE.
3. Built-in support for UTF-8.
4. Support for wide characters in ODBC.
5. Support for varchar(max) and varbinary(max).
6. Better thread-safety in ODBC.
7. Distinguish between connect and login errors.
8. Bulk-copy functions in CT-Library.
TDS versions now reflect Microsoft's nomenclature. The previous
version numbers (8.0 and 9.0) are now 7.1 and 7.2. See the UG
for details.
Executive Summary of Changes in release 0.82
--------------------------------------------
1. timeout handling
2. encrypted connections
3. fisql (and odbc utilities)
4. autoconf improvements
5. 23,710 lines added or deleted (101,022 total).
6. 85 files added
7. 21 unit tests added
Details
-------
db-lib
- timeouts work!
- corrected dbnextrow
- implemented dbsetnull and dbsetinterrupt
- improved error reporting and checking
- fixed rpc parameter processing, now php works correctly
ct-lib
- added cs_loc_alloc, cs_loc_drop, cs_locale implementations
odbc
- cursors (mssql)
- fixed database setting
- return error always if odbc returns SQL_ERROR
- fixed SQLGetData result
utilities
- added support for NUL characters inside terminators in freebcp
- added row termination and column termination option to tsql
- new fisql application
- new ODBC utilities
documentation
- significant updates to TDS protocol documentation
- freetds.conf man page
- added tenderfoot sample code
general
- fixed timeout handling
- added freetds.conf option for encryption
- added protocol version discovery
- NTLM2 session response
- read table and real column name from wire
- experimental Kerberos support using gssapi
- some optimizations for GCC4
- optimized conversions avoiding some memory copy
- minor improves to server stuff
- improved MingW compile (even cross one)
- more verbose log for dblib and odbc
- many test added
1 test for libTDS
1 test for ctlib
3 tests for dblib
13 tests for odbc
libTDS API changes
- tds_add_row_column_size removed
- tds_alloc_row return now TDS_SUCCEED/TDS_FAIL
- tds_alloc_compute_row return now TDS_SUCCEED/TDS_FAIL
- removed TDSCOLUMN->column_offset
- added TDSCOLUMN->column_data and TDSCOLUMN->column_data_free
- added TDSCURSOR->type and TDSCURSOR->concurrency for mssql support
- added fetch_type and i_row parameters to tds_cursor_fetch
- added tds_cursor_update and tds_cursor_setname functions
- made tds_alloc_get_string static
- removed tds_free_cursor
- added TDSCURSOR->ref_count
- added tds_cursor_deallocated and tds_release_cursor to handle
cursor release. tds_cursor_deallocated is called when cursor got
deallocated from server while tds_release_cursor is called to
decrement reference counter. Reference counter is used cause is difficult
to trace pointer owner between libTDS and upper libraries
- added TDS_COMPILETIME_SETTINGS->sysconfdir
- changed DSTR_STRUCT structure to include dstr_size
- changed DSTR type
- error handler cannot return TDS_INT_EXIT
- removed TDSSOCKET->query_timeout_func TDSSOCKET->query_timeout_param,
TDSSOCKET->query_start_time
- changed TDSLOGIN->host_name to client_host_name
- changed TDSCONNECTION->host_name to client_host_name
- changed TDSLOGIN->encrypted to encryption_level
- changed TDSCONNECTION->encrypted to encryption_level
- added TDSRESULTINFO->row_free handler to free row
- added TDSCONTEXT->int_handler handler
- removed tds_prtype
- removed tds_alloc_param_row
- added tds_alloc_param_data
- added flags parameter to tds7_send_auth
- removed tds_client_msg
- added tdserror to report error
- added flags parameter to tds_answer_challenge
- added is_variable_type macro
- added TDSCOLUMN->table_column_name
- added tds parameter to tds_set_column_type
- renamed BCPCOLDATA->null_column to is_null
- added TDSMESSAGE->oserr
- remove length, number_upd_cols and cur_col_list from TDSCURSOR (never used)
- added new TDSAUTHENTICATION to handle authentication modules
- added TDSSOCKET->authentication
- added tds_ntlm_get_auth and tds_gss_get_auth
- removed TDSANSWER
- removed tds7_send_auth (use new tds_ntlm_get_auth)
- added tds_get_int8
- add TDSPARAMINFO *params argument to tds_cursor_declare
- add TDSPARAMINFO *params argument to tds_cursor_open
- changed TDSSOCKET->rows_affected from int to TDS_INT8
- added TDSSOCKET->tds9_transaction (used internally for TDS9)
- added TDSCONNECTION->server_host_name needed for Kerberos support
* 0.64
- core library
- reduced network bandwidth use on Linux and *BSD
- do not free TDSSOCKET in tds_connect
- moved network stuff into net.c
- fixed conversion NUMERIC->NUMERIC changing precision/scale
- added named instance support (mssql2k)
- fixed cancel and timeout
- added support for encrypted connection using mssql
(using either GnuTLS or OpenSSL)
- improved numeric conversions performance
- improved debug logging (added "debug flags" option)
- ctlib
- ct_dynamic and friends (placeholder support)
- dblib
- more functions
- made threadsafe
- improved bcp
- support for large files using BCP
- fixed buffering
- ODBC
- fixed compute handling in ODBC
- paramset support
- constant parameters in rpc (ie {?=call func(10,?)} )
- configure use automatically odbc_config if available
- compatibility
- improve PHP support
- improve DBD::ODBC support
- partial dos32 support
- improve JDBC support
- added msvc6 project to build dblib library on windows
- support long password on tsql for all platforms
- improved pool server
- RPMs
- ODBC driver registration (in odbcinst.ini)
- better dependency for RedHat and SUSE
- a lot of fixes
libTDS API changes
- tds_connect does not free TDSSOCKET* on failure
- TDSSOCKET->env is not a pointer anymore
- tds_free_compute_result and tds_free_compute_results are now static
- added TDSDYNAMIC->next for linked list
- removed TDSCURSOR->client_cursor_id
- use TDSCURSOR* cursor instead of TDS_INT client_cursor_it in
tds_cursor_* functions
- added const char* file param to tdsdump_dump_buf and tdsdump_log and
added line information in level
- changed tds_alloc_compute_results declaration, pass a TDSSOCKET*
- removed tds_do_until_done (not used)
- removed tds_set_longquery_handler function (not used)
- changed some fields in TDSSOCKET
- removed out_len (not used)
- renamed cursor to cursors
- removed client_cursor_id
- added cur_cursor (instead of removed client_cursor_id)
- dyns now a pointer to a pointer to first dynamic allocated
- removed num_dyns (now useless with linked list)
- removed chkintr and hndlintr (use longquery_*)
- removed longquery_timeout (use query_timeout)
- renamed longquery_func to query_timeout_func
- renamed longquery_param to query_timeout_param
- queryStarttime to query_start_time
- add a DSTR instance_name to TDSCONNECTION
- add tds7_get_instance_port
- removed tds_free_all_dynamic
- tdsdump_append now static
- new tds_process_tokens to replace removed
- tds_process_result_tokens
- tds_process_row_tokens
- tds_process_row_tokens_ct
- tds_process_trailing_tokens
- removed tds_ctx_set_parent/tds_ctx_get_parent, use parent member
- added void * parent argument to tds_alloc_context
- tds_process_tokens return a TDS_CANCELLED if handle cancellation
- removed query_timeout_func and query_timeout_param from
TDSCONNECTION and TDSLOGIN
- add tds_free_row
- renamed TDSLOCALE->char_set to server_charset
* 0.63
- ODBC: use tds_dstr* functions to store descriptor information
- header privatizations (removing tds.h dependency). This is quite
important for future binary compatibility.
- ODBC: SQLFetch returns error correctly
- ODBC: fix problem rebinding parameters
- ODBC: ability to fetch data types after prepare (needed for Oracle
bindings and OTL library).
- Builds cleanly under OS X.
- Improved BCP support for NULL fields and native file format.
- ct-lib: ct_blk support (bcp for ct-lib).
- ct-lib: Cursors!
- apps: added bsqldb and defncopy.
- iconv: better collation support, e.g. SQL_Scandinavian_CP850_CI_AS
* 0.62
- ct-lib: cursor support
- fixed PHP problem handling empty recordsets. See messages on ML:
Damian Kramer, September 23, "Possible bug in freeTDS"
Steve Hanselman, September 16 "Issue with freetds 0.61.2 ..."
- ODBC: improved, best error report
- ct-lib: support ct_diag (for Python)
- ODBC: fixed SQLMoreResults/SQLRowCount and batch behavior
- ODBC: fixes call to {?=store(?)}
- ODBC: multiple record with
"select id,name from sysobjects where name = 'sysobjects'"
- ODBC: fixed early binding
- ODBC: autodetect iODBC or unixODBC during configure
- ODBC: implemented option 109 in SQLGetConnectOption (for OpenOffice)
- freebcp understand \n as newline. Also \r and \0 (null byte).
- added --without-libiconv configure option to switch off iconv library
- ODBC: test and fixes for NUMERIC parameter
- ODBC: dynamic query
- SQLPutData
- Sybase and blobs
ported code for string building from ODBC to libtds
- extended TDSSOCKET::iconv_info as an array. Keep converters for non-UCS-2
server charsets. Every TDSCOLINFO holding character data should point to
one of these elements.
- dblib: src/dblib/unittests/t0017.c (bcp) fixed
- changed tds_get_char_data(), ML 2 May 2003, "tds_get_char_data and iconv".
- rewrote tds_iconv:
- use iconv() signature.
- rely on TDSCOLINFO::iconv_info for conversion descriptor, instead
of inferring it from the column sizes.
- on read error, emit Msg 2403, Severity 16 (EX_INFO):
"WARNING! Some character(s) could not be converted into client's character
set. Unconverted bytes were changed to question marks ('?')."
- on write error emit Msg 2402, Severity 16 (EX_USER):
"Error converting client characters into server's character set. Some
character(s) could not be converted."
and return an error code. Do not proceed.
- Cf. ML 16 Apr 2003. "conversion error management".
- added doxygen to the nightly build
- "make install" put the UG in PREFIX/share/doc/freetds/userguide
- "make install" put doxygen html in PREFIX/share/doc/freetds/reference
- moved website docs (not UG) to doc/htdoc, put in CVS
- added bcp support to tds/dblib/ctlib. (started in dblib)
- RPC stuff
- added support for TDS 8.0
- TDS 7 Unicode to native charset conversion using iconv
- autoconf the connection pooling stuff
- DBLIB: output params
- set database during login process
- libtds: dynamic query
- ctlib: null returns zero-length string
(see "SELECT '' and TDS 7.0" in message list on 26 Jan 2003)
* Jan 2003
- Version 0.61
- Dynamic SQL
- Output parameters
- Compute rows
- Varbinary support
- dsn-less ODBC connections
- RPC support (db-lib)
- Compatibility with DBD::Sybase 0.95
- 68 new functions! (see doc/api_status.txt)
- Error/message handling rewritten, uses real error numbers
- new sample programs
- much cleaner code, warning-free compiles
- namespace cleanup
- public domain versions of functions for OSs that lack them
- autoconf portability improvements
- builds in HP-UX, Win32, and cygwin
- No dependency on OpenSSL
* Sep 2002
- Version 0.60
- Support for SQL Server 2000 datatypes and domain logins.
- Support and convertibility of all major datatypes.
- Much expanded coverage of the ODBC API.
- An all-new BCP implementation, including host variable support.
- Character set conversions, via the iconv library.
- Threadsafe operation.
* [late 2001?]
- tdspool now working for big endian systems
- Fixed mem leak in ctlib
- Added some descriptive text to the PWD file
- EINTR handling during login (Kostya Ivanov)
- Added support for TLI style interfaces files (thanks Michael for explaining)
- Added 'text size' config option which changes textsize on connect
- Added preliminary TDS 8.0 support (no new datatypes supported though)
- Added 'emulate little endian' config flag
- Some TDS5 placeholder stuff. Not ready for primetime yet.
- Fixed interfaces handling seg fault
* Jul 2001 Brian Bruns