Change logΒΆ

Change Log
==========

Version 2.x.y - To be released
==============================

Features
--------

- Compatibility with Azure

  It is now possible to transparently connect to `SQL Server instances`_
  accessible as part of the Azure_ cloud services.

  .. note:: If you need to connect to Azure make sure you use FreeTDS 0.91 or newer.

.. _SQL Server instances: http://www.windowsazure.com/en-us/services/sql-database/
.. _Azure: https://www.windowsazure.com/

Version 2.1.0 - 2014-02-25 - `Marc Abramowitz <http://marc-abramowitz.com/>`_
=============================================================================

Features
--------

- Sphinx-based documentation (GH-149)

  Read it online at http://pymssql.org/

  Thanks, Ramiro Morales!

	See:
	* https://github.com/pymssql/pymssql/pull/149
	* https://github.com/pymssql/pymssql/pull/162
	* https://github.com/pymssql/pymssql/pull/164
	* https://github.com/pymssql/pymssql/pull/165
	* https://github.com/pymssql/pymssql/pull/166
	* https://github.com/pymssql/pymssql/pull/167
	* https://github.com/pymssql/pymssql/pull/169
	* https://github.com/pymssql/pymssql/pull/174
	* https://github.com/pymssql/pymssql/pull/175

- "Green" support (GH-135)

	Lets you use pymssql with cooperative multi-tasking systems like
	gevent and have pymssql call a callback when it is waiting for a
	response from the server. You can set this callback to yield to
	another greenlet, coroutine, etc. For example, for gevent, you could
	do::

        def wait_callback(read_fileno):
            gevent.socket.wait_read(read_fileno)

        pymssql.set_wait_callback(wait_callback)

	The above is useful if you're say, running a gunicorn server with the
	gevent worker. With this callback in place, when you send a query to
	SQL server and are waiting for a response, you can yield to other
	greenlets and process other requests. This is super useful when you
	have high concurrency and/or slow database queries and lets you use
	less gunicorn worker processes and still handle high concurrency.

	See https://github.com/pymssql/pymssql/pull/135

