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 15:03:14 +0000

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);



Frediano




Archive powered by MHonArc 2.6.24.

Top of Page