[freetds] Adding NVARCHAR columns causes ct_cancel (ctlib) to hang

Igor Korot ikorot01 at gmail.com
Mon Jan 19 14:40:23 EST 2015


Hi,

On Mon, Jan 19, 2015 at 1:57 PM, Gregory Holtorf
<gregory.holtorf at gmail.com> wrote:
> I download the master version at
> https://gitorious.org/freetds/freetds/source/a8bafc940508adcb575d1d72b4ff456c9973f5e4:
> but that version apparently can't ./configure and make on unix (even
> though) some of the readme still says to do that.  Is there a version that
> still works on unix?

Which OS you are working with?
What is an error message you received? Is it from configure or make?
How did you configure the library?

Thank you.

>
> On Sun, Jan 18, 2015 at 3:23 AM, Frediano Ziglio <freddy77 at gmail.com> wrote:
>
>> 2015-01-16 22:17 GMT+00:00 Gregory Holtorf <gregory.holtorf at gmail.com>:
>> > When calling ct_cancel in the freetds library, on unix, ct_cancel()
>> > sometimes takes several minutes to run. This is bad because it usually
>> > takes a few milliseconds to run. This bug works on freetds-0.91 and
>> > freetds-0.64 In order to reproduce the bug, I needed to:
>> >
>> > 1. Run a select statement on a large table
>> >
>> > 2. The table has to contain nvarchar columns. varchar columns do not
>> > trigger the bug.
>> >
>> > 3. The select statement must contain an order by clause
>> >
>> >
>> >   select <nvarchar columns>
>> >
>> >   from <table name>
>> >
>> >   order by <nvarchar column>
>> >
>> >
>> > After completing the select statement, call ct_cancel(). For instance,
>> > before you make another select statement or when you log out.
>> >
>> >   ct_cancel(m_pCtConnection, NULL, CS_CANCEL_ALL);
>> >
>> >
>> > When I turn on logging I can see that after I call ct_cancel() for the
>> last
>> > time, it is followed by an absolutely huge number of packets received.  I
>> > attached a log file, but I had to force quit the program or else the log
>> > file ends up being several thousand megabytes long.
>> >
>> > Is there a way to fix this issue? Is freetds unable to make select
>> > statements on nvarchar columns or is it something I did in my code?
>> >
>> >
>> > Thanks,
>> >
>> > Greg
>> >
>>
>> Hi,
>>   unfortunately is a server problem. Looking at the log FreeTDS
>> correctly send the cancel request but server does not process it in a
>> time fashion so at the end it output all results to client. The only
>> problem can raise from FreeTDS is the conversion from nvarchar(max) ->
>> ntext caused by protocol. You should try with git master version and
>> 7.2 protocol.
>>
>> Frediano
>> _______________________________________________
>> FreeTDS mailing list
>> FreeTDS at lists.ibiblio.org
>> http://lists.ibiblio.org/mailman/listinfo/freetds
>>
> _______________________________________________
> FreeTDS mailing list
> FreeTDS at lists.ibiblio.org
> http://lists.ibiblio.org/mailman/listinfo/freetds


More information about the FreeTDS mailing list