++++
News
++++

.. contents:: Contents:
   :backlinks: none

.. _start:

SQLObject 2.2.1
===============

Released 10 May 2016.

* Fix a bug in sqlbuilder.CONCAT (inherit from SQLExpression).

SQLObject 2.2.0
===============

Released 8 May 2016.

Features & Interface
--------------------

* Add function col.use_microseconds(True/False). Default is to use
  microseconds (True).

* For MSSQL use datetime2(6) and time(6) columns.

* Columns for ForeignKey are created using idType of the referenced
  table.

Minor features
--------------

* Add sqlbuilder.CONCAT to generate concatenation command (either using
  function CONCAT() or '||' operator).

* Minor refactoring to pave the way to Python 3 was merged from
  `SQLObject 1.6.7`_.

* Document MSSQL server versions -- merged from `SQLObject 1.7.6`_.

Bugfixes
--------

* Fix a bug: mxDateTime doesn't support microseconds; %s in mxDateTime
  format means ticks.

Tests
-----

* Speedup SQLite connections in tests -- merged from `SQLObject 1.7.6`_.

* Added new test helper setupCyclicClasses to setup classes with mutual
  references.

SQLObject 2.1.2
===============

Released 15 Mar 2015.

* Using fdb adapter for Firebird was ported from `SQLObject 1.6.6`_.

SQLObject 2.1.1
===============

Released 10 Mar 2015.

* Minor fix in PostgresConnection was ported from `SQLObject 1.6.5`_.

SQLObject 2.1.0
===============

Released 6 Jan 2015.

Minor features
--------------

* In queries generated with SQLObject's tables columns are sorted in the
  order they are declared in the table.

* In queries generated with sqlbuilder's Insert/Update, if values are
  passed using dictionaries, columns are sorted alphabetically.

* Tables in SELECT...FROM clause are sorted alphabetically.

* MySQLConnection, PostgresConnection and SQLiteConnection have got
  a new method listDatabases() that lists databases in the connection
  and returns a list of names.

* MySQLConnection, PostgresConnection and SQLiteConnection have got
  a new method listTables() that returns a list of table names in the database.

SQLObject 2.0.0
===============

Released 20 Dec 2014.

Features & Interface
--------------------

* DateTimeCol and TimeCol can read and write values with microseconds.

  WARNING: microseconds are supported by MariaDB since version 5.3.0 and
  by MySQL since version 5.6.4, and even these versions require special
  handling: columns to store microseconds have to be declared with
  precision 6: TIME(6), DATETIME(6), TIMESTAMP(6). SQLObject does the
  right thing when creating a new database but existing databases have
  to be changed: run something like
  ``ALTER TABLE name MODIFY COLUMN col TIME(6)`` for every column that
  you want to store microseconds.

  For MSSQL use datetime2(6) and time(6) columns. They are available
  since MS SQL Server 2008.

  WARNING: backward compatibility problem! Date/Time columns created
  with microseconds cannot be read back from SQLite databases (and
  perhaps other backends) with versions of SQLObject older than 1.7.

Minor features
--------------

* PostgresConnection, when used with fromDatabase=True, sets alternateID
  for unique columns.

Development
-----------

* Development was switched from Subversion to git.

Documentation
-------------

* Old news were restored back to version 0.2.1.

* News.txt was split into 5 small files.

SQLObject 1.7.6
===============

* Minor refactoring to pave the way to Python 3 was merged from
  `SQLObject 1.6.7`_.

* Document MSSQL server versions -- merged from `SQLObject 1.6.7`_.

* Speedup SQLite connections in tests -- merged from `SQLObject 1.6.7`_.

SQLObject 1.7.5
===============

Released 15 Mar 2015.

* Using fdb adapter for Firebird was ported from `SQLObject 1.6.6`_.

SQLObject 1.7.4
===============

Released 10 Mar 2015.

* Minor fix in PostgresConnection was ported from `SQLObject 1.6.5`_.

SQLObject 1.7.3
===============

Released 18 Dec 2014.

* Documentation updates and setup.py change were ported
  from `SQLObject 1.5.6`_.

SQLObject 1.7.2
===============

Released 14 Dec 2014.

* Fix a bug: zero-pad microseconds on the right, not on the left; 0.0835
  seconds means 83500 microseconds.

SQLObject 1.7.1
===============

Released 11 Dec 2014.

* Documentation updates and setuptools change were ported
  from `SQLObject 1.5.5`_.

SQLObject 1.7.0
===============

Released 8 Dec 2014.

Features & Interface
--------------------

* Python 2.5 is no longer supported. The minimal supported version is
  Python 2.6.

* DateTimeCol and TimeCol can read values with microseconds (created by
  SQLObject 2.0) but do not write microseconds back.

Minor features
--------------

* Upgrade ez_setup to 2.2.

Bugfixes
--------

* Thre bugfixes were ported from `SQLObject 1.5.2`_, `SQLObject 1.5.3`_
  and `SQLObject 1.5.4`_.

