Skip to content

Commit 21739f0

Browse files
committed
cleanup
1 parent 5077ec5 commit 21739f0

File tree

1 file changed

+35
-73
lines changed

1 file changed

+35
-73
lines changed

mssql_python/pybind/ddbc_bindings.cpp

Lines changed: 35 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -1963,82 +1963,44 @@ SQLRETURN BindParameterArray(SQLHANDLE hStmt,
19631963
bufferLength = sizeof(SQL_NUMERIC_STRUCT);
19641964
break;
19651965
}
1966-
// case SQL_C_GUID: {
1967-
// SQLGUID* guidArray = AllocateParamBufferArray<SQLGUID>(tempBuffers, paramSetSize);
1968-
// strLenOrIndArray = AllocateParamBufferArray<SQLLEN>(tempBuffers, paramSetSize);
1969-
1970-
// for (size_t i = 0; i < paramSetSize; ++i) {
1971-
// if (columnValues[i].is_none()) {
1972-
// std::memset(&guidArray[i], 0, sizeof(SQLGUID));
1973-
// strLenOrIndArray[i] = SQL_NULL_DATA;
1974-
// } else {
1975-
// if (!py::isinstance<py::bytes>(columnValues[i])) {
1976-
// ThrowStdException(MakeParamMismatchErrorStr(info.paramCType, paramIndex));
1977-
// }
1978-
// py::bytes uuid_bytes = columnValues[i].cast<py::bytes>();
1979-
// const unsigned char* uuid_data = reinterpret_cast<const unsigned char*>(PyBytes_AS_STRING(uuid_bytes.ptr()));
1980-
// if (PyBytes_GET_SIZE(uuid_bytes.ptr()) != 16) {
1981-
// ThrowStdException("UUID binary data must be exactly 16 bytes long.");
1982-
// }
1983-
1984-
// // Map bytes to SQLGUID fields
1985-
// guidArray[i].Data1 = (static_cast<uint32_t>(uuid_data[3]) << 24) |
1986-
// (static_cast<uint32_t>(uuid_data[2]) << 16) |
1987-
// (static_cast<uint32_t>(uuid_data[1]) << 8) |
1988-
// (static_cast<uint32_t>(uuid_data[0]));
1989-
// guidArray[i].Data2 = (static_cast<uint16_t>(uuid_data[5]) << 8) |
1990-
// (static_cast<uint16_t>(uuid_data[4]));
1991-
// guidArray[i].Data3 = (static_cast<uint16_t>(uuid_data[7]) << 8) |
1992-
// (static_cast<uint16_t>(uuid_data[6]));
1993-
// std::memcpy(guidArray[i].Data4, &uuid_data[8], 8);
1994-
1995-
// strLenOrIndArray[i] = sizeof(SQLGUID);
1996-
// }
1997-
// }
1998-
1999-
// dataPtr = guidArray;
2000-
// bufferLength = sizeof(SQLGUID);
2001-
// break;
2002-
// }
2003-
case SQL_C_GUID: {
2004-
SQLGUID* guidArray = AllocateParamBufferArray<SQLGUID>(tempBuffers, paramSetSize);
2005-
strLenOrIndArray = AllocateParamBufferArray<SQLLEN>(tempBuffers, paramSetSize);
2006-
2007-
py::object uuid_type = py::module_::import("uuid").attr("UUID");
2008-
2009-
for (size_t i = 0; i < paramSetSize; ++i) {
2010-
if (columnValues[i].is_none()) {
2011-
std::memset(&guidArray[i], 0, sizeof(SQLGUID));
2012-
strLenOrIndArray[i] = SQL_NULL_DATA;
2013-
} else if (py::isinstance(columnValues[i], uuid_type)) {
2014-
py::bytes uuid_bytes = columnValues[i].attr("bytes");
2015-
const unsigned char* uuid_data = reinterpret_cast<const unsigned char*>(PyBytes_AS_STRING(uuid_bytes.ptr()));
2016-
2017-
if (PyBytes_GET_SIZE(uuid_bytes.ptr()) != 16) {
2018-
ThrowStdException("UUID binary data must be exactly 16 bytes long.");
2019-
}
1966+
case SQL_C_GUID: {
1967+
SQLGUID* guidArray = AllocateParamBufferArray<SQLGUID>(tempBuffers, paramSetSize);
1968+
strLenOrIndArray = AllocateParamBufferArray<SQLLEN>(tempBuffers, paramSetSize);
20201969

2021-
guidArray[i].Data1 = (static_cast<uint32_t>(uuid_data[3]) << 24) |
2022-
(static_cast<uint32_t>(uuid_data[2]) << 16) |
2023-
(static_cast<uint32_t>(uuid_data[1]) << 8) |
2024-
(static_cast<uint32_t>(uuid_data[0]));
2025-
guidArray[i].Data2 = (static_cast<uint16_t>(uuid_data[5]) << 8) |
2026-
(static_cast<uint16_t>(uuid_data[4]));
2027-
guidArray[i].Data3 = (static_cast<uint16_t>(uuid_data[7]) << 8) |
2028-
(static_cast<uint16_t>(uuid_data[6]));
2029-
std::memcpy(guidArray[i].Data4, &uuid_data[8], 8);
2030-
2031-
strLenOrIndArray[i] = sizeof(SQLGUID);
2032-
} else {
2033-
ThrowStdException(MakeParamMismatchErrorStr(info.paramCType, paramIndex));
2034-
}
2035-
}
1970+
py::object uuid_type = py::module_::import("uuid").attr("UUID");
20361971

2037-
dataPtr = guidArray;
2038-
bufferLength = sizeof(SQLGUID);
2039-
break;
2040-
}
1972+
for (size_t i = 0; i < paramSetSize; ++i) {
1973+
if (columnValues[i].is_none()) {
1974+
std::memset(&guidArray[i], 0, sizeof(SQLGUID));
1975+
strLenOrIndArray[i] = SQL_NULL_DATA;
1976+
} else if (py::isinstance(columnValues[i], uuid_type)) {
1977+
py::bytes uuid_bytes = columnValues[i].attr("bytes");
1978+
const unsigned char* uuid_data = reinterpret_cast<const unsigned char*>(PyBytes_AS_STRING(uuid_bytes.ptr()));
20411979

1980+
if (PyBytes_GET_SIZE(uuid_bytes.ptr()) != 16) {
1981+
ThrowStdException("UUID binary data must be exactly 16 bytes long.");
1982+
}
1983+
1984+
guidArray[i].Data1 = (static_cast<uint32_t>(uuid_data[3]) << 24) |
1985+
(static_cast<uint32_t>(uuid_data[2]) << 16) |
1986+
(static_cast<uint32_t>(uuid_data[1]) << 8) |
1987+
(static_cast<uint32_t>(uuid_data[0]));
1988+
guidArray[i].Data2 = (static_cast<uint16_t>(uuid_data[5]) << 8) |
1989+
(static_cast<uint16_t>(uuid_data[4]));
1990+
guidArray[i].Data3 = (static_cast<uint16_t>(uuid_data[7]) << 8) |
1991+
(static_cast<uint16_t>(uuid_data[6]));
1992+
std::memcpy(guidArray[i].Data4, &uuid_data[8], 8);
1993+
1994+
strLenOrIndArray[i] = sizeof(SQLGUID);
1995+
} else {
1996+
ThrowStdException(MakeParamMismatchErrorStr(info.paramCType, paramIndex));
1997+
}
1998+
}
1999+
2000+
dataPtr = guidArray;
2001+
bufferLength = sizeof(SQLGUID);
2002+
break;
2003+
}
20422004
default: {
20432005
ThrowStdException("BindParameterArray: Unsupported C type: " + std::to_string(info.paramCType));
20442006
}

0 commit comments

Comments
 (0)