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
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list