++++
News
++++

.. contents:: Contents:
   :backlinks: none

.. _start:

SQLObject 0.10.9
================

* The cache culling algorithm was enhanced to eliminate memory leaks by
  removing references to dead objects; tested on a website that runs around
  4 million requests a day.

SQLObject 0.10.8
================

Released 30 Sep 2009.

* Fixed a bug in logging to console - convert unicode to str.

* Fixed an obscure bug in ConnectionHub triggered by an SQLObject class
  whose instances can be coerced to boolean False.

SQLObject 0.10.7
================

Released 20 Sep 2009.

* Fixed a bug: Sybase tables with identity column fire two identity_inserts.

* Fixed a bug: q.startswith(), q.contains() and q.endswith() escape (with a
  backslash) all special characters (backslashes, underscores and percent
  signs).

SQLObject 0.10.6
================

Released 18 May 2009.

* Better support for Python 2.6: do not import the deprecated sets module.

* A number of changes ported from `SQLObject 0.9.11`_.

SQLObject 0.10.5
================

Released 6 May 2009.

* A number of changes ported from `SQLObject 0.9.10`_.

* sqlmeta.getColumns() becomes classmethod.

SQLObject 0.10.4
================

Released 8 Dec 2008.

* Fixed createSQL constrains generation under MySQL when the table's name
  includes the database's name (contains a dot).

SQLObject 0.10.3
================

Released 1 Dec 2008.

* A number of changes ported from `SQLObject 0.9.8`_.

SQLObject 0.10.2
================

Released 30 May 2008.

* A number of changes ported from `SQLObject 0.9.7`_.

SQLObject 0.10.1
================

Released 4 May 2008.

* Fixed a bug: limit doesn't work in sqlbuilder.Select.

* A number of changes ported from `SQLObject 0.9.6`_.

SQLObject 0.10.0
================

Released 11 Mar 2008.

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

* Dropped support for Python 2.2. The minimal version of Python for
  SQLObject is 2.3 now.

* Removed actively deprecated attributes;
  lowered deprecation level for other attributes to be removed after 0.10.

* SQLBuilder Select supports the rest of SelectResults options (reversed,
  distinct, joins, etc.)

* SQLObject.select() (i.e., SelectResults) and DBConnection.queryForSelect()
  use SQLBuilder Select queries; this make all SELECTs implemented
  internally via a single mechanism.

* SQLBuilder Joins handle SQLExpression tables (not just str/SQLObject/Alias)
  and properly sqlrepr.

* Added SQLBuilder ImportProxy. It allows one to ignore the circular import
  issues with referring to SQLObject classes in other files - it uses the
  classregistry as the string class names for FK/Joins do, but specifically
  intended for SQLBuilder expressions. See
  tests/test_sqlbuilder_importproxy.py.

* Added SelectResults.throughTo. It allows one to traverse relationships
  (FK/Join) via SQL, avoiding the intermediate objects. Additionally, it's
  a simple mechanism for pre-caching/eager-loading of later FK
  relationships (i.e., going to loop over a select of somePeople and ask
  for aPerson.group, first call list(somePeople.throughTo.group) to preload
  those related groups and use 2 db queries instead of N+1). See
  tests/test_select_through.py.

* Added ViewSQLObject.

* Added sqlmeta.getColumns() to get all the columns for a class (including
  parent classes), excluding the column 'childName' and including the column
  'id'. sqlmeta.asDict() now uses getColumns(), so there is no need to
  override it in the inheritable sqlmeta class; this makes asDict() to work
  properly on inheritable sqlobjects.

* Allow MyTable.select(MyTable.q.foreignKey == object) where object is
  an instance of SQLObject.

* Added rich comparison methods; SQLObjects of the same class are
  considered equal is they have the same id; other methods return
  NotImplemented.

* RowDestroySignal is sent on destroying an SQLObject instance; postfunctions
  are run after the row has been destroyed.

* Changed the implementation type in BoolCol under SQLite from TINYINT to
  BOOLEAN and made fromDatabase machinery to recognize it.

* MySQLConnection (and DB URI) accept a number of SSL-related parameters:
  ssl_key, ssl_cert, ssl_ca, ssl_capath.

* Use sets instead of dicts in tablesUsed. Dropped tablesUsedDict function;
  instead there is tablesUsedSet that returns a set of strings.

* SQLBuilder tablesUsedSet handles sqlrepr'able objects.

* Under MySQL, PickleCol no longer used TEXT column types; the smallest
  column is now BLOB - it is not possible to create TINYBLOB column.

SQLObject 0.9.11
================

Released 18 May 2009.

* Two bugs in SQLiteConnection.columnsFromSchema() were fixed: use
  sqlmeta.idName instead of 'id'; convert default 'NULL' to None.

* Use sqlmeta.idName instead of 'id' in all connection classes.

* Fixed a bug that prevented to override per class _connection if there is
  sqlhub.processConnection.

SQLObject 0.9.10
================

Released 6 May 2009.

* Another unicode-related patch for MySQL; required because different
  versions of MySQLdb require different handling::

   - MySQLdb < 1.2.1: only ascii
   - MySQLdb = 1.2.1: only unicode
   - MySQLdb > 1.2.1: both ascii and unicode

* Setup requires FormEncode version 1.1.1+.

* A minor bug was fixed in creating a DecimalValidator - pass the column name
  to it.

* A bug was fixed in InheritableIteration - pass connection to child
  klass.select().

