Source
xxxxxxxxxx
zbx_odbc_data_source_t *zbx_odbc_connect(const char *dsn, const char *connection, const char *user, const char *pass,
/*
** Copyright (C) 2001-2024 Zabbix SIA
**
** This program is free software: you can redistribute it and/or modify it under the terms of
** the GNU Affero 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 Affero General Public License for more details.
**
** You should have received a copy of the GNU Affero General Public License along with this program.
** If not, see <https://www.gnu.org/licenses/>.
**/
struct zbx_odbc_data_source
{
SQLHENV henv;
SQLHDBC hdbc;
};
struct zbx_odbc_query_result
{
SQLHSTMT hstmt;
SQLSMALLINT col_num;
char **row;
};
/******************************************************************************
* *
* Purpose: get human readable representation of ODBC return code *
* *
* Parameters: rc - [IN] ODBC return code *
* *
* Return value: human readable representation of error code or NULL if the *
* given code is unknown *
* *
******************************************************************************/
static const char *zbx_odbc_rc_str(SQLRETURN rc)
{
switch (rc)
{
case SQL_ERROR:
return "SQL_ERROR";
case SQL_SUCCESS_WITH_INFO:
return "SQL_SUCCESS_WITH_INFO";
case SQL_NO_DATA:
return "SQL_NO_DATA";
case SQL_INVALID_HANDLE:
return "SQL_INVALID_HANDLE";
case SQL_STILL_EXECUTING:
return "SQL_STILL_EXECUTING";
case SQL_NEED_DATA:
return "SQL_NEED_DATA";
case SQL_SUCCESS:
return "SQL_SUCCESS";
default:
return NULL;
}
}
/******************************************************************************
* *
* Purpose: diagnose result of ODBC function call *
* *
* Parameters: h_type - [IN] type of handle call was executed on *
* h - [IN] handle call was executed on *
* rc - [IN] function return code *
* diag - [OUT] diagnostic message *
* *
* Return value: SUCCEED - function call was successful *
* FAIL - otherwise, error message is returned in diag *
* *
* Comments: It is caller's responsibility to free diag in case this function *
* returns FAIL! *