Changeset: f690f9c5fb92 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f690f9c5fb92 Modified Files: Branch: default Log Message:
Merged from Mar2011 diffs (91 lines): diff --git a/clients/odbc/driver/ODBCConvert.c b/clients/odbc/driver/ODBCConvert.c --- a/clients/odbc/driver/ODBCConvert.c +++ b/clients/odbc/driver/ODBCConvert.c @@ -29,15 +29,19 @@ #if SIZEOF_INT==8 # define ULL_CONSTANT(val) (val) # define O_ULLFMT "u" +# define O_ULLCAST (unsigned int) #elif SIZEOF_LONG==8 # define ULL_CONSTANT(val) (val##UL) # define O_ULLFMT "lu" +# define O_ULLCAST (unsigned long) #elif defined(HAVE_LONG_LONG) # define ULL_CONSTANT(val) (val##ULL) # define O_ULLFMT "llu" +# define O_ULLCAST (unsigned long long) #elif defined(HAVE___INT64) # define ULL_CONSTANT(val) (val##ui64) # define O_ULLFMT "I64u" +# define O_ULLCAST (unsigned __int64) #endif #define MAXBIGNUM10 ULL_CONSTANT(1844674407370955161) /* (2**64-1)/10 */ @@ -257,7 +261,9 @@ if (sscanf(data, "{d '%hd-%hu-%hu'}%n", &dval->year, &dval->month, &dval->day, &n) < 3 && sscanf(data, "%hd-%hu-%hu%n", &dval->year, &dval->month, &dval->day, &n) < 3) return 0; - if (dval->month == 0 || dval->month > 12 || dval->day == 0 || dval->day > monthlengths[dval->month] || (dval->month == 2 && !isLeap(dval->year) && dval->day == 29)) + if (dval->month == 0 || dval->month > 12 || + dval->day == 0 || dval->day > monthlengths[dval->month] || + (dval->month == 2 && !isLeap(dval->year) && dval->day == 29)) return 0; data += n; while (space(*data)) @@ -309,7 +315,10 @@ if (sscanf(data, "{TS '%hd-%hu-%hu %hu:%hu:%hu%n", &tsval->year, &tsval->month, &tsval->day, &tsval->hour, &tsval->minute, &tsval->second, &n) < 6 && sscanf(data, "%hd-%hu-%hu %hu:%hu:%hu%n", &tsval->year, &tsval->month, &tsval->day, &tsval->hour, &tsval->minute, &tsval->second, &n) < 6) return 0; - if (tsval->month == 0 || tsval->month > 12 || tsval->day == 0 || tsval->day > monthlengths[tsval->month] || (tsval->month == 2 && !isLeap(tsval->year) && tsval->day == 29) || tsval->hour > 23 || tsval->minute > 59 || tsval->second > 61) + if (tsval->month == 0 || tsval->month > 12 || + tsval->day == 0 || tsval->day > monthlengths[tsval->month] || + (tsval->month == 2 && !isLeap(tsval->year) && tsval->day == 29) || + tsval->hour > 23 || tsval->minute > 59 || tsval->second > 61) return 0; braces = *data == '{'; tsval->fraction = 0; @@ -1246,7 +1255,7 @@ for (n = 0, f = 1; n < nval.scale; n++) f *= 10; - sz = snprintf(data, buflen, "%s%" O_ULLFMT, nval.sign ? "" : "-", nval.val / f); + sz = snprintf(data, buflen, "%s%" O_ULLFMT, nval.sign ? "" : "-", O_ULLCAST (nval.val / f)); if (sz < 0 || sz >= buflen) { /* Numeric value out of range */ addStmtError(stmt, "22003", NULL, 0); @@ -1265,7 +1274,7 @@ if (lenp) *lenp += nval.scale + 1; if (buflen > 2) - sz = (SQLLEN) snprintf(data, buflen, ".%0*" O_ULLFMT, nval.scale, nval.val % f); + sz = (SQLLEN) snprintf(data, buflen, ".%0*" O_ULLFMT, nval.scale, O_ULLCAST (nval.val % f)); if (buflen <= 2 || sz < 0 || sz >= buflen) { data[buflen - 1] = 0; /* String data, right-truncated */ @@ -2682,10 +2691,10 @@ for (n = 0, f = 1; n < nval.scale; n++) f *= 10; - snprintf(data, sizeof(data), "%s%" O_ULLFMT, nval.sign ? "" : "-", nval.val / f); + snprintf(data, sizeof(data), "%s%" O_ULLFMT, nval.sign ? "" : "-", O_ULLCAST (nval.val / f)); assigns(buf, bufpos, buflen, data, stmt); if (nval.scale > 0) { - snprintf(data, sizeof(data), ".%0*" O_ULLFMT, nval.scale, nval.val % f); + snprintf(data, sizeof(data), ".%0*" O_ULLFMT, nval.scale, O_ULLCAST (nval.val % f)); assigns(buf, bufpos, buflen, data, stmt); } break; @@ -3197,11 +3206,11 @@ addStmtError(stmt, "22001", NULL, 0); } } else { - snprintf(data, sizeof(data), "%s%" O_ULLFMT, nval.sign ? "" : "-", nval.val / f); + snprintf(data, sizeof(data), "%s%" O_ULLFMT, nval.sign ? "" : "-", O_ULLCAST (nval.val / f)); assigns(buf, bufpos, buflen, data, stmt); if (nval.scale > 0) { if (sqltype == SQL_DECIMAL) { - snprintf(data, sizeof(data), ".%0*" O_ULLFMT, nval.scale, nval.val % f); + snprintf(data, sizeof(data), ".%0*" O_ULLFMT, nval.scale, O_ULLCAST (nval.val % f)); assigns(buf, bufpos, buflen, data, stmt); } else { /* Fractional truncation */ _______________________________________________ Checkin-list mailing list Checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list