Skip to Content.
Sympa Menu

freetds - Re: [freetds] Attempt to initiate a new Adaptive Server operation with results pending

freetds AT lists.ibiblio.org

Subject: FreeTDS Development Group

List archive

Chronological Thread  
  • From: Frediano Ziglio <freddy77 AT gmail.com>
  • To: FreeTDS Development Group <freetds AT lists.ibiblio.org>
  • Subject: Re: [freetds] Attempt to initiate a new Adaptive Server operation with results pending
  • Date: Mon, 9 Feb 2015 19:11:32 +0000

2015-02-09 15:03 GMT+00:00 Frediano Ziglio <freddy77 AT gmail.com>:
> Frediano
>
>
> 2015-02-09 13:54 GMT+00:00 LacaK <lacak AT zoznam.sk>:
>> Hi,
>> I have program which uses FreeTDS db-lib.dll
>> Now I have changed TDS version from 7.1 to 7.3 and I start receiving
>> "Attempt to initiate a new Adaptive Server operation with results pending"
>> in some places.
>>
>> For example, when I send this two commands:
>> "IF @@TRANCOUNT>0 ROLLBACK"
>> followed by:
>> "BEGIN TRANSACTION"
>>
>> I get above mentioned error.
>>
>> I attach portion of logs for 7.1 and 7.3 version.
>>
>> As you can see in both cases is returned : more_results = 1 after "IF
>> @@TRANCOUNT>0 ROLLBACK"
>> (I do not understand why?)
>>
>> But in case 7.3 is error raised afterward (in 7.1 no error) Is it expected
>> ?
>> Can you give me some explanation what is going on ?
>>
>> Thanks
>> -Laco.
>> P.S. I resend this email to maillist, because first does not arrive there
>> after 3 days
>>
>
> Can you try this patch ?
>
>
> diff --git a/include/freetds/tds.h b/include/freetds/tds.h
> index 4dd3d93..80574e9 100644
> --- a/include/freetds/tds.h
> +++ b/include/freetds/tds.h
> @@ -215,7 +215,8 @@ enum tds_token_results
> TDS_TOKEN_RES_ROW,
> TDS_TOKEN_RES_COMPUTE,
> TDS_TOKEN_RES_PROC,
> - TDS_TOKEN_RES_MSG
> + TDS_TOKEN_RES_MSG,
> + TDS_TOKEN_RES_ENV,
> };
>
> #define TDS_TOKEN_FLAG(flag) TDS_RETURN_##flag = (1 <<
> (TDS_TOKEN_RES_##flag*2)), TDS_STOPAT_##flag = (2 <<
> (TDS_TOKEN_RES_##flag*2))
> @@ -232,6 +233,7 @@ enum tds_token_flags
> TDS_TOKEN_FLAG(COMPUTE),
> TDS_TOKEN_FLAG(PROC),
> TDS_TOKEN_FLAG(MSG),
> + TDS_TOKEN_FLAG(ENV),
> TDS_TOKEN_RESULTS =
> TDS_RETURN_ROWFMT|TDS_RETURN_COMPUTEFMT|TDS_RETURN_DONE|TDS_STOPAT_ROW|TDS_STOPAT_COMPUTE|TDS_RETURN_PROC,
> TDS_TOKEN_TRAILING =
> TDS_STOPAT_ROWFMT|TDS_STOPAT_COMPUTEFMT|TDS_STOPAT_ROW|TDS_STOPAT_COMPUTE|TDS_STOPAT_MSG|TDS_STOPAT_OTHERS
> };
> diff --git a/src/tds/token.c b/src/tds/token.c
> index e4561dd..1b4c8c5 100644
> --- a/src/tds/token.c
> +++ b/src/tds/token.c
> @@ -826,6 +826,10 @@ tds_process_tokens(TDSSOCKET *tds, TDS_INT
> *result_type, int *done_flags, unsign
> SET_RETURN(TDS_MSG_RESULT, MSG);
> rc = tds_process_default_tokens(tds, marker);
> break;
> + case TDS_ENVCHANGE_TOKEN:
> + SET_RETURN(TDS_MSG_RESULT, ENV);
> + rc = tds_process_default_tokens(tds, marker);
> + break;
> default:
> SET_RETURN(TDS_OTHERS_RESULT, OTHERS);
> rc = tds_process_default_tokens(tds, marker);
>

This patch fix the problem. Wrote a small test to reproduce. Testing right
now.

Frediano




Archive powered by MHonArc 2.6.24.

Top of Page