The POCO C++ Libraries Blog

Archive: December, 2007

Season’s Greetings

Filed under: Uncategorized by guenter at 18:02

A Merry Christmas and a Happy New Year to all contributors, users and friends of POCO!
And a big Thank You to everyone who contributed – be it in the form of code, bug reports, feature requests or just general comments.

2007 was a great year for POCO, and 2008 is going to be even better!


The Incredible Bulk

Filed under: News by alex at 02:11

OK, forget about the step I mentioned before – it’s gone and we have true bulk instead. For the drivers/connectors that support it properly, that is. Namely, when one gets into implementation of more advanced features, some ODBC drivers simply do not live up to the expectations. I was not able to find PostgreSQL driver that will do multiple recordsets. When it comes to bulk operations (a.k.a. “array binding”), results are varying. Oracle is a champion when you bind integers (10,000 ints, ~500x speedup). Put some strings into mix, things will get slower, but still significantly better than normal mode. BLOBs? You may end up with no difference.

At any rate, I have decided to put bulk in and keep it because it allows us to scale. Achieving speedups at the order of magnitude of hundreds is nothing to sneeze at, even if it’s for limited scenarios. I’ve seen 2-6x speedups with MS SQL Server (with strings and BLOBs) and similar with PostgreSQL (although I was not able to do bulk with BLOBs for PostgreSQL). Based on the results, I think it will be useful in many cases. For the time being, it is only allowed for single direction (in for parameters, out for recordsets) and std::vector.

Here’s what the insert code looks like:

std::vector<int> ints(100, 1);
session << "INSERT INTO Test VALUES (?)", use(ints, bulk), now;

And for select:

std::vector<int> ints;
session << "SELECT * FROM Test", bulk(100), use(ints), now;
session << "SELECT * FROM Test", use(ints, bulk(100)), now;

As usual, manual is up to date.

I’d say, this makes Data feature complete for the time being. What remains is polishing for the next big release. Early adopters are strongly encouraged to check it out and play with it. Feedback is essential to make good things better.

For1.3.1. users, I have patched few bugs. Some are rather serious, so please update to the latest code. Results are in SVN (1.3.2. branch).

XML Schema support, Part 2

Filed under: News by peter at 11:30

The XML schema support library has reached a state where I can say: yep, it’s doing something useful. I gave it a test run with the MPEG-7 schema files (one of the larger schemas I know). More than 300 C++ header and source files are generated in less than a few seconds, all beautifully and consistently formatted.

You just have to love code generation 🙂

There are still some open issues, like choice types which are currently treated as sequences (but this is easily handled, already got the code in my head, just need to transfer it to my PC…), WSDL file parsing and web service generation is not yet implemented, serializing and deserializing to/from XML files is also missing (currently only possible in combination with PocoRemoting, need to refactor that), and well, there are probably still some bugs.

An early preview of the XML schema package is available for those not intimidated by the occasional bug.
Simply post an email to either support at or write to one of us directly.