Re: Adding NVARCHAR columns causes ct_cancel (ctlib) to hang

Frediano Ziglio <[email protected]>
Newsgroups gmane.comp.db.tds.freetds
Message-ID <CAHt6W4fptkVB4teTqG6MJ87Kar1O5JW7Q9BVGZThxEkpyiCQsw@mail.gmail.com>
2015-01-16 22:17 GMT+00:00 Gregory Holtorf <[email protected]>:
> 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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.