- Better error messages.

  E.g.: For a connection failure, instead of:

      pymssql.OperationalError: (20009, 'Net-Lib error during Connection
      refused')

  the dberrstr is also included, resulting in:

      pymssql.OperationalError: (20009, 'DB-Lib error message 20009,
      severity 9:\nUnable to connect: Adaptive Server is unavailable or
      does not exist\nNet-Lib error during Connection refused\n')

  See:
	* https://github.com/pymssql/pymssql/pull/151

	In the area of error messages, we also made this change:

	execute: Raise ColumnsWithoutNamesError when as_dict=True and missing
	column names (GH-160)

	because the previous behavior was very confusing; instead of raising
	an exception, we would just return row dicts with those columns
	missing. This prompted at least one question on the mailing list
	(https://groups.google.com/forum/?fromgroups#!topic/pymssql/JoZpmNZFtxM),
	so we thought it was better to handle this explicitly by raising an
	exception, so the user would understand what went wrong.

	See:
	* https://github.com/pymssql/pymssql/pull/160
	* https://github.com/pymssql/pymssql/pull/168

- Performance improvements

	You are most likely to notice a difference from these when you are
	fetching a large number of rows.

	* Reworked row fetching (GH-159)

	  There was a rather large amount of type conversion occuring when
		fetching a row from pymssql. The number of conversions required have
		been cut down significantly with these changes.
	  Thanks Damien, Churchill!

		See:
		* https://github.com/pymssql/pymssql/pull/158
		* https://github.com/pymssql/pymssql/pull/159

	* Modify get_row() to use the CPython tuple API (GH-178)

    This drops the previous method of building up a row tuple and switches
    to using the CPython API, which allows you to create a correctly sized
    tuple at the beginning and simply fill it in. This appears to offer
    around a 10% boost when fetching rows from a table where the data is
    already in memory.
	  Thanks Damien, Churchill!

		See:
		* https://github.com/pymssql/pymssql/pull/178

- MSSQLConnection: Add `with` (context manager) support (GH-171)

  This adds `with` statement support for MSSQLConnection in the `_mssql`
	module -- e.g.:

        with mssqlconn() as conn:
            conn.execute_query("SELECT @@version AS version")

	We already have `with` statement support for the `pymssql` module.

  See:
	* https://github.com/pymssql/pymssql/pull/171

- Allow passing in binary data (GH-179)

	Use the bytesarray type added in Python 2.6 to signify that this is
	binary data and to quote it accordingly. Also modify the handling of
	str/bytes types checking the first 2 characters for b'0x' and insert
	that as binary data.

	See:
	* https://github.com/pymssql/pymssql/pull/179

- Add support for binding uuid.UUID instances to stored procedures input
  params (GH-143)
	Thanks, Ramiro Morales!
	See:
	* https://github.com/pymssql/pymssql/pull/143
	* https://github.com/pymssql/pymssql/commit/1689c83878304f735eb38b1c63c31e210b028ea7

- The version number is now stored in one place, in pymssql_version.h
  This makes it easier to update the version number and not forget any
	places, like I did with pymssql 2.0.1
	* See https://github.com/pymssql/pymssql/commit/fd317df65fa62691c2af377e4661defb721b2699

- Improved support for using py.test as test runner (GH-183)
  * See: https://github.com/pymssql/pymssql/pull/183

- Improved PEP-8 and pylint compliance

Bug Fixes
---------

- GH-142 ("Change how *.pyx files are included in package") - this
	should prevent pymssql.pyx and _mssql.pyx from getting copied into the
	root of your virtualenv. Thanks, @Arfrever!
	* See: https://github.com/pymssql/pymssql/issues/142

- GH-145 ("Prevent error string growing with repeated failed connection
  attempts.")
	See:
	* https://github.com/pymssql/pymssql/issues/145
	* https://github.com/pymssql/pymssql/pull/146

- GH-151 ("err_handler: Don't clobber dberrstr with oserrstr")
	* https://github.com/pymssql/pymssql/pull/151

- GH-152 ("_mssql.pyx: Zero init global last_msg_* vars")
  See: https://github.com/pymssql/pymssql/pull/152

- GH-177 ("binary columns sometimes are processed as varchar")
  Better mechanism for pymssql to detect that user is passing binary
	data.
  See: https://github.com/pymssql/pymssql/issues/177

- buffer overflow fix (GH-182)
  * See: https://github.com/pymssql/pymssql/pull/181
  * See: https://github.com/pymssql/pymssql/pull/182

- Return uniqueidentifer columns as uuid.UUID objects on Python 3


Version 2.0.1 - 2013-10-27 - `Marc Abramowitz <http://marc-abramowitz.com/>`_
-----------------------------------------------------------------------------
* MANIFEST.in: Add "\*.rst" to prevent install error: "IOError: [Errno 2] No
  such file or directory: 'ChangeLog_highlights.rst'"

Version 2.0.0 - 2013-10-25 - `Marc Abramowitz <http://marc-abramowitz.com/>`_
-----------------------------------------------------------------------------
* First official release of pymssql 2.X (`Cython`_-based code) to `PyPI`_!
* Compared to pymssql 1.X, this version offers:

  * Better performance
  * Thread safety
  * Fuller test suite
  * Support for Python 3
  * Continuous integration via `Travis CI`_
  * Easier to understand code, due to `Cython`_

.. _PyPI: https://pypi.python.org/pypi/pymssql/2.0.0
.. _Travis CI: https://travis-ci.org/pymssql/pymssql
.. _Cython: http://cython.org/
.. _ChangeLog: https://github.com/pymssql/pymssql/blob/master/ChangeLog

Version 2.0.0b1-dev-20130403 - 2013-04-03 - Marc Abramowitz <msabramo@gmail.com>
--------------------------------------------------------------------------------
	* Added tag 2.0.0b1-dev-20130403 for changeset 5d0c980ef8b8
	(b2b2748f7f88)
	* Fix issue 118 ("datetime conversion to sql is not converting
	sub-seconds correctly") - Pad microseconds to 3 digits so it gets
	converted correctly. Thanks, Ken Robbins (kenneth.robbins at gmail)!
	(5d0c980ef8b8)
	* Make tests/test_queries.py actually run tests. It looked like it was
	half-finished and not working. This fills it out and makes it work and
	actually test a few things. (5373541eb899)
	* setup.py: Make it possible to use `python setup.py test`
	(3c32acb41251)
	* Bunch of fixes to eliminate build/install warnings (adb0fc75bfd0,
	fe6cb9aa5120, 446f0005e638, e8d4b19d87b1, 90b2aa2ea01f, 7bb29af4b22c)
	* Add `pymssql.get_dbversion` function that wraps the dbversion
	function in FreeTDS. (1158a5d2be9c)
	* Add a `get_freetds_version` function (a4286224dcf2)
	* Fix issue 109 ("Failure to pass Unicode characters to callproc;
	failing test:
	tests.test_sprocs.TestCallProcFancy.testCallProcWithUnicodeStringWithRussianCharacters"):
	Skip test because it fails with some versions of FreeTDS but passes
	with others. (d05341273673)
	* Fix issue 116 ("A few tests fail if running on a system that has SQL
	Server available on port 1433") (0fc4086447fe)
	* Modify tests/test_config.py to use server='dontnameyourserverthis'
	when doing various tests so it doesn't try to connect to a SQL
	Server listening on localhost:1433 (0fc4086447fe)
	* tox.ini: Add {posargs:-w tests -v} to nosetests invocation so that
	we can pass arguments to tox -- e.g.: to run only specific tests
	(a105878d500d)
	* tox.ini: Add "ipdb" to deps, because the IPython debugger is very
	nice for debugging why tests are failing (be9ee40156cb)
	* Fix issue 114 ("Fix SP name handling in threaded test so we can
	actually run it.") (6ac2b75747ad)
	* Fix issue 100 (Error when executing setup.py {build,develop} on a
	system with no setuptools: "name 'STDevelopCmd' is not defined")
	(5222ee37b2ab)
	* Issue 45 ("Make SQLAlchemy tests part of our testing process"): Add
	tests/run_sqlalchemy_tests.py for running the SQLAlchemy test suite
	with pymssql using the server configured in tests/tests.cfg
	(999d9dbe791b)
	* Fix issue 92 ("Cursor fetch* methods return redundant keys for
	column names and column numbers.") (08ae783880dd)
	* tests/test_connection_as_dict.py:
	bug 18 ("FetchAll fails to return rows when running against a
	connection instantiated with as_dict=True."): Add a test which
	illustrates that the issue is resolved. (058d761cc761)
	* Fix issue 60 ("cursor.execute raise UnicodeDecodeError if query and
	params in unicode"): Add patch from tonal.promsoft and add tests.
	(49210c03a6cf)
	* Add *.c to MANIFEST.in so they get included in sdist and end-users
	don't need to run Cython. (25c1a84aac0c)
	* Fix issue 56 ("callproc do not accept None and unicode string in
	parameters"): Add patch from tonal.promsoft and add tests
	(939eb7939136)
  * version 2.0.0b1-dev-20130403

Version 2.0.0b1-dev-20130108 - 2013-01-08 - Marc Abramowitz <msabramo@gmail.com>
--------------------------------------------------------------------------------
    * change: put compiled FreeTDS for Windows in pymmsql source, add build
	instructions to README, better Visual Studio support (#61)
    + feature: support hostname, port, tds_version connect params without freetds.config
    + feature: make pymssql.Cursor.rownumber give accurate results for executemany()
    + feature: bundle FreeTDS libraries & use static libary includes to avoid
        most end-user-developers needing to mess with FreeTDS
    * change: speed up handling of tuples/lists when quoting (dieterv77)
    - bug #46: better handling for byte strings that don't represent ascii data
    - bug: custom param handling avoids bugs when '%' is used in the SQL (modulus operator)
    - bug: fix pymssql.DBAPIType so that comparisons work as expected
    - bug: fetch*() functions would erroneously raise OperationalError when rows exhausted
    - bug #47: fix threaded tests crashing
    - bug #79: fix prevision problem with floats (dieterv77)
		- bug #14: Add setup.py voodoo that undoes setuptools monkeypatching
		that causes `pip install` to not work with setuptools unless pyrex
		is installed. (86a73a19d5bd)
		- bug #106 (OS X: "Symbol not found: _dbadata" error when importing
		pymssql): Fix OS X build by modifying setup.py so that on OS X we
		don't attempt to link with the bundled FreeTDS *Linux* library.
		(88d15d125586)
		+ feature: Add support for running tox (http://tox.testrun.org/) to
		test across multiple Python versions. (5fa7a6548b31)
		- bug #44: Remove test_long_identifiers from test_sqlalchemy.py
		because SQLAlchemy removed the 30 character limit on identifiers.
		(6585d44eea33)
		- feature: Add setup.py voodoo so that Cython can automatially be
		downloaded if it's not installed instead of an ImportError
		(bb459dd7fd7e)
		- bug #105: Link with librt on Unix platforms that have it (like
		Linux, but not FreeBSD or OS X) to prevent 'undefined symbol:
		clock_gettime' error when importing pymssql. (2b255b1c035f)

Tue Nov 02 09:33:00 2010 Damien Churchill <damoxc@gmail.com>
	* _mssql.pyx:
		+ feature: add support for nullable ints and nullable bits in
		           stored procedure parameters.
		+ feature: add support for positional parameters in stored
		           procedures.
		+ bugfix:  add support for using type subclasses as parameters
		+ bugfix:  correctly report incorrect logins.
		+ feature: add support for setting the application name
		+ bugfix:  accept more than just the decimal.Decimal type for
		           money and decimal parameters.
		+ bugfix:  fix raising exceptions from convert_python_value()
		+ bugfix:  fix binding parameters of int type when larger than
		           2^31 - 1 (raise exception).
		+ bugfix:  use sprintf rather than python strings in the msg_handler
		+ bugfix:  use sprintf rather than python strings in the err_handler
		+ bugfix:  make compatible with Cython 0.13
		+ feature: remove the trusted parameter to connect()
		+ bugfix:  fix issue 15, not setting implicit_transactions on connect
		+ bugfix:  fix issue 32, setting the wrong hostname on login
	* pymssql.pyx:
		+ feature: add initial support for callproc()
		+ feature: add support for setting the application name
		+ bugfix:  fix issue #7, thanks has.temp3
		+ bugfix:  fix issue #10, rowcount property being incorrect
		+ bugfix:  make compatible with Cython 0.13
		+ feature: remove the trusted parameter to connect()
		+ feature: add returnvalue property with the result of a callproc()
		           call.
		+ feature: fix raising exceptions when args[0] is not a string
	* MANIFEST.in:
		+ feature: include the tests
		+ bugfix:  include ez_setup.py
	* setup.py:
		+ bugfix:  fix issue #8, ZipFile don't has the attribute
		           'extractall' error for python2.5
	* version 1.9.909

Wed Apr 28 11:10:00 2010 Damien Churchill <damoxc@gmail.com>
	* MANIFEST.in:
		+ bugfix: fix recursive-include for .pyrex
	* version 1.9.908

Wed Apr 21 16:02:00 2010 Damien Churchill <damoxc@gmail.com>
	* MANIFEST.in:
		+ bugfix: include missing .pyrex folder
	* version 1.9.907

Fri Apr 09 13:16:00 2010 Damien Churchill <damoxc@gmail.com>
	* setup.py:
		+ bugfix: include hack faking that pyrex is installed to workaround
		          a bug in setuptools.
	* _mssql.pyx:
		+ bugfix: add support for connecting using "." and "(local)"
	* pymssql.pyx:
		+ feature: add the output type to be used with callproc()
		+ depreciate: the dsn keyword param to pymssql.connect()
		+ feature: add the get/set_max_connections to pymssql
	* sqlfront.pxd:
		+ feature: tidy up and remove all unused methods.
	* version 1.9.906

Mon Nov 23 13:37:00 2009 Damien Churchill <damoxc@gmail.com>
	* _mssql.pyx:
		+ feature: add support for varbinary types
		+ feature: add support for passing in charset to _quote_data
		+ bugfix: rename MSSQLConnection.next_result to
		          MSSQLConnection.nextresult as before
		+ bugfix: set the charset upon login
		+ feature: rewrite _remove_locale using C types instead, 20x faster
		+ feature: add a charset param to quote_data and relating funcs that
		           allows the charset to be specified for unicode encodes.
	* pymssql.pyx:
		+ feature: add DSN support that was missing
		+ bugfix: fix rowcount property
	* sqlfront.pxd:
		add DBSETLCHARSET
	* tests:
		+ feature: add test for multiple results
	* setup.py:
		+ feature: fix building on windows
		+ feature: clean generated C files in the clean command
		+ feature: automatically extract freetds.zip on windows when
		           building
	* version 1.9.903

Fri Nov 20 13:03:00 2009 Damien Churchill <damoxc@gmail.com>
	* mssqldbmodule.c: deprecated in favour of _mssql.pyx
	* pymssql.py: deprecated in favour of pymssql.py
	+ feature: added support for uniqueidentifier types
	+ feature: added support for calling remote procedures programmatically
	* version 1.9.901

Tue May 12 15:43:00 2009  Andrzej Kukula <akukula@gmail.com>
	* mssqldbmodule.c:
		+ bugfix: pymssql didn't return second, third etc. result set
			in case of multi-result statements, e.g. 'SELECT 1; SELECT 2',
			thanks Damien Churchill <damoxc@users.sourceforge.net>

Wed Apr 29 19:31:00 2009  Andrzej Kukula <akukula@gmail.com>
	* mssqldbmodule.c:
	  + fixed possible memory leak, thanks Evgeny Cherkashin
		<eugene.adm@gmail.com>

Tue Apr 23 23:00:00 2009  Andrzej Kukula <akukula@gmail.com>
	+ bugfix: fixed rare quoting bug in select_db()
	+ feature: added 'max_conn' parameter to pymssql.connect() and
	  _mssql.connect() which defaults to 25, thanks Daniel Watrous
	  <dwmaillist@gmail.com>
	* nagios-plugin update - thanks Josselin Mouette <joss@debian.org>:
	  + Include a -P port option, to avoid having to passing it with the
		host name
	  + Fix the encoding of the comments; utf-8 is the declared encoding
		of the file and must be followed
	  + Fix a typo in the SQL syntax
	  + Connect explicitly to the "master" database (required since 1.0.0)
	  + Improve perfdata output.
	* version 1.0.2

Tue Apr 21 22:56:00 2009  Andrzej Kukula <akukula@gmail.com>
	* mssqldbmodule.c:
	  + bugfix in format_and_run_query(): query strings were sometimes
		overwritten with garbage due to DECREF in wrong place; thanks
		Igor Nazarenko <igor.n.nazarenko@gmail.com>
	  + bugfix in get_result(): if a query batch contained DECLARE or
		possibly other T-SQL statements, no results were returned
		thanks Kay Schluehr <schluehrk@users.sourceforge.net>
	  + bugfix in execute_scalar(): check if there are any columns in result
	  + bugfix: check for FAIL after each dbnextrow()
	  + feature: Add support for bigint - #2660972; thanks Alexandr
		Zamaraev <shura_zam@users.sourceforge.net>
	* pymssql.c:
	  + bugfix in execute(): if execute is called without second argument,
		don't treat '%' in query string as formatting character; restored
		compatibility with common sense and with pymssql < 1.0.0; thanks
		Corey Bertram <corey.bertram@monitoredsecurity.com>,
		Wes McKinney <wesmckinn@gmail.com>
	  + feature: it is possible to specify 'as_dict' to pymssql.connect
		and rows will be returned as dictionaries instead of tuples;
		thanks Daniel Watrous <dwmaillist@gmail.com>

Thu Jan 30 18:36:00 2009  Andrzej Kukula <akukula@gmail.com>
	* mssqldbmodule.c:
	  + Pyssize_t error on x64 - thanks Josselin Mouette <joss@debian.org>
	  + critical charset updates, thanks Josselin Mouette <joss@debian.org>
	  + more Py_ssize_t updates, further code cleanups
	  + fixed some compiler warnings
	* pymssql.py:
	  + execute() failed, thanks Josselin Mouette <joss@debian.org>
	  + critical charset updates, thanks Josselin Mouette <joss@debian.org>
	  + removed warnings, users don't want them and they are not 'MUST'
		priority in DB-API spec
	* nagios-plugin: introducted Nagios plugin, thanks Julien Blache
	  and Josselin Mouette
	* version 1.0.1

Thu Jan 29 19:23:00 2009  Andrzej Kukula <akukula@gmail.com>
	* version 1.0.0
	* so many changes I'll not put them here, I'll document
	  changes from now on.

Mon Sep 25 20:18:00 2006  Andrzej Kukula <akukula@gmail.com>
	* setup.py: fix for Fink (http://Fink.SF.Net) under OS X (thanks
	  Terrence Brannon <metaperl@gmail.com>)

Sun Sep 24 10:44:00 2006  Andrzej Kukula <akukula@gmail.com>
	* setup.py:
	  + it can now dynamically determine the path to SQL 2000 Developer
		Tools, if win32api and win32con modules are available
	  + simple Python version check to prevent most frequently asked
		question
	  + version 0.8.0

Wed Sep 13 01:20:00 2006  Andrzej Kukula <akukula@gmail.com>
	* mssqldbmodule.c:
	  + corrected misspellings in docstrings
	  + fixed segfault on connection close with Python 2.5; thanks
		Justin Francis <jfrancis@pivotalpayments.com>
	* pymssql.py:
	  + fixed two minor DB-API incompatibilities (thanks Matthew Good
		<matt@matt-good.net>)
	  + fixed datetime quoting (thanks Jan Finell <jfinell@regionline.fi>)
	* pymssql should be able to build on cygwin (thanks
	  rob@robnet.com)
	* docstring fixes, webpage doc updates

Tue May 15 03:18:00 2006  Jooncheol Park <exman@users.sourceforge.net>
	* setup.py, PKG-INFO, README: license change to LGPL

Wed Mar 15 08:18:00 2006  Andrzej Kukula <akukula@users.sourceforge.net>
	* pymssql.py: fixed datetime issue (thanks Jan Finell
	  <jfinell@regionline.fi>)

Fri Feb 24 16:11:00 2006  Andrzej Kukula <akukula@users.sourceforge.net>
	* mssqldbmodule.c: fixed typos in docstrings (thanks Konstantin
	  Veretennicov)

Tue Dec 27 15:14:00 2005  Andrzej Kukula <akukula@users.sourceforge.net>
	* mssqldbmodule.c: bug fixes, improvements and cleanups:
	  + implemented set_login_timeout() and set_query_timeout() functions;
	  + eliminated unnecessary ODBC code
	  + cleaned up exception code and improved exception handling,
		SF bug #1335560
	  + web page now correctly mentions FreeTDS 0.63 as the minimal
		required version
	  + stdmsg() method is now deprecated; all errors are concatenated
		in errmsg()
	  + implemented min_error_severity: all errors at or above that
		level will raise the exception; if the severity is lower, they
		will just accumulate in errmsg()
	  + added setting coltype to NUMBER for float types (found by
		Jakub Labath)
	* setup.py:
	  + reincarnated ntwdblib.dll which turned out to be redistributable
		after all; pymssql includes the latest version that allows
		connecting to SQL 2005; eliminated some stupid notes from the
		web page and will ease set up process for users
	* apitest_mssql.py: new file
	  + provided by Jakub Labath, this file performs some basic DB-API
		compliance tests; it immediately triggered the unicode bug
	* version 0.7.4

Sat Oct 22 19:41:00 2005  Andrzej Kukula <akukula@users.sourceforge.net>
	* mssqldbmodule.c: multithreading improvements - from now on pymssql
	  is thread-safe, it releases GIL in proper places; idea and initial
	  patch by John-Peter Lee (thanks very much!)

Mon Sep 5 23:29:00 2005  Andrzej Kukula <akukula@users.sourceforge.net>
	* setup.py: fixed an installation issue regarding importing pymssql
	  that imports _mssql which isn't installed, and blows up with
	  AttributeError... (thanks Vsevolod Stakhov)
	* version 0.7.3

Mon Sep 5 00:32:00 2005  Andrzej Kukula <akukula@users.sourceforge.net>
	* version 0.7.2

Sun Sep 4 23:12:00 2005  Andrzej Kukula <akukula@users.sourceforge.net>

	* mssqldbmodule.c: improvements and cleanups:
	  + improved error handling: if the db function fails, the exception
		is thrown automatically and immediately; no need to check
		return value of conn.query(), just catch _mssql.error
	  + improved error handling: it is possible that MS SQL calls message
		handler twice; now _mssql catches and reports both of them at once
	  + improved error handling: in some cases _mssql.query() returns
		success but the results are invalid; now it is handled properly
		(example "SELECT CAST(1234.5678 AS NUMERIC(4,2))")
	  + added proper connection initialization: a number of SET statements
		are executed upon connection setup to set sensible SQL behaviour;
		see source for details; one needs to unset them if needed
	  + implemented min_{message|error}_severity as it is in php_mssql
		to ignore unimportant errors; it's work in progress
	  + new function rmv_lcl() initially by Mark Pettit, to strip locale
		crap from MONEY values converted to SQLCHAR while generating
		Decimal object
	  + other small fixes, improvements and janitorial work

Tue Aug 30 00:16:00 2005  Andrzej Kukula <akukula@users.sourceforge.net>

	* mssqldbmodule.c: new features:
	  + large numbers (DECIMAL, NUMERIC, MONEY, SMALLMONEY) are returned
		as Decimal object -- this helps maintain accuracy; thanks to
		Mark Pettit for help
	  + COMPUTE clauses are supported (it wouldn't fetch data for those
		columns before)
	  + ROWID type has been removed from _mssql module
	  + new type DECIMAL to denote Decimal objects in result set

Mon Aug 29 21:59:00 2005  Andrzej Kukula <akukula@users.sourceforge.net>

	* mssqldbmodule.c: some improvements:
	  + BIT values are returned as Python bool objects, suggested by
		Mark Pettit
	  + close() method returns None on success (not to be used at all)
		and throws exception on error
	  + fixed use of uninitialized value when parsing SMALLDATETIME
	  + another round of performance improvements in GetRow() - eliminated
		unnecessary data conversions and unneeded DB-Lib calls
	  + janitorial fixes

Mon Aug 22 04:35:00 2005  Andrzej Kukula <akukula@users.sourceforge.net>

	* mssqldbmodule.c: massive diff:
	  + fixed bug with fetching query results of some data types;
		found by Mark Pettit
	  + fixed IndexError when query returns no rows; patch by Jakub Labath
	  + rewritten function GetRow() that fetches query results: performance
		improvements, better handling of result data types; datetime
		is returned as datetime object instead of string (it's more
		consistent with other values -- and more pythonic :)
	  + eliminated DetermineRowSize()
	  + cleanups: _mssql_init() further improvements w.r.t. Python API
	  + janitorial fixes
	  + added licensing information
	* pymssql.py: docstring changed to look nicer with help()
	* version 0.7.2

Thu Aug 11 02:12:00 2005  Andrzej Kukula <akukula@users.sourceforge.net>

	* mssqldbmodule.c: improved module init function: added doc string,
	  made compliant with Python 2.0+ module interface (there are no more
	  coredumps on help())
	* mssqldbmodule.c: documented that _mssql.connect() is not portable
	  between FreeTDS-dependent platforms and Windows platforms; documented
	  host:port usage

Sat Jul 23 14:20:00 2005  Andrzej Kukula <akukula@users.sourceforge.net>

	* mssqldbmodule.c: eliminated problems with Python exiting upon
	  invalid login credentials with FreeTDS - the culprit was INT_EXIT
	  and FreeTDS setting DBDEAD
	* mssqldbmodule.c: added better error messages (esp. on Windows)
	* mssqldbmodule.c: added msg_handler and err_handler debugging
	* 0.7.1 packages re-released

Fri Jul 22 03:19:00 2005  Andrzej Kukula <akukula@users.sourceforge.net>

	* mssqldbmodule.c: major change; module revamped to support some
	  more builtin Python features; some redundant code removed; memset()
	  removed as there were no benefits but performance decrease
	* mssqldbmodule.c: help(_mssql) works; help for conn object works too
	* pymssql.py: _quote: removed escaping backslash -- with MSSQL it is
	  only needed to escape single quotes by duplicating them
	* pymssql.py: pymssqlCnx class: added a few checks to properly support
	  DB-API 2.0 (see .close() in PEP 249)
	* version 0.7.1

Wed Jul 20 22:12:00 2005  Andrzej Kukula <akukula@users.sourceforge.net>

	* mssqldbmodule.c: removed the workaround for date issue; there were
	  more problems than benefits
	* mssqldbmodule_tds.c: removed
	* some more cleanups and corrections

Tue Jul 19 14:23:00 2005  Andrzej Kukula <akukula@users.sourceforge.net>

	* mssqldbmodule.c: major change; many portability problems fixed
	* mssqldbmodule.c: eliminated port setting; this is job for freetds.conf
	* mssqldbmodule_tds.c: module to get FreeTDS compile-time settings
	* build fixes; now it builds cleanly on FreeBSD, Linux and Windows
	* version 0.7.0

Mon Jul 18 15:21:00 2005  Andrzej Kukula <akukula@users.sourceforge.net>

	* mssqldbmodule.c: fix build on Windows: changed MS_WIN32 to MS_WINDOWS
	  reported by Mirek Rusin <mirek.rusin@onet.pl>
	* mssqldbmodule.c: many small fixes and cleanups; janitorial fixes;
	  indentation using indent(1L)
	* ChangeLog fix! 'mysql' was mentioned instead of 'mssql'...

Fri Feb 25 02:15:01 2005  Andrzej Kukula <akukula@users.sourceforge.net>

	* Fix build on Windows with Visual Studio .NET 2003
	  and MS SQL Server 2000 SP3a
	* mssqldbmodule.c: Fix compile error with Visual Studio .NET 2003
	* mssqldbmodule.c: Add detection/workaround for date issue caused by
	  different dbdatecrack() prototypes
	* README.freetds: describe dbdatecrack()-related issue

Thu Feb 24 02:03:14 2005  Alejandro Dubrovsky  <alito@organicrobot.com>

	* Export column type names
	* mssqldbmodule.c:  Return column type information for headers
	* Use type information to make cursor.description conform to API 2

2005-02-17  Alejandro Dubrovsky  <alito@organicrobot.com>

	* Apply patch by Rob Nichols to get cursor.description closer to API 2 compliance

2005-02-08  Alejandro Dubrovsky  <alito@organicrobot.com>

	* Message changes in mssqldbmodule.c (typos, grammar, etc)

2005-02-07  Alejandro Dubrovsky  <alito@organicrobot.com>

	* Added ChangeLog
	* API Change:  add 6th parameter 'port' to connect
	* Don't close connection on cursor close (noted by Alberto Pastore on the sourceforge project page)
	* Make cursor.fetchone comply with DB-SIG return a tuple, not a list of tuples (report and patch by Chris Curvey)