Changeset: b2548950fcc8 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/b2548950fcc8
Modified Files:
clients/odbc/driver/ODBCConvert.c
clients/odbc/tests/ODBCtester.c
sql/backends/monet5/vaults/odbc/odbc_loader.c
Branch: Mar2025
Log Message:
Add casts and change formats so that this compiles on 32 bits.
ODBC has some architecture-dependent types, so we need to do something
extra to use the proper format strings
diffs (117 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
@@ -2806,15 +2806,14 @@ ODBCFetch(ODBCStmt *stmt,
ODBCLOG("Writing 16 bytes to %p\n", ptr);
#endif
SQLGUID su;
+ unsigned int sudata1; /* DWORD su.Data1 either long or int */
sscanf(data,
- "%8"SCNx32
- "-%4"SCNx16
- "-%4"SCNx16
- "-%2"SCNx8"%2"SCNx8
- "-%2"SCNx8"%2"SCNx8"%2"SCNx8"%2"SCNx8"%2"SCNx8"%2"SCNx8,
- &su.Data1, &su.Data2, &su.Data3,
+ "%8x-%4hx-%4hx-%2hhx%2hhx"
+ "-%2hhx%2hhx%2hhx%2hhx%2hhx%2hhx",
+ &sudata1, &su.Data2, &su.Data3,
&su.Data4[0], &su.Data4[1],
&su.Data4[2], &su.Data4[3], &su.Data4[4], &su.Data4[5],
&su.Data4[6], &su.Data4[7]);
+ su.Data1 = sudata1;
WriteData(ptr, su, SQLGUID);
if (lenp)
*lenp = sizeof(SQLGUID);
@@ -3348,11 +3347,9 @@ ODBCStore(ODBCStmt *stmt,
case SQL_C_GUID:
u = *(SQLGUID *)ptr;
snprintf(data, sizeof(data),
- "%08"PRIx32"-%04"PRIx16"-%04"PRIx16
- "-%02"PRIx8"%02"PRIx8
- "-%02"PRIx8"%02"PRIx8"%02"PRIx8
- "%02"PRIx8"%02"PRIx8"%02"PRIx8,
- u.Data1, u.Data2, u.Data3,
+ "%08x-%04x-%04x-%02x%02x"
+ "-%02x%02x%02x%02x%02x%02x",
+ (unsigned int) u.Data1, u.Data2, u.Data3,
u.Data4[0], u.Data4[1],
u.Data4[2], u.Data4[3],
u.Data4[4], u.Data4[5],
@@ -3899,12 +3896,9 @@ ODBCStore(ODBCStmt *stmt,
u = *(SQLGUID *)ptr;
snprintf(data, sizeof(data),
"UUID '"
- "%08"PRIx32"-%04"PRIx16"-%04"PRIx16
- "-%02"PRIx8"%02"PRIx8
- "-%02"PRIx8"%02"PRIx8"%02"PRIx8
- "%02"PRIx8"%02"PRIx8"%02"PRIx8
- "'",
- u.Data1, u.Data2, u.Data3,
+ "%08x-%04x-%04x-%02x%02x"
+ "-%02x%02x%02x%02x%02x%02x'",
+ (unsigned int) u.Data1, u.Data2, u.Data3,
u.Data4[0], u.Data4[1],
u.Data4[2], u.Data4[3],
u.Data4[4], u.Data4[5],
diff --git a/clients/odbc/tests/ODBCtester.c b/clients/odbc/tests/ODBCtester.c
--- a/clients/odbc/tests/ODBCtester.c
+++ b/clients/odbc/tests/ODBCtester.c
@@ -266,7 +266,7 @@ testGetDataGUID(SQLHANDLE stmt)
pos += snprintf(outp + pos, outp_len - pos, "NULL\n");
else
pos += snprintf(outp + pos, outp_len - pos,
"%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x\n",
- guid_val.Data1, guid_val.Data2, guid_val.Data3,
+ (unsigned int) guid_val.Data1,
guid_val.Data2, guid_val.Data3,
guid_val.Data4[0], guid_val.Data4[1],
guid_val.Data4[2], guid_val.Data4[3], guid_val.Data4[4], guid_val.Data4[5],
guid_val.Data4[6], guid_val.Data4[7]);
check(ret, SQL_HANDLE_STMT, stmt, "SQLGetData(col)");
}
diff --git a/sql/backends/monet5/vaults/odbc/odbc_loader.c
b/sql/backends/monet5/vaults/odbc/odbc_loader.c
--- a/sql/backends/monet5/vaults/odbc/odbc_loader.c
+++ b/sql/backends/monet5/vaults/odbc/odbc_loader.c
@@ -355,7 +355,7 @@ getErrMsg(SQLSMALLINT handleType, SQLHAN
if (retmsg != NULL) {
if (state[SQL_SQLSTATE_SIZE] != '\0')
state[SQL_SQLSTATE_SIZE] = '\0';
- sprintf(retmsg, format, (char *)state, errnr, (char
*)msg);
+ sprintf(retmsg, format, (char *)state, (int)errnr,
(char *)msg);
return retmsg;
}
}
@@ -942,7 +942,7 @@ odbc_query(int caller, mvc *sql, sql_sub
errmsg = "Failed to alloc memory for largest rescol
string buffer.";
goto finish_fetch;
}
- TRC_DEBUG(LOADER, "Allocated str_val buffer of size %zu\n",
(largestStringSize +1) * sizeof(char));
+ TRC_DEBUG(LOADER, "Allocated str_val buffer of size %lu\n",
(unsigned long) (largestStringSize +1));
if (hasBlobCols) {
if (largestBlobSize == 0) // no valid blob/binary
data size, assume 1048576 (1MB) as default
@@ -954,7 +954,7 @@ odbc_query(int caller, mvc *sql, sql_sub
errmsg = "Failed to alloc memory for largest
rescol binary data buffer.";
goto finish_fetch;
}
- TRC_DEBUG(LOADER, "Allocated bin_data buffer of size
%zu\n", largestBlobSize * sizeof(uint8_t));
+ TRC_DEBUG(LOADER, "Allocated bin_data buffer of size
%lu\n", (unsigned long) (largestBlobSize * sizeof(uint8_t)));
}
/* after allocation of var sized buffers, update targetValuePtr
and bufferLength for those columns */
@@ -1154,8 +1154,8 @@ odbc_query(int caller, mvc *sql, sql_sub
date
mdate_val = date_create(ts_val.year, ts_val.month, ts_val.day);
daytime
daytime_val = daytime_create(ts_val.hour, ts_val.minute, ts_val.second,
ts_val.fraction);
timestamp timestamp_val = timestamp_create(mdate_val, daytime_val);
-
TRC_DEBUG(LOADER, "Data row %lu col %u: timestamp(%04d-%02u-%02u
%02u:%02u:%02u.%06u)\n", row, col+1,
-
ts_val.year, ts_val.month, ts_val.day, ts_val.hour, ts_val.minute,
ts_val.second, ts_val.fraction);
+
TRC_DEBUG(LOADER, "Data row %lu col %u: timestamp(%04d-%02u-%02u
%02u:%02u:%02u.%06lu)\n", row, col+1,
+
ts_val.year, ts_val.month, ts_val.day, ts_val.hour, ts_val.minute,
ts_val.second, (unsigned long) ts_val.fraction);
gdkret
= BUNappend(b, (void *) ×tamp_val, false);
} else {
gdkret
= BUNappend(b, ATOMnilptr(b->ttype), false);
@@ -1259,7 +1259,7 @@ odbc_query(int caller, mvc *sql, sql_sub
break;
case SQL_GUID:
TRC_DEBUG(LOADER, "Data row %lu col %u:
%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x\n", row, col+1,
-
guid_val.Data1, guid_val.Data2, guid_val.Data3, guid_val.Data4[0],
guid_val.Data4[1], guid_val.Data4[2],
+
(unsigned int) guid_val.Data1, guid_val.Data2, guid_val.Data3,
guid_val.Data4[0], guid_val.Data4[1], guid_val.Data4[2],
guid_val.Data4[3], guid_val.Data4[4], guid_val.Data4[5], guid_val.Data4[6],
guid_val.Data4[7]);
if
(colmetadata[col].battype == TYPE_uuid) {
u_val.u[0] = (guid_val.Data1 >> 24) & 0xFF;
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]