* A bug was fixed in PostgresConnection.columnsFromSchema() - foreign keys
  are now recognized and created as proper ForeignKey with correct
  column name and table name.

* Bugs in PostgresConnection and MSSQLConnection related to properties was
  fixed. A note for developers: from now on properties in DBConnection
  classes are forbidden as they don't work with Transaction -
  Transaction.__getattr__() cannot properly wrap 'self' so a property is
  called with wrong 'self'.

* Transaction instances now explicitly raises TypeError on close() -
  without this calling Transaction.close() calls connection.close() which
  is wrong.

* A bug in SQLiteConnection.columnsFromSchema() that led to an infinite
  loop was fixed.

SQLObject 0.9.9
===============

* Backported from the trunk: under MySQL use the connection's dbEncoding
  instead of ascii, when converting a unicode value from python to database
  for a StringCol.

SQLObject 0.9.8
===============

Released 1 Dec 2008.

* Changed interpretation of strings in the DB URI for boolean parameters:
  '0', 'no', 'off' and 'false' are now interpreted as False.

* Fixed a bug with incorrect handling of calls like
  connectionForURI(dburi, cache=False) when dburi already contains some
  parameters in the URI.

* Convert decimal.to_eng_string() to str to work around a bug in Python 2.5.2;
  see http://mail.python.org/pipermail/python-dev/2008-March/078189.html

* Added test_default_style.py.

* Fixed a minor bug in SQLiteConnection that fails to parse Enum columns.

SQLObject 0.9.7
===============

Released 30 May 2008.

Small Features
--------------

* Use VARCHAR(MAX) and VARBINARY(MAX) for MSSQL >= 9.0.

* Run post_funcs after RowDestroySignal.

Bug Fixes
---------

* Fixed a minor bug in Set column.

* A bug fixed for RowCreatedSignal together with InheritableSQLObject:
  run post_funcs after the entire hierarchy has been created.

* Aggregate functions now honors 'distinct'.

SQLObject 0.9.6
===============

Released 4 May 2008.

* A bug in inheritable delColumn() that doesn't remove properties was fixed.

* A minor bug was fixed in col.py - the registry must be passed to findClass().

* Reverted the patch declarative.threadSafeMethod() - it causes more harm
  then good.

SQLObject 0.9.5
===============

Released 10 Mar 2008.

* Fixed a minor bug in SQLiteConnection.columnsFromSchema() - set dbName.

* A bug in delColumn() that removes all properties was fixed by recreating
  properties.

SQLObject 0.9.4
===============

Released 3 Mar 2008.

* Use list.reverse() in manager/command.py for Python 2.2 compatibility.

* Prevent MultipleJoin from removing the intermediate table if it was not
  created by the Join.

* Fixed a bug with no default when defaultSQL is defined for the column.

* Recognize POINT data type as string in PostgresConnection.columnsFromSchema().

SQLObject 0.9.3
===============

Released 10 Jan 2008.

* A number of changes ported from SQLObject 0.7.10.

SQLObject 0.9.2
===============

Released 30 Oct 2007.

* Fixed a bug in Versioning - do not copy "alternateID" and "unique"
  attributes from the versioned table.

* Fixed a misspelled 'zerofill' option's name.

* Fixed bugs in SQLiteConnection.guessColumn().

* A number of changes ported from SQLObject 0.7.9 and SQLObject 0.8.6.

SQLObject 0.9.1
===============

Released 25 July 2007.

Bug Fixes
---------

* Fixed misspelled methods in col.py.

* A number of bugfixes ported from SQLObject 0.7.8 and SQLObject 0.8.5.

SQLObject 0.9.0
===============

Released 10 May 2007.

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

* Support for Python 2.2 has been declared obsolete.

* Removed actively deprecated attributes;
  lowered deprecation level for other attributes to be removed after 0.9.

* SQLite connection got columnsFromSchema(). Now all connections fully support
  fromDatabase. There are two version of columnsFromSchema() for SQLite -
  one parses the result of "SELECT sql FROM sqlite_master" and the other
  uses "PRAGMA table_info"; the user can choose one over the other by using
  "use_table_info" parameter in DB URI; default is False as the pragma is
  available only in the later versions of SQLite.

* Changed connection.delColumn(): the first argument is sqlmeta, not
  tableName (required for SQLite).

* SQLite connection got delColumn(). Now all connections fully support
  delColumn(). As SQLite backend doesn't implement "ALTER TABLE DROP COLUMN"
  delColumn() is implemented by creating a new table without the column,
  copying all data, dropping the original table and renaming the new table.

* Versioning_.

.. _Versioning: Versioning.html

* MySQLConnection got new keyword "conv" - a list of custom converters.

* Use logging if it's available and is configured via DB URI.

* New columns: TimestampCol to support MySQL TIMESTAMP type;
  SetCol to support MySQL SET type;
  TinyIntCol for TINYINT; SmallIntCol for SMALLINT;
  MediumIntCol for MEDIUMINT; BigIntCol for BIGINT.

Small Features
--------------

* Support for MySQL INT type attributes: UNSIGNED, ZEROFILL.

* Support for DEFAULT SQL attribute via defaultSQL keyword argument.

* cls.tableExists() as a shortcut for conn.tableExists(cls.sqlmeta.table).

* cls.deleteMany(), cls.deleteBy().

Bug Fixes
---------

* idName can be inherited from the parent sqlmeta class.

`Older news`__

.. __: News2.html

.. image:: http://sflogo.sourceforge.net/sflogo.php?group_id=74338&type=10
   :target: http://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
