Feedback on dbexpress drivers
Posted: Tue 19 Apr 2005 14:37
We have 80% implemented your drivers as a replacement layer to our old system.
mid sized tables, 500-500,000 record tables at moment. From a few Kb to 300MB. With larger warehouse tables to come. It all works pretty well.
we have come across a few quirks.
1.Since its unidirectional we would hope it would buffer one record at a time not many between open and closes.
Instead, we found that Tsqlquery releases the memory used in last sql statement on Tsqlquery.free instead of on Tsqlquery.close.
Work around being freeing the Tsqlquery all the time.
2. with 'direct' driver (talking directly to mysql server api) utf8 Tfield.size reports as 3 bytes ( one for each character)
via libmysql.dll Tfield.size reports 1 char
This seems inconsistent.
I understand that mysql stores utf8 as 3 bytes but why translate the locale correctly in one case and not the other.
3. We execute a large amount of queries on a single tsqlconnection raipidly. This causes the Mysql server to run out of ports to handle the queries. Tsqlquery.execute throws an exception when th eports run out. Fine.
But we have closed the other queries and would have hoped the ports would be closed.
We work around catching the exception and trying again and again till we get a port. Can take up to nearly a minute. Luckily we this makes it only marginally slower than paradox.
By the way. We have not replicated the above independently of our code. We have too tight deadlines. Our code base is ugly, massive and the data large and complex, so we cannot pass that on as a simple example.
Our set ups is D6/D7, latest drivers and Mysql 4.1.8-4.1.11
thanks
alex
mid sized tables, 500-500,000 record tables at moment. From a few Kb to 300MB. With larger warehouse tables to come. It all works pretty well.
we have come across a few quirks.
1.Since its unidirectional we would hope it would buffer one record at a time not many between open and closes.
Instead, we found that Tsqlquery releases the memory used in last sql statement on Tsqlquery.free instead of on Tsqlquery.close.
Work around being freeing the Tsqlquery all the time.
2. with 'direct' driver (talking directly to mysql server api) utf8 Tfield.size reports as 3 bytes ( one for each character)
via libmysql.dll Tfield.size reports 1 char
This seems inconsistent.
I understand that mysql stores utf8 as 3 bytes but why translate the locale correctly in one case and not the other.
3. We execute a large amount of queries on a single tsqlconnection raipidly. This causes the Mysql server to run out of ports to handle the queries. Tsqlquery.execute throws an exception when th eports run out. Fine.
But we have closed the other queries and would have hoped the ports would be closed.
We work around catching the exception and trying again and again till we get a port. Can take up to nearly a minute. Luckily we this makes it only marginally slower than paradox.
By the way. We have not replicated the above independently of our code. We have too tight deadlines. Our code base is ugly, massive and the data large and complex, so we cannot pass that on as a simple example.
Our set ups is D6/D7, latest drivers and Mysql 4.1.8-4.1.11
thanks
alex