Skip to content

Commit de4c448

Browse files
committed
cleanup
1 parent 510bf91 commit de4c448

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
@@ -1908,82 +1908,44 @@ SQLRETURN BindParameterArray(SQLHANDLE hStmt,
19081908
bufferLength = sizeof(SQL_NUMERIC_STRUCT);
19091909
break;
19101910
}
1911-
// case SQL_C_GUID: {
1912-
// SQLGUID* guidArray = AllocateParamBufferArray<SQLGUID>(tempBuffers, paramSetSize);
1913-
// strLenOrIndArray = AllocateParamBufferArray<SQLLEN>(tempBuffers, paramSetSize);
1914-
1915-
// for (size_t i = 0; i < paramSetSize; ++i) {
1916-
// if (columnValues[i].is_none()) {
1917-
// std::memset(&guidArray[i], 0, sizeof(SQLGUID));
1918-
// strLenOrIndArray[i] = SQL_NULL_DATA;
1919-
// } else {
1920-
// if (!py::isinstance<py::bytes>(columnValues[i])) {
1921-
// ThrowStdException(MakeParamMismatchErrorStr(info.paramCType, paramIndex));
1922-
// }
1923-
// py::bytes uuid_bytes = columnValues[i].cast<py::bytes>();
1924-
// const unsigned char* uuid_data = reinterpret_cast<const unsigned char*>(PyBytes_AS_STRING(uuid_bytes.ptr()));
1925-
// if (PyBytes_GET_SIZE(uuid_bytes.ptr()) != 16) {
1926-
// ThrowStdException("UUID binary data must be exactly 16 bytes long.");
1927-
// }
1928-
1929-
// // Map bytes to SQLGUID fields
1930-
// guidArray[i].Data1 = (static_cast<uint32_t>(uuid_data[3]) << 24) |
1931-
// (static_cast<uint32_t>(uuid_data[2]) << 16) |
1932-
// (static_cast<uint32_t>(uuid_data[1]) << 8) |
1933-
// (static_cast<uint32_t>(uuid_data[0]));
1934-
// guidArray[i].Data2 = (static_cast<uint16_t>(uuid_data[5]) << 8) |
1935-
// (static_cast<uint16_t>(uuid_data[4]));
1936-
// guidArray[i].Data3 = (static_cast<uint16_t>(uuid_data[7]) << 8) |
1937-
// (static_cast<uint16_t>(uuid_data[6]));
1938-
// std::memcpy(guidArray[i].Data4, &uuid_data[8], 8);
1939-
1940-
// strLenOrIndArray[i] = sizeof(SQLGUID);
1941-
// }
1942-
// }
1943-
1944-
// dataPtr = guidArray;
1945-
// bufferLength = sizeof(SQLGUID);
1946-
// break;
1947-
// }
1948-
case SQL_C_GUID: {
1949-
SQLGUID* guidArray = AllocateParamBufferArray<SQLGUID>(tempBuffers, paramSetSize);
1950-
strLenOrIndArray = AllocateParamBufferArray<SQLLEN>(tempBuffers, paramSetSize);
1951-
1952-
py::object uuid_type = py::module_::import("uuid").attr("UUID");
1953-
1954-
for (size_t i = 0; i < paramSetSize; ++i) {
1955-
if (columnValues[i].is_none()) {
1956-
std::memset(&guidArray[i], 0, sizeof(SQLGUID));
1957-
strLenOrIndArray[i] = SQL_NULL_DATA;
1958-
} else if (py::isinstance(columnValues[i], uuid_type)) {
1959-
py::bytes uuid_bytes = columnValues[i].attr("bytes");
1960-
const unsigned char* uuid_data = reinterpret_cast<const unsigned char*>(PyBytes_AS_STRING(uuid_bytes.ptr()));
1961-
1962-
if (PyBytes_GET_SIZE(uuid_bytes.ptr()) != 16) {
1963-
ThrowStdException("UUID binary data must be exactly 16 bytes long.");
1964-
}
1911+
case SQL_C_GUID: {
1912+
SQLGUID* guidArray = AllocateParamBufferArray<SQLGUID>(tempBuffers, paramSetSize);
1913+
strLenOrIndArray = AllocateParamBufferArray<SQLLEN>(tempBuffers, paramSetSize);
19651914

1966-
guidArray[i].Data1 = (static_cast<uint32_t>(uuid_data[3]) << 24) |
1967-
(static_cast<uint32_t>(uuid_data[2]) << 16) |
1968-
(static_cast<uint32_t>(uuid_data[1]) << 8) |
1969-
(static_cast<uint32_t>(uuid_data[0]));
1970-
guidArray[i].Data2 = (static_cast<uint16_t>(uuid_data[5]) << 8) |
1971-
(static_cast<uint16_t>(uuid_data[4]));
1972-
guidArray[i].Data3 = (static_cast<uint16_t>(uuid_data[7]) << 8) |
1973-
(static_cast<uint16_t>(uuid_data[6]));
1974-
std::memcpy(guidArray[i].Data4, &uuid_data[8], 8);
1975-
1976-
strLenOrIndArray[i] = sizeof(SQLGUID);
1977-
} else {
1978-
ThrowStdException(MakeParamMismatchErrorStr(info.paramCType, paramIndex));
1979-
}
1980-
}
1915+
py::object uuid_type = py::module_::import("uuid").attr("UUID");
19811916

1982-
dataPtr = guidArray;
1983-
bufferLength = sizeof(SQLGUID);
1984-
break;
1985-
}
1917+
for (size_t i = 0; i < paramSetSize; ++i) {
1918+
if (columnValues[i].is_none()) {
1919+
std::memset(&guidArray[i], 0, sizeof(SQLGUID));
1920+
strLenOrIndArray[i] = SQL_NULL_DATA;
1921+
} else if (py::isinstance(columnValues[i], uuid_type)) {
1922+
py::bytes uuid_bytes = columnValues[i].attr("bytes");
1923+
const unsigned char* uuid_data = reinterpret_cast<const unsigned char*>(PyBytes_AS_STRING(uuid_bytes.ptr()));
19861924

1925+
if (PyBytes_GET_SIZE(uuid_bytes.ptr()) != 16) {
1926+
ThrowStdException("UUID binary data must be exactly 16 bytes long.");
1927+
}
1928+
1929+
guidArray[i].Data1 = (static_cast<uint32_t>(uuid_data[3]) << 24) |
1930+
(static_cast<uint32_t>(uuid_data[2]) << 16) |
1931+
(static_cast<uint32_t>(uuid_data[1]) << 8) |
1932+
(static_cast<uint32_t>(uuid_data[0]));
1933+
guidArray[i].Data2 = (static_cast<uint16_t>(uuid_data[5]) << 8) |
1934+
(static_cast<uint16_t>(uuid_data[4]));
1935+
guidArray[i].Data3 = (static_cast<uint16_t>(uuid_data[7]) << 8) |
1936+
(static_cast<uint16_t>(uuid_data[6]));
1937+
std::memcpy(guidArray[i].Data4, &uuid_data[8], 8);
1938+
1939+
strLenOrIndArray[i] = sizeof(SQLGUID);
1940+
} else {
1941+
ThrowStdException(MakeParamMismatchErrorStr(info.paramCType, paramIndex));
1942+
}
1943+
}
1944+
1945+
dataPtr = guidArray;
1946+
bufferLength = sizeof(SQLGUID);
1947+
break;
1948+
}
19871949
default: {
19881950
ThrowStdException("BindParameterArray: Unsupported C type: " + std::to_string(info.paramCType));
19891951
}

0 commit comments

Comments
 (0)