SQLObject 1.6.7
===============

* Minor refactoring to pave the way to Python 3: replace calls like
  ``unicode(data, encoding)`` with ``data.decode(encoding)``.

* Document MSSQL server versions.

* Minor fix in HashCol.

* Speedup SQLite connections in tests.

SQLObject 1.6.6
===============

Released 15 Mar 2015.

* Use fdb adapter for Firebird.

SQLObject 1.6.5
===============

Released 10 Mar 2015.

* Minor fix in PostgresConnection: close the cursor and connection
  in _createOrDropDatabase even after an error.

SQLObject 1.6.4
===============

Released 18 Dec 2014.

* Documentation updates and setup.py change were ported
  from `SQLObject 1.5.6`_.

SQLObject 1.6.3
===============

Released 11 Dec 2014.

* Documentation updates and setuptools change were ported
  from `SQLObject 1.5.5`_.

SQLObject 1.6.2
===============

Released 8 Dec 2014.

* A bugfix was ported from `SQLObject 1.5.4`_.

SQLObject 1.6.1
===============

Released 26 Oct 2014.

* A bugfix was ported from `SQLObject 1.5.3`_.

SQLObject 1.6.0
===============

Released 15 May 2014.

Features & Interface
--------------------

* Python 2.4 is no longer supported. The minimal supported version is
  Python 2.5.

* Support for Python 2.5 is declared obsolete and will be removed
  in the next release.

Minor features
--------------

* Upgrade ez_setup to 1.4.2.

Bugfixes
--------

* A bugfix was ported from `SQLObject 1.5.2`_.

Development
-----------

* Development switched from Subvesion to git.

SQLObject 1.5.6
===============

Released 18 Dec 2014.

* Extend setup.py: include docs and tests into the egg.

SQLObject 1.5.5
===============

Released 11 Dec 2014.

* Documentation update: change URLs for development with git, add
  Travis CI build status image.

* Extend sdist: include everything into source distribution.

SQLObject 1.5.4
===============

Released 8 Dec 2014.

* Fix a minor bug in MSSQLConnection: do not override callable server_version
  with a non-callable.

SQLObject 1.5.3
===============

Released 26 Oct 2014.

* Allow unicode in .orderBy(u'-column').

Development
-----------

* Development switched from Subvesion to git.

SQLObject 1.5.2
===============

Released 13 Apr 2014.

* Adapt duplicate error message strings for SQLite 3.8.

SQLObject 1.5.1
===============

Released 15 Dec 2013.

* SQLiteConnection.close() now closes and reopens a connection
  to in-memory database.

SQLObject 1.5.0
===============

Released 5 Oct 2013.

Features & Interface
--------------------

* Helpers for class Outer were changed to lookup columns in table's
  declarations.

* Support for Python 2.4 is declared obsolete and will be removed
  in the next release.

Minor features
--------------

* When a PostgresConnection raises an exception the instance has
  code/error attributes copied from psycopg2's pgcode/pgerror attributes.

* Encode unicode enum values to str.

* Removed setDeprecationLevel from the list of public functions.

* A number of fixes for tests.

Bugfixes
--------

* A bug was fixed in DBConnection.close(); close() doesn't raise
  an UnboundLocalError if connection pool is empty.

* Fixed parameters for pymssql.

Documentation
-------------

* GNU LGPL text was added as docs/LICENSE file.

* Old FSF address was changed to the new one.

SQLObject 1.4.1
===============

Released 26 May 2013.

* A few bugfixes were ported from `SQLObject 1.3.3`_.

SQLObject 1.4.0
===============

Released 18 May 2013.

Features & Interface
--------------------

* Support for PostgreSQL 8.1 is dropped. The minimal supported version of
  PostgreSQL is 8.2 now.

* Optimization in PostgresConnection: use INSERT...RETURNING id
  to get the autoincremented id in one query instead of two
  (INSERT + SELECT id).

* Changed the way to get if the table has identity in MS SQL.

* NCHAR/NVARCHAR and N''-quoted strings for MS SQL.

SQLObject 1.3.3
===============

Released 26 May 2013.

* Fixed bugs in pickling and unpickling (remove/restore a weak proxy to self,
  fixed cache handling).

* Added an example of using SQLObject with web.py by Rhubarb Sin
  to the links page.

SQLObject 1.3.2
===============

Released 20 Oct 2012.

* A number of bugfixes were ported from `SQLObject 1.2.4`_.

SQLObject 1.3.1
===============

Released 25 May 2012.

* Two bugfixes were ported from `SQLObject 1.2.3`_.

SQLObject 1.3.0
===============

Released 31 Mar 2012.

Features & Interface
--------------------

* PostgresConnection performs translation of exceptions to standard
  SQLObject's hierarchy of exceptions.

* Major update of FirebirdConnection: introspection was completely
  rewritten and extended; ``charset`` was renamed to ``dbEncoding``;
  a longstanding bug was fixed - pass port to connect().

