193 #ifdef TDS_HAVE_MUTEX
194 static tds_mutex dblib_mutex = TDS_MUTEX_INITIALIZER;
224 const int list_size =
ctx->connection_list_size_represented;
228 while (i < list_size && ctx->connection_list[
i])
230 if (
i == list_size) {
243 const int list_size =
ctx->connection_list_size;
247 while (i < list_size && ctx->connection_list[
i] !=
tds)
249 if (
i == list_size) {
276 const static char date_format[] =
278 "%b %e %Y %I:%M:%S:%z%p";
280 "%b %d %Y %I:%M:%S:%z%p";
311 if (strlen(oldval) == 1 && *oldval == 1)
389 if (
info->computeid == computeid)
393 if (column < 1 || column >
info->num_cols) {
524 assert(0 ==
"no such datatype");
583 memcpy(varaddr, pnullrep->
bindval, pnullrep->
len);
591 if (pnullrep->
bindval && (varlen <= 0 || (
size_t)varlen >= pnullrep->
len)) {
592 memcpy(varaddr, pnullrep->
bindval, pnullrep->
len);
606 varlen = pnullrep->
len;
614 case SENSITIVITYBIND:
619 if (varlen < (
long)pnullrep->
len) {
621 varaddr, varlen, (
unsigned long int) pnullrep->
len);
626 varaddr, varlen, (
unsigned long int) pnullrep->
len);
636 varaddr += pnullrep->
len;
637 varlen -= (
int)pnullrep->
len;
641 memset(varaddr,
' ', varlen);
644 memset(varaddr,
' ', varlen);
645 varaddr[varlen-1] =
'\0';
651 memset(varaddr, 0, varlen);
657 assert(!
"unknown bindtype");
776 const char *value_nonull =
value ?
value :
"";
861 #if defined(DBLIB_UNIMPLEMENTED)
1009 while (*strp !=
NULL) {
1010 strp = &((*strp)->strnext);
1016 (*strp)->strtotlen = (
DBINT)strlen(p);
1022 memcpy((*strp)->strtext, p, (*strp)->strtotlen);
1023 (*strp)->strnext =
NULL;
1056 if (dbstr ==
NULL) {
1062 if (i < dbstr->strtotlen) {
1078 if (dbstr ==
NULL) {
1088 memcpy(cp,
next->strtext,
next->strtotlen);
1089 cp +=
next->strtotlen;
1124 "transaction isolation level",
1127 "no_identity_column",
1128 "cnv_date2char_short",
1179 char *tdsdump = getenv(
"TDSDUMP");
1180 if (tdsdump && *tdsdump) {
1191 if ((server = getenv(
"TDSQUERY")) ==
NULL)
1192 if ((server = getenv(
"DSQUERY")) ==
NULL)
1303 char *temp_filename =
NULL;
1313 free(temp_filename);
1379 size_t cmd_len, buf_len, newsz;
1396 cmd_len = strlen(cmdstring);
1397 newsz = buf_len + cmd_len + 1;
1402 memcpy(
dbproc->
dbbuf + buf_len, cmdstring, cmd_len);
1467 strcpy(
query,
"use ");
1469 if (name[0] ==
'[' && name[strlen(name)-1] ==
']')
1563 int i, list_size, count = 1;
1576 for (
i = 0;
i < list_size;
i++) {
1614 sprintf(
buf,
"oops: %u ??", retcode);
1623 case REG_ROW:
return "REG_ROW/MORE_ROWS";
1627 case SUCCEED:
return "SUCCEED";
1628 case FAIL:
return "FAIL";
1630 sprintf(
buf,
"oops: %u ??", retcode);
1644 sprintf(
buf,
"oops: %u ??", retcode);
1652 switch(result_type) {
1669 sprintf(
buf,
"oops: %u ??", result_type);
1719 int result_type = 0, done_flags;
1755 switch (result_type) {
2010 case SENSITIVITYBIND:
2027 memcpy(pval, bindval, bindlen);
2129 bool rows_set =
false;
2326 if (typeinfo ==
NULL) {
2344 if (src ==
NULL || srclen == 0) {
2369 srclen = (
int)strlen((
const char *) src);
2380 if (srclen > destlen && destlen >= 0) {
2384 memcpy(dest, src, srclen);
2385 if (srclen < destlen)
2386 memset(dest + srclen, 0, destlen - srclen);
2396 srclen = (
int)strlen((
const char *) src);
2403 while (srclen && src[srclen - 1] ==
' ') {
2408 memcpy(dest, src, srclen);
2409 dest[srclen] =
'\0';
2418 if (srclen > destlen) {
2422 memcpy(dest, src, srclen);
2423 for (
i = srclen;
i < destlen;
i++)
2448 memcpy(dest, src, ret);
2456 memcpy(dest, src, ret);
2472 if (src && dest && srclen > 0 && destlen >= srclen) {
2473 memcpy(dest, src, srclen);
2492 if (
len > destlen && destlen >= 0) {
2496 memcpy(dest, dres.
ib,
len);
2498 memset(dest +
len, 0, destlen -
len);
2526 memcpy(dest, &(dres.
ti),
len);
2542 for (
i =
len - 1;
i >= 0 && dres.
c[
i] ==
' '; --
i) {
2545 memcpy(dest, dres.
c,
len);
2550 memcpy(dest, dres.
c,
len);
2560 srclen, srctype, desttype, destlen,
len);
2563 if (
len > destlen) {
2568 memcpy(dest, dres.
c,
len);
2569 for (
i =
len;
i < destlen;
i++)
2605 int srctype,
const BYTE * src,
DBINT srclen,
int desttype,
BYTE * dest,
DBINT destlen)
2651 tdsdump_log(
TDS_DBG_FUNC,
"dbbind(%p, %d, %d, %d, %p)\n",
dbproc,
column, vartype, varlen, varaddr);
2725 if (filename ==
NULL) {
2992 tdsdump_log(
TDS_DBG_FUNC,
"dbcolinfo(%p, %d, %d, %d, %p)\n",
dbproc,
type,
column, computeid, pdbcol);
3035 if (
info->computeid == computeid)
3040 if (column < 1 || column >
info->num_cols)
3320 len += collen > namlen ? collen : namlen;
3359 size_t padlen, collen, namlen;
3363 if (buf_len <=
len) {
3387 padlen = (collen > namlen ? collen : namlen) -
len;
3391 for (; padlen > 0; padlen--) {
3431 size_t collen, namlen,
len;
3433 int desttype, srctype;
3441 const char *opname, *p;
3444 DBINT computeid, num_cols, colid;
3455 free(col_printlens);
3463 if (col_printlens ==
NULL) {
3470 for (col = 0; col < resinfo->
num_cols; col++) {
3471 colinfo = resinfo->
columns[col];
3474 strcpy(dest,
"NULL");
3483 desttype, (
BYTE *) dest,
sizeof(dest));
3487 p = memchr(dest,
'\0',
len);
3488 fwrite(dest, 1, p ==
NULL ?
len : (p - dest),
3492 padlen = (collen > namlen ? collen : namlen) -
len;
3495 for (; c > -1 && padlen > 0; padlen--) {
3499 if ((col + 1) < resinfo->
num_cols) {
3505 col_printlens[col] = collen;
3512 }
else if (col_printlens ==
NULL) {
3520 free(col_printlens);
3535 for (selcol = col = 1; col <= num_cols; col++) {
3542 while (selcol < colid) {
3543 for (
i = 0;
i < col_printlens[selcol - 1];
i++) {
3555 printf(
"%s", opname);
3557 i < (col_printlens[selcol - 1]
3558 - (
int) strlen(opname));
3564 if ((colid + 1) < num_cols) {
3576 for (selcol = col = 1; col <= num_cols; col++) {
3579 while (selcol < colid) {
3580 for (
i = 0;
i < col_printlens[selcol - 1];
i++) {
3594 for (
i = 0;
i < col_printlens[colid - 1];
i++)
3597 if ((colid + 1) < num_cols) {
3609 for (selcol = col = 1; col <= num_cols; col++) {
3610 colinfo = resinfo->
columns[col - 1];
3620 (
BYTE *) dest,
sizeof(dest));
3627 while (selcol < colid) {
3628 for (
i = 0;
i < col_printlens[selcol - 1];
i++) {
3637 p = memchr(dest,
'\0',
len);
3638 fwrite(dest, 1, p ==
NULL ?
len : (p - dest),
3642 padlen = (collen > namlen ? collen : namlen) -
len;
3646 for (; padlen > 0; padlen--) {
3650 if ((colid + 1) < num_cols) {
3664 free(col_printlens);
3736 size_t i, col,
len, collen, namlen;
3746 for (col = 0; col < resinfo->
num_cols; col++) {
3747 colinfo = resinfo->
columns[col];
3750 len = collen > namlen ? collen : namlen;
3751 for (
i = 0;
i <
len;
i++) {
3758 if ((col + 1) < resinfo->
num_cols) {
3794 int i, collen, namlen;
3806 for (col = 0; col < resinfo->
num_cols; col++) {
3807 colinfo = resinfo->
columns[col];
3810 padlen = (collen > namlen ? collen : namlen) - namlen;
3811 if (buf_len < namlen) {
3820 for (; padlen > 0; padlen--) {
3827 if ((col + 1) < resinfo->
num_cols) {
3859 size_t i, col,
len, collen, namlen;
3868 if (resinfo ==
NULL) {
3871 for (col = 0; col < resinfo->
num_cols; col++) {
3872 colinfo = resinfo->
columns[col];
3875 padlen = (collen > namlen ? collen : namlen) - namlen;
3882 for (; padlen > 0; padlen--) {
3886 if ((col + 1) < resinfo->
num_cols) {
3899 for (col = 0; col < resinfo->
num_cols; col++) {
3900 colinfo = resinfo->
columns[col];
3903 len = collen > namlen ? collen : namlen;
3904 for (
i = 0;
i <
len;
i++)
3906 if ((col + 1) < resinfo->
num_cols) {
3942 #if defined(DBLIB_UNIMPLEMENTED)
3953 dbsetdeflang(
char *language)
4016 old_list[
i] = old_list[j];
4105 tds[
i]->query_timeout = seconds;
4283 tdsdump_log(
TDS_DBG_FUNC,
"dbaltbind(%p, %d, %d, %d, %d, %p)\n",
dbproc, computeid,
column, vartype, varlen, varaddr);
4456 i = atoi(char_param);
4457 if (i < 0 || i > 2147483647)
4483 nrows = atoi(char_param);
4485 nrows = (nrows < 0 )? 100 : nrows;
4487 if( 1 < nrows && nrows <= 2147483647 ) {
4512 i = atoi(char_param);
4645 if (!param_info || !param_info->
columns || retnum < 1 || retnum > param_info->
num_cols)
4671 if (!param_info || !param_info->
columns || retnum < 1 || retnum > param_info->
num_cols)
4700 if (!param_info || !param_info->
columns || retnum < 1 || retnum > param_info->
num_cols)
4704 if (
column->column_cur_size < 0)
4707 return column->column_cur_size;
4776 switch (result_type) {
4824 __FILE__, __LINE__, result_type);
4860 compute_id = computeid;
4866 if (
info->computeid == compute_id)
4870 return info->num_cols;
4927 if (
info->computeid == computeid)
4939 if (
info->by_cols > 0 &&
info->bycolumns[0] != byte_flag) {
4946 for (
n = 0;
n <
info->by_cols; ++
n)
4947 p[
sizeof(
info->bycolumns[0]) +
n] =
info->bycolumns[
n] > 255 ? 255 :
info->bycolumns[
n];
4952 return (
BYTE *) (&
info->bycolumns[1]);
5003 tdsdump_log(
TDS_DBG_FUNC,
"default_err_handler %p, %d, %d, %d, %p, %p",
dbproc, severity, dberr, oserr, dberrstr, oserrstr);
5059 #if defined(DBLIB_UNIMPLEMENTED)