# POCO Data Library

# POCO Data Release Notes

## Release 1.5.0

The Data library has been available since the 1.2 release. For the 1.5.0 release, a few things have been changed in an incompatible way that requires changes to existing code.

### Summary of Changes

- Poco::Data::RowFormatter class for convenient output formatting.
- Stored procedures support (for databases and ODBC drivers that support it).
- Improved transaction support (for databases that support it).
- Bulk execution (for ODBC drivers that support it).
- Batch queries and multiple results (for databases and ODBC drivers that support it).
- Stored procedures/functions support (for databases that support it)
- New Poco::Data::SessionPoolContainer class.

### Incompatible Changes and Possible Transition Issues

Keywords (use, into, limit, etc) now reside in Poco::Data::Keywords namespace.

## Release 1.5.2

### Summary of Changes

- framework-wide refactoring to use SharedPtr-based garbage collection

### Incompatible Changes and Possible Transition Issues

Internally, (Abstract)Binder, Extracion nas (where applicable) Preparator are garbage collected. While old way of passing pointers to TypeHandler may still work, it is strongly recommended to pass SharedPtr to handler functions, e.g. :

    template <>
    class TypeHandler<Person>
    {
    public:

static std::size_t size() {

    return 3;

}

static void bind(std::size_t pos, const Person& person, AbstractBinder::Ptr pBinder, AbstractBinder::Direction dir) {

    TypeHandler<std::string>::bind(pos++, person.name, pBinder, dir);
    // ...

}

static void extract(std::size_t pos, Person& person, const Person& deflt, AbstractExtractor::Ptr pExtr) {

    TypeHandler<std::string>::extract(pos++, person.name, deflt.name, pExtr);
    // ...

}

static void prepare(std::size_t pos, const Person& person, AbstractPreparator::Ptr pPrep) {

    TypeHandler<std::string>::prepare(pos++, person.name, pPrep);
    // ...

}

    };