SQLObject 1.2.4
===============

Released 20 Oct 2012.

* Fixed a bug in sqlbuilder.Select.filter - removed comparison with
  SQLTrueClause.

* Neil Muller fixed a number of tests.

SQLObject 1.2.3
===============

Released 25 May 2012.

* Fixed a minor bug in PostgreSQL introspection: VIEWs don't have
  PRIMARY KEYs - use sqlmeta.idName as the key.

* Fixed a bug in cache handling while unpickling.

SQLObject 1.2.2
===============

Released 1 Mar 2012.

* A bugfix was ported from `SQLObject 1.1.5`_.

SQLObject 1.2.1
===============

Released 4 Dec 2011.

* A bugfix was ported from `SQLObject 1.1.4`_.

SQLObject 1.2.0
===============

Released 20 Nov 2011.

Features & Interface
--------------------

* Strings are treated specially in Select to allow
  Select(['id, 'name'], where='value = 42'). Update allows a string in
  WHERE.

* ForeignKey('Table', refColumn='refcol_id') to allow ForeignKey to
  point to a non-id column; the referred column must be a unique integer
  column.

* delColumn now accepts a ForeignKey's name without 'ID'.

* Support for PostgreSQL 7.* is dropped. The minimal supported version of
  PostgreSQL is 8.1 now.

* Quoting rules changed for PostgreSQL: SQLObject uses E'' escape string
  if the string contains characters escaped with backslash.

* A bug caused by psycopg2 recently added a new boolean not callable
  autocommit attribute was fixed.

* sqlobject.__doc__ and main.__doc__ no longer contain version number.
  Use sqlobject.version or version_info.

SQLObject 1.1.5
===============

Released 1 Mar 2012.

* A bug was fixed in SQLiteConnection - clear _threadPool on close().

SQLObject 1.1.4
===============

Released 4 Dec 2011.

* A bug was fixed in handling ``modulo`` operator - SQLite implements
  only ``%``, MySQL - only ``MOD()``, PostgreSQL implements both.

SQLObject 1.1.3
===============

Released 30 Aug 2011.

* A bugfix was ported from `SQLObject 1.0.3`_.

SQLObject 1.1.2
===============

Released 8 Aug 2011.

* A bugfix was ported from `SQLObject 1.0.2`_.

SQLObject 1.1.1
===============

Released 1 Jul 2011.

* Parsing sqlobject.__doc__ for version number is declared obsolete. Use
  sqlobject.version or version_info.

* Documented sqlmeta.dbEncoding and connection.dbEncoding.

SQLObject 1.1
=============

Released 20 Jun 2011.

Features & Interface
--------------------

* SelectResults (returned from .select()) is allowed in IN(column, list).

* A different workaround is used in SQLiteConnection to prevent PySQLite
  from converting strings to unicode - in the case of a registered text
  conversion function PySQLite silently converts empty strings to Nones;
  now SQLObject uses text_factory instead and properly returns empty
  strings.

* It is now possible to declare one encoding for all UnicodeCol's per
  table (as sqlmeta.dbEncoding) or per connection (as connection.dbEncoding).
  Default (if dbEncoding is found neither in column nor in table nor in
  connection) is 'utf-8'.

Source code and internals
-------------------------

* Decorators @classmethod and @staticmethod are used everywhere.

* All 'mydict.has_key(name)' checks were replaced with 'name in mydict'.

SQLObject 1.0.3
===============

Released 30 Aug 2011.

* Fixed a bug with Postgres - add quotes in "SET client_encoding" query.

SQLObject 1.0.2
===============

Released 8 Aug 2011.

* A bug was fixed in SelectResults slicing that prevented to slice a
  slice (my_results[:20][1:5]).

SQLObject 1.0.1
===============

Released 30 May 2011.

* A syntax incompatibility was fixed in SQLiteConnection that prevented
  SQLObject to be used with Python 2.4.

SQLObject 1.0.0
===============

Released 28 Mar 2011.

Features & Interface
--------------------

* Major API change: DB URI parser was changed to use urllib.split*() and
  unquote(). This means any username/password/path are allowed in DB
  URIs if they are properly %-encoded, and DB URIs are automatically
  unquoted.

* A new module ``__version__.py`` was added. New variables ``version``
  (string) and ``version_info`` (5-tuple: major, minor, micro, release
  level, serial) are imported into ``sqlobject`` namespace.

* In SQLite, id columns are made AUTOINCREMENT.

* Parameter ``backend`` in DB URI is no longer supported, use parameter
  ``driver``.

`Older news`__

.. __: News4.html

.. image:: https://sourceforge.net/sflogo.php?group_id=74338&type=10
   :target: https://sourceforge.net/projects/sqlobject
   :class: noborder
   :align: center
   :height: 15
   :width: 80
   :alt: Get SQLObject at SourceForge.net. Fast, secure and Free Open Source software downloads
