Browse Source

DbLib: Fixes for MySQL ODBC driver

SQLSetConnectAttr crashes for this driver, and SQLSetStmtAttr is the ODBC3 way anyway.
7.0
Jon Evans 3 years ago
parent
commit
60f6bb8c77
  1. 6
      common/database/database_connection.cpp
  2. 30
      thirdparty/nanodbc/nanodbc/nanodbc.cpp

6
common/database/database_connection.cpp

@ -449,11 +449,11 @@ bool DATABASE_CONNECTION::SelectAll( const std::string& aTable, std::vector<ROW>
return false;
}
if( !results.first() )
return false;
try
{
if( !results.first() )
return false;
do
{
ROW result;

30
thirdparty/nanodbc/nanodbc/nanodbc.cpp

@ -995,15 +995,6 @@ public:
if (!success(rc) && (event_handle == nullptr || rc != SQL_STILL_EXECUTING))
NANODBC_THROW_DATABASE_ERROR(dbc_, SQL_HANDLE_DBC);
int cursorType = SQL_CURSOR_KEYSET_DRIVEN;
NANODBC_CALL_RC(
SQLSetConnectAttr,
rc,
dbc_,
SQL_ATTR_CURSOR_TYPE,
(SQLPOINTER)(std::intptr_t)cursorType,
0);
connected_ = success(rc);
return rc;
@ -1054,15 +1045,6 @@ public:
if (!success(rc) && (event_handle == nullptr || rc != SQL_STILL_EXECUTING))
NANODBC_THROW_DATABASE_ERROR(dbc_, SQL_HANDLE_DBC);
int cursorType = SQL_CURSOR_KEYSET_DRIVEN;
NANODBC_CALL_RC(
SQLSetConnectAttr,
rc,
dbc_,
SQL_ATTR_CURSOR_TYPE,
(SQLPOINTER)(std::intptr_t)cursorType,
0);
connected_ = success(rc);
return rc;
@ -1452,6 +1434,18 @@ public:
#endif
RETCODE rc;
int cursorType = SQL_CURSOR_KEYSET_DRIVEN;
NANODBC_CALL_RC(
SQLSetStmtAttr,
rc,
stmt_,
SQL_ATTR_CURSOR_TYPE,
(SQLPOINTER)(std::intptr_t)cursorType,
0);
if (!success(rc) && rc != SQL_STILL_EXECUTING)
NANODBC_THROW_DATABASE_ERROR(stmt_, SQL_HANDLE_STMT);
NANODBC_CALL_RC(
NANODBC_FUNC(SQLPrepare),
rc,

Loading…
Cancel
Save