| Author |
Message |
David Guest
|
Posted: Wed Aug 21, 2002 4:48 pm Post subject: Bugs in dbexpsyb.dll |
|
|
Hi all,
just to warn you before spending time and money for this buggy driver:
1. It creates new connection to the server for every single statement (it does not use cursors at all).
2. None of these connections is ever closed - due to a buggy handling of interfaced objects in the driver none of created objects is ever destroyed.
3. For each connection it tries to create a helper table (not taking care if the rights are sufficient for this or not) and inserts 32 integers into it.
This slows down everything very much and if it fails (because of insufficient rights) then the ISQLMetadata.getIndices() does not work.
4. It is mentioned in the FAQ on VISOCO web site, but just to point out - BLOB parameters are not supported.
5. As mentioned above - passing NULL value as a query string parameter causes access violation in dbexpsyb.dll.
As a conclusion, these bugs make impossible any real use of this "product".
Regards,
David Churavy |
|
| Back to top |
|
 |
VISOCO Support VISOCO Software Support
Joined: 16 Jul 2002 Posts: 96
|
Posted: Sun Aug 25, 2002 10:14 pm Post subject: Bugs and Features. |
|
|
Hello.
Thank you for thorough testing.
Really, there are some serious errors yet. Most of them will be plainly fixed in the next build. (like AV when passing null values to a string parameters)
One of the main objectives of this forum is feedback. There are several global problems that cannot be fixed right now. We must know your opinion cause there are mutually exclusive solutions.
Here is the first problem:
>> 1. It creates new connection to the server for every single statement (it does not use cursors at all).
There is a Sybase restriction here. It is impossible to send new command to a server while another command has results pending.
In other words we can have only one active command in a single connection. If we want to use one connection we must fetch all rows returned by previous query before execute another one.
Alternative solutions are:
1. Open a new connection to a server if a current command has unfetched rows.
This is a current implementation and this is relatively simple way. This possibility proposed by dbExpress architecture itself. If ISQLConnection.getOption(eConnMaxActiveComm) returns 1 and there is an active command a new connection will be opened. (see TSQLConnection implementation)
2. Fetch and cache all rows immediately after executing.
This method fraught with resource overheads. It conflicts with dbExpress essential principles.
3. Use Sybase client cursors. This method allows simultaneous results processing but has its own disadvantages. The first and the main one is impossibility of multiple results processing.
This ability is one of useful extraordinary Sybase features.
All offers welcome !
Best regards,
Visoco Software developers. |
|
| Back to top |
|
 |
|
©VISOCO Software. phpBB by phpBB Group
|