# MiddleKit 1.0 Release Notes

MiddleKit version 1.0 released on 11/29/08

## New Features

- Given an attribute of type list with the name "bars", MK will now not only generate a Python method `addToBars()` for adding objects to the list, but also a method named `delFromBars()` that will make it easy for you to remove an existing object from the list (as suggested by Luke Holden in patch #670051).
- The SQLObjectStore method `executeSQL()` now can commit the SQL statement immediately if you pass in `commit=True`. This is helpful since the standard DB API `execute()` method does not commit automatically, and MySQLdb now follows the standard.
- A method `executeSQLTransaction()` has been added that executes and commits a sequence of SQL statements as a transaction.
- The MySQLObjectStore can now be created with a keyword parameter named `autocommit` that will reestablish the old behavior of MySQLdb of auto commiting every statement if you set to True. But note that by default there will now be no autocommit any more.

## Improvements and Refinements

- Added a lock for accessing the MiddleKit persistent store to avoid race conditions with multithreading (as suggested by Roger Haase).
- Do not allow attributes with some reserved names because they can lead to confusing error messages later (bug report #925481).

## Minor Changes

- The PostgreSQL SQL generator now generates DateTime attributes as timestamps without time zone. This is also the default in newer PostgreSQL versions and in MySQL. It is recommended to simply store all DateTimes as UTC.