odbx.h | odbx.h | |||
---|---|---|---|---|
skipping to change at line 21 | skipping to change at line 21 | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
* Library General Public License for more details. | * Library General Public License for more details. | |||
* | * | |||
* You should have received a copy of the GNU Library General Public | * You should have received a copy of the GNU Library General Public | |||
* License along with this library; if not, write to the Free | * License along with this library; if not, write to the Free | |||
* Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA | * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA | |||
* 02111-1307 USA. | * 02111-1307 USA. | |||
*/ | */ | |||
#include <inttypes.h> | #include <opendbx/api.h> | |||
#include <sys/types.h> | ||||
#include <sys/time.h> | ||||
#ifndef ODBX_H | ||||
#define ODBX_H | ||||
#ifdef __cplusplus | ||||
extern "C" { | ||||
#endif | ||||
/* | ||||
* Extended capabilities supported by the backends | ||||
* 0x0000-0x00ff: Well known capabilities | ||||
*/ | ||||
enum odbxcap { | ||||
ODBX_CAP_BASIC, | ||||
#define ODBX_CAP_BASIC ODBX_CAP_BASIC | ||||
ODBX_CAP_LO, | ||||
#define ODBX_CAP_LO ODBX_CAP_LO | ||||
}; | ||||
/* | ||||
* ODBX bind type | ||||
*/ | ||||
enum odbxbind { | ||||
ODBX_BIND_SIMPLE, | ||||
#define ODBX_BIND_SIMPLE ODBX_BIND_SIMPLE | ||||
}; | ||||
/* | ||||
* ODBX error types | ||||
*/ | ||||
enum odbxerr { | ||||
ODBX_ERR_SUCCESS, | ||||
#define ODBX_ERR_SUCCESS ODBX_ERR_SUCCESS | ||||
ODBX_ERR_BACKEND, | ||||
#define ODBX_ERR_BACKEND ODBX_ERR_BACKEND | ||||
ODBX_ERR_NOCAP, | ||||
#define ODBX_ERR_NOCAP ODBX_ERR_NOCAP | ||||
ODBX_ERR_PARAM, | ||||
#define ODBX_ERR_PARAM ODBX_ERR_PARAM | ||||
ODBX_ERR_NOMEM, | ||||
#define ODBX_ERR_NOMEM ODBX_ERR_NOMEM | ||||
ODBX_ERR_SIZE, | ||||
#define ODBX_ERR_SIZE ODBX_ERR_SIZE | ||||
ODBX_ERR_NOTEXIST, | ||||
#define ODBX_ERR_NOTEXIST ODBX_ERR_NOTEXIST | ||||
ODBX_ERR_NOOP, | ||||
#define ODBX_ERR_NOOP ODBX_ERR_NOOP | ||||
ODBX_ERR_OPTION, | ||||
#define ODBX_ERR_OPTION ODBX_ERR_OPTION | ||||
ODBX_ERR_OPTRO, | ||||
#define ODBX_ERR_OPTRO ODBX_ERR_OPTRO | ||||
ODBX_ERR_OPTWR, | ||||
#define ODBX_ERR_OPTWR ODBX_ERR_OPTWR | ||||
ODBX_ERR_RESULT, | ||||
#define ODBX_ERR_RESULT ODBX_ERR_RESULT | ||||
ODBX_ERR_NOTSUP, | ||||
#define ODBX_ERR_NOTSUP ODBX_ERR_NOTSUP | ||||
ODBX_ERR_HANDLE, | ||||
#define ODBX_ERR_HANDLE ODBX_ERR_HANDLE | ||||
}; | ||||
#define ODBX_MAX_ERRNO 0x0d | ||||
/* | ||||
* ODBX result/fetch return values | ||||
*/ | ||||
enum odbxres { | ||||
ODBX_RES_DONE, | ||||
#define ODBX_RES_DONE ODBX_RES_DONE | ||||
ODBX_RES_TIMEOUT, | ||||
#define ODBX_RES_TIMEOUT ODBX_RES_TIMEOUT | ||||
ODBX_RES_NOROWS, | ||||
#define ODBX_RES_NOROWS ODBX_RES_NOROWS | ||||
ODBX_RES_ROWS, | ||||
#define ODBX_RES_ROWS ODBX_RES_ROWS | ||||
}; | ||||
enum odbxrow { | ||||
ODBX_ROW_DONE, | ||||
#define ODBX_ROW_DONE ODBX_ROW_DONE | ||||
ODBX_ROW_NEXT, | ||||
#define ODBX_ROW_NEXT ODBX_ROW_NEXT | ||||
}; | ||||
/* | ||||
* ODBX (SQL2003) data types | ||||
*/ | ||||
enum odbxtype { | ||||
ODBX_TYPE_BOOLEAN = 0x00, | ||||
#define ODBX_TYPE_BOOLEAN ODBX_TYPE_BOOLEAN | ||||
ODBX_TYPE_SMALLINT = 0x01, | ||||
#define ODBX_TYPE_SMALLINT ODBX_TYPE_SMALLINT | ||||
ODBX_TYPE_INTEGER = 0x02, | ||||
#define ODBX_TYPE_INTEGER ODBX_TYPE_INTEGER | ||||
ODBX_TYPE_BIGINT = 0x03, | ||||
#define ODBX_TYPE_BIGINT ODBX_TYPE_BIGINT | ||||
ODBX_TYPE_DECIMAL = 0x07, | ||||
#define ODBX_TYPE_DECIMAL ODBX_TYPE_DECIMAL | ||||
ODBX_TYPE_REAL = 0x08, | ||||
#define ODBX_TYPE_REAL ODBX_TYPE_REAL | ||||
ODBX_TYPE_DOUBLE = 0x09, | ||||
#define ODBX_TYPE_DOUBLE ODBX_TYPE_DOUBLE | ||||
ODBX_TYPE_FLOAT = 0x0f, | ||||
#define ODBX_TYPE_FLOAT ODBX_TYPE_FLOAT | ||||
ODBX_TYPE_CHAR = 0x10, | ||||
#define ODBX_TYPE_CHAR ODBX_TYPE_CHAR | ||||
ODBX_TYPE_NCHAR = 0x11, | ||||
#define ODBX_TYPE_NCHAR ODBX_TYPE_NCHAR | ||||
ODBX_TYPE_VARCHAR = 0x12, | ||||
#define ODBX_TYPE_VARCHAR ODBX_TYPE_VARCHAR | ||||
ODBX_TYPE_NVARCHAR = 0x13, | ||||
#define ODBX_TYPE_NVARCHAR ODBX_TYPE_NVARCHAR | ||||
ODBX_TYPE_CLOB = 0x20, | ||||
#define ODBX_TYPE_CLOB ODBX_TYPE_CLOB | ||||
ODBX_TYPE_NCLOB = 0x21, | ||||
#define ODBX_TYPE_NCLOB ODBX_TYPE_NCLOB | ||||
ODBX_TYPE_XML = 0x22, | ||||
#define ODBX_TYPE_XML ODBX_TYPE_XML | ||||
ODBX_TYPE_BLOB = 0x2f, | ||||
#define ODBX_TYPE_BLOB ODBX_TYPE_BLOB | ||||
ODBX_TYPE_TIME = 0x30, | ||||
#define ODBX_TYPE_TIME ODBX_TYPE_TIME | ||||
ODBX_TYPE_TIMETZ = 0x31, | ||||
#define ODBX_TYPE_TIMETZ ODBX_TYPE_TIMETZ | ||||
ODBX_TYPE_TIMESTAMP = 0x32, | ||||
#define ODBX_TYPE_TIMESTAMP ODBX_TYPE_TIMESTAMP | ||||
ODBX_TYPE_TIMESTAMPTZ = 0x33, | ||||
#define ODBX_TYPE_TIMESTAMPTZ ODBX_TYPE_TIMESTAMPTZ | ||||
ODBX_TYPE_DATE = 0x34, | ||||
#define ODBX_TYPE_DATE ODBX_TYPE_DATE | ||||
ODBX_TYPE_INTERVAL = 0x35, | ||||
#define ODBX_TYPE_INTERVAL ODBX_TYPE_INTERVAL | ||||
ODBX_TYPE_ARRAY = 0x40, | ||||
#define ODBX_TYPE_ARRAY ODBX_TYPE_ARRAY | ||||
ODBX_TYPE_MULTISET = 0x41, | ||||
#define ODBX_TYPE_MULTISET ODBX_TYPE_MULTISET | ||||
ODBX_TYPE_DATALINK = 0x50, | ||||
#define ODBX_TYPE_DATALINK ODBX_TYPE_DATALINK | ||||
ODBX_TYPE_UNKNOWN = 0xff, | ||||
#define ODBX_TYPE_UNKNOWN ODBX_TYPE_UNKNOWN | ||||
}; | ||||
/* | ||||
* ODBX options | ||||
* | ||||
* 0x0000 - 0x1fff reserved for api options | ||||
* 0x2000 - 0x3fff reserved for api extension options | ||||
* 0x4000 - 0xffff reserved for vendor specific and experimental options | ||||
*/ | ||||
enum odbxopt { | ||||
/* Informational options */ | ||||
ODBX_OPT_API_VERSION = 0x0000, | ||||
#define ODBX_OPT_API_VERSION ODBX_OPT_API_VERSION | ||||
ODBX_OPT_THREAD_SAFE = 0x0001, | ||||
#define ODBX_OPT_THREAD_SAFE ODBX_OPT_THREAD_SAFE | ||||
ODBX_OPT_LIB_VERSION = 0x0002, | ||||
#define ODBX_OPT_LIB_VERSION ODBX_OPT_LIB_VERSION | ||||
/* Security related options */ | ||||
ODBX_OPT_TLS = 0x0010, | ||||
#define ODBX_OPT_TLS ODBX_OPT_TLS | ||||
/* Implemented options */ | ||||
ODBX_OPT_MULTI_STATEMENTS = 0x0020, | ||||
#define ODBX_OPT_MULTI_STATEMENTS ODBX_OPT_MULTI_STATEMENTS | ||||
ODBX_OPT_PAGED_RESULTS = 0x0021, | ||||
#define ODBX_OPT_PAGED_RESULTS ODBX_OPT_PAGED_RESULTS | ||||
ODBX_OPT_COMPRESS = 0x0022, | ||||
#define ODBX_OPT_COMPRESS ODBX_OPT_COMPRESS | ||||
ODBX_OPT_MODE = 0x0023, | ||||
#define ODBX_OPT_MODE ODBX_OPT_MODE | ||||
ODBX_OPT_CONNECT_TIMEOUT = 0x0024, | ||||
#define ODBX_OPT_CONNECT_TIMEOUT ODBX_OPT_CONNECT_TIMEOUT | ||||
}; | ||||
/* SSL/TLS related options */ | ||||
enum odbxtls { | ||||
ODBX_TLS_NEVER, | ||||
#define ODBX_TLS_NEVER ODBX_TLS_NEVER | ||||
ODBX_TLS_TRY, | ||||
#define ODBX_TLS_TRY ODBX_TLS_TRY | ||||
ODBX_TLS_ALWAYS, | ||||
#define ODBX_TLS_ALWAYS ODBX_TLS_ALWAYS | ||||
}; | ||||
#define ODBX_DISABLE 0 | ||||
#define ODBX_ENABLE 1 | ||||
typedef struct odbx_t odbx_t; | ||||
typedef struct odbx_lo_t odbx_lo_t; | ||||
typedef struct odbx_result_t odbx_result_t; | ||||
/* | ||||
* ODBX basic operations | ||||
*/ | ||||
int odbx_init( odbx_t** handle, const char* backend, const char* host, cons | ||||
t char* port ); | ||||
int odbx_bind( odbx_t* handle, const char* database, const char* who, const | ||||
char* cred, int method ); | ||||
int odbx_unbind( odbx_t* handle ); | ||||
int odbx_finish( odbx_t* handle ); | ||||
int odbx_capabilities( odbx_t* handle, unsigned int cap ); | ||||
int odbx_get_option( odbx_t* handle, unsigned int option, void* value ); | ||||
int odbx_set_option( odbx_t* handle, unsigned int option, void* value ); | ||||
const char* odbx_error( odbx_t* handle, int error ); | ||||
int odbx_error_type( odbx_t* handle, int error ); | ||||
int odbx_escape( odbx_t* handle, const char* from, unsigned long fromlen, c | ||||
har* to, unsigned long* tolen ); | ||||
int odbx_query( odbx_t* handle, const char* query, unsigned long length ); | ||||
int odbx_result( odbx_t* handle, odbx_result_t** result, struct timeval* ti | ||||
meout, unsigned long chunk ); | ||||
void odbx_result_free( odbx_result_t* result ); | ||||
int odbx_row_fetch( odbx_result_t* result ); | ||||
uint64_t odbx_rows_affected( odbx_result_t* result ); | ||||
unsigned long odbx_column_count( odbx_result_t* result ); | ||||
const char* odbx_column_name( odbx_result_t* result, unsigned long pos ); | ||||
int odbx_column_type( odbx_result_t* result, unsigned long pos ); | ||||
unsigned long odbx_field_length( odbx_result_t* result, unsigned long pos ) | ||||
; | ||||
const char* odbx_field_value( odbx_result_t* result, unsigned long pos ); | ||||
/* | ||||
* ODBX large object operations | ||||
*/ | ||||
int odbx_lo_open( odbx_t* handle, odbx_lo_t** lo, const char* value ); | ||||
ssize_t odbx_lo_read( odbx_lo_t* lo, void* buffer, size_t buflen ); | ||||
int odbx_lo_close( odbx_lo_t* lo ); | ||||
/* | ||||
* Depricated defines and functions | ||||
* | ||||
* They won't be available in version 2.0 any more | ||||
* Please don't use and replace them in your code | ||||
*/ | ||||
/* | ||||
* Depricated types | ||||
*/ | ||||
#define ODBX_BOOLEAN 0x00 | ||||
#define ODBX_SMALLINT 0x01 | ||||
#define ODBX_INTEGER 0x02 | ||||
#define ODBX_BIGINT 0x03 | ||||
#define ODBX_DECIMAL 0x07 | ||||
#define ODBX_REAL 0x08 | ||||
#define ODBX_DOUBLE 0x09 | ||||
#define ODBX_FLOAT 0x0f | ||||
#define ODBX_CHAR 0x10 | ||||
#define ODBX_NCHAR 0x11 | ||||
#define ODBX_VARCHAR 0x12 | ||||
#define ODBX_NVARCHAR 0x13 | ||||
#define ODBX_CLOB 0x20 | ||||
#define ODBX_NCLOB 0x21 | ||||
#define ODBX_XML 0x22 | ||||
#define ODBX_BLOB 0x2f | ||||
#define ODBX_TIME 0x30 | ||||
#define ODBX_TIME_TZ 0x31 | ||||
#define ODBX_TIMESTAMP 0x32 | ||||
#define ODBX_TIMESTAMP_TZ 0x33 | ||||
#define ODBX_DATE 0x34 | ||||
#define ODBX_INTERVAL 0x35 | ||||
#define ODBX_ARRAY 0x40 | ||||
#define ODBX_MULTISET 0x41 | ||||
#define ODBX_DATALINK 0x50 | ||||
#define ODBX_UNKNOWN 0xff | ||||
/* | ||||
* Depricated errors | ||||
*/ | ||||
#define ODBX_ERR_TOOLONG ODBX_ERR_SIZE | ||||
/* | ||||
* Depricated functions | ||||
*/ | ||||
int odbx_bind_simple( odbx_t* handle, const char* database, const char* use | ||||
rname, const char* password ); | ||||
#ifdef __cplusplus | ||||
} | ||||
#endif | ||||
#endif | ||||
End of changes. 1 change blocks. | ||||
0 lines changed or deleted | 0 lines changed or added | |||