freetds AT lists.ibiblio.org
Subject: FreeTDS Development Group
List archive
Re: [freetds] Assertin failed: unknown bindtype with unknown varlen
- From: LacaK <lacak AT zoznam.sk>
- To: FreeTDS Development Group <freetds AT lists.ibiblio.org>
- Subject: Re: [freetds] Assertin failed: unknown bindtype with unknown varlen
- Date: Tue, 07 Apr 2015 13:52:26 +0200
I think we could add some checks to t0019 test.
Yes good idea! may be add line:
TEST((SYBBINARY, "", 0, SYBBINARY, 8), "len=8 00 00 00 00 00 00 00 00 2A 2A");
I was wondering if your patch cover all cases. Probably would be
better to test for bind == BINARYBIND (which catches all binaries like
VARBINARY or IMAGE).
May be. I used it as there was already: if (SYBCHAR == desttype)
Do you think, that this condition should be changed as well: if (bind == NTBSTRINGBIND) ?
I leave decision up to you.
For me are okay both alternatives.
I will be happy if this will be fixed before new release of FreeTDS ;-)Added as a TODO in https://trello.com/b/bk0UZNRJ/freetds-todo-list.
Thanks
-Laco.
ThanksFrediano
-Laco.
P.S. Sorry for previous empty email :-)
_______________________________________________Hi,
I get this error "unknown bindtype with unknown varlen" when calling
dbconvert() in dblib.
This is my situation:
I have table with VARBINARY column with value which is empty not null
(dbdatlen() = 0)
Then I call dbconvert with srctype=SQLBINARY, srclen=0,
desttype=SQLBINARY, destlen > 0 and I get above mentioned assertion.
Looking into dbconvert there is in the begining (note condition:
srclen==0):
if (src == NULL || srclen == 0) {
int bind = dbbindtype(desttype);
int size = tds_get_size_by_type(desttype);
if (SYBCHAR == desttype) {
if (destlen > 0) {
size = destlen;
bind = CHARBIND;
} else {
size = 1;
bind = NTBSTRINGBIND;
}
}
dbgetnull(dbproc, bind, size, dest); // <--- HERE OCCURS
ASSERTION
return size;
}
Next look into dbgetnull():
/*
* For variable-length types, nonpositive varlen indicates
* buffer is "big enough" but also not to pad.
* Apply terminator (if applicable) and go home.
*/
if (varlen <= 0) {
switch (bindtype) {
case STRINGBIND:
case NTBSTRINGBIND:
varaddr[pnullrep->len] = '\0';
/* fall thru */
case CHARBIND:
case VARYCHARBIND:
+ case BINARYBIND: // <--- MISSING HERE ?
+ case VARYBINBIND: // <--- MISSING HERE ?
break;
As BINARYBIND is not handled ATM default is executed:
default:
assert(!"unknown bindtype with unknown varlen");
Can you please fix it ?
Thanks
-Laco.
FreeTDS mailing list
FreeTDS AT lists.ibiblio.org
http://lists.ibiblio.org/mailman/listinfo/freetds
-
Re: [freetds] Assertin failed: unknown bindtype with unknown varlen,
LacaK, 04/01/2015
-
Re: [freetds] Assertin failed: unknown bindtype with unknown varlen,
Frediano Ziglio, 04/04/2015
- Re: [freetds] Assertin failed: unknown bindtype with unknown varlen, LacaK, 04/05/2015
-
Re: [freetds] Assertin failed: unknown bindtype with unknown varlen,
LacaK, 04/07/2015
-
Re: [freetds] Assertin failed: unknown bindtype with unknown varlen,
Frediano Ziglio, 04/07/2015
-
Re: [freetds] Assertin failed: unknown bindtype with unknown varlen,
LacaK, 04/07/2015
-
Re: [freetds] Assertin failed: unknown bindtype with unknown varlen,
Frediano Ziglio, 04/07/2015
-
Re: [freetds] Assertin failed: unknown bindtype with unknown varlen,
LacaK, 04/08/2015
- Re: [freetds] Assertin failed: unknown bindtype with unknown varlen, Frediano Ziglio, 04/08/2015
-
Re: [freetds] Assertin failed: unknown bindtype with unknown varlen,
LacaK, 04/08/2015
-
Re: [freetds] Assertin failed: unknown bindtype with unknown varlen,
Frediano Ziglio, 04/07/2015
-
Re: [freetds] Assertin failed: unknown bindtype with unknown varlen,
LacaK, 04/07/2015
-
Re: [freetds] Assertin failed: unknown bindtype with unknown varlen,
Frediano Ziglio, 04/07/2015
-
Re: [freetds] Assertin failed: unknown bindtype with unknown varlen,
Frediano Ziglio, 04/04/2015
Archive powered by MHonArc 2.6.24.