[freetds] Bug: SQLExecDirect broken in 0.62.1

Lowden, James K LowdenJK at bernstein.com
Fri Mar 5 14:48:40 EST 2004


If you're using the FreeTDS ODBC driver, be aware that it reports errors even when none exists.  If you apply the patch I posted a few days ago, be aware that it will mask real errors.  At least, they are not detected by the src/odbc/unittest/transaction.c unit test if it's been modified to cause them.  

Given this table and procedure:

CREATE TABLE TestTransaction ( value int )
CREATE PROCEDURE testinsert @value int AS
insert into TestTransaction values ( @value )

a clean build of 0.62.1 will return a spurious error for:

SQLCHAR * command="execute TestTransaction 1";
SQLExecDirect(stmt, (SQLCHAR *) command, SQL_NTS);

I tentatively offered a patch for this, but heeded Frediano's warning that it would mask errors involving multiple statements.  He is right.  If the procedure is changed to try to insert a character into an integer field:

CREATE PROCEDURE testinsert @value int AS
insert into TestTransaction values ( @value )
select * from TestTransaction 
insert into TestTransaction values ( 'a' )

SQLExecDirect() will *not* detect the error returned from the server (with my patch applied).  

At this time, there is no fix on offer.  

--jkl


-----------------------------------------
The information contained in this transmission may contain privileged and confidential information and is intended only for the use of the person(s) named above. If you are not the intended recipient, or an employee or agent responsible for delivering this message to the intended recipient, any review, dissemination, distribution or duplication of this communication is strictly prohibited. If you are not the intended recipient, please contact the sender immediately by reply e-mail and destroy all copies of the original message. Please note that we do not accept account orders and/or instructions by e-mail, and therefore will not be responsible for carrying out such orders and/or instructions.
If you, as the intended recipient of this message, the purpose of which is to inform and update our clients, prospects and consultants of developments relating to our services and products, would not like to receive further e-mail correspondence from the sender, please "reply" to the sender indicating your wishes.  In the U.S.: 1345 Avenue of the Americas, New York, NY 10105.





More information about the FreeTDS mailing list