fix: support bigger numbers, SQL_BIGINT
there was an overflow and some values resulted into negative ones.
TODO: there is still a problem with big negative numbers – this needs to be addressed in relpipe-lib-writer/relpipe-lib-reader
/**
* Relational pipes
* Copyright © 2020 František Kučera (Frantovo.cz, GlobalCode.info)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include <sql.h>
#include "SqlException.h"
namespace relpipe {
namespace tr {
namespace sql {
class OdbcCommon {
public:
static bool isSuccessful(SQLRETURN result) {
return result == SQL_SUCCESS || result == SQL_SUCCESS_WITH_INFO;
}
static bool isNotSuccessful(SQLRETURN result) {
return !isSuccessful(result);
}
static SQLHANDLE allocateHandle(SQLSMALLINT type, SQLHANDLE input) {
SQLHANDLE output;
SQLRETURN result = SQLAllocHandle(type, input, &output);
if (isNotSuccessful(result)) throw SqlException(L"Unable to allocate handle " + std::to_wstring(type));
return output;
}
static void freeHandle(SQLSMALLINT type, SQLHANDLE handle) {
SQLRETURN result = SQLFreeHandle(type, handle);
if (isNotSuccessful(result)) throw SqlException(L"Unable to free handle of type: " + std::to_wstring(type));
}
};
}
}
}