Here's a weird one for ya:
We're running some speed trials on different databases and we've got Oracle 10, Postgresql, SQL Server and Sybase. All was going well, we were using the native drives in VW for Oracle and Postgres and ODBC drivers for Sql Server and Sybase.
Then the weirdness struck. We realised the #execute statement in Postgres was not creating a cursor, it was actually reading all the results in to memory and then giving a Smalltalk stream back on the array! Good god.
So, we were suddenly forced to use the odbc driver for postgres to get proper streaming. This is when we made an amazing discovery. The ODBC driver for Oracle and Postgres were faster than the native drivers.
By native I mean the Smalltalk implementation talking to the native dll's for the database.
Here are the timings off our crap network to our crap database server.
Native Oracle: 2.5s to retrieve 10,000 records
ODBC Oracle: 0.7s to retrieve 10,000 records
ODBC Postgres: 0.5s to retrieve 10,000 records
Wowee.. what's going on here? Are the native drivers written badly in Smalltalk and the ODBC driver written really well or what?