added monetdb connector

dev
Bill 2 years ago
parent d3d27badd7
commit b3f9f28432

Binary file not shown.

@ -96,6 +96,16 @@ class Config:
self.running = 1
self.n_buffers = n_bufs
def __getter (self, *, i):
return self.np_buf[i]
def __setter(self, v, *, i):
self.np_buf[i] = v
def binder(_i):
from functools import partial
return property(partial(Config.__getter, i = _i), partial(Config.__setter, i = _i))
backend_type = binder(4)
@property
def running(self):
return self.np_buf[0]

@ -248,6 +248,8 @@ class create_table(ast_node):
columns.append(f'{c.name} {c.type.upper()}')
self.sql += ', '.join(columns)
self.sql += ')'
if self.context.use_columnstore:
self.sql += ' engine=ColumnStore'

@ -77,7 +77,8 @@ class Context:
self.cols = []
self.datasource = None
self.udf_map = dict()
self.use_columnstore = False
def emit(self, sql:str):
self.sql += sql + ' '

@ -25,8 +25,10 @@ struct Context{
int n_buffers, *sz_bufs;
void **buffers;
void* alt_server;
Log_level log_level = LOG_SILENT;
printf_type print = printf;
template <class ...Types>
void log(Types... args) {
if (log_level == LOG_INFO)

@ -0,0 +1,56 @@
#include "mariadb_conn.h"
#include "libaquery.h"
#include <cstdio>
inline size_t my_strlen(const char* str){
size_t ret = 0;
if(str)
while(*str) ++str;
return ret;
}
void Server::connect(
Context* cxt, const char* host, const char* user, const char* passwd,
const char* db_name, const unsigned int port,
const char* unix_socket, const unsigned long client_flag
){
this->cxt = cxt;
cxt->alt_server = this;
server = 0;
mysql_init(server);
if (server == 0){
printf("Error initializing client.\n");
return;
}
auto ret =
mysql_real_connect(server, host, user, passwd, db_name, port, unix_socket, client_flag);
if(ret){
printf("Error connecting to server: %d, %s\n", ret, mysql_error(server));
return;
}
this->status = true;
}
void Server::exec(const char*q){
auto res = mysql_real_query(server, q, my_strlen(q));
if(res) printf("Execution Error: %d, %s\n", res, mysql_error(server));
}
void Server::close(){
if(this->status && this->server){
mysql_close(server);
server = 0;
this->status = false;
}
}
Server::~Server(){
if(this->status && this->server){
this->close();
mysql_library_end();
}
}

@ -0,0 +1,23 @@
#ifdef _WIN32
#include <mysql.h>
#else
#include <mariadb/mysql.h>
#endif
struct Context;
struct Server{
MYSQL *server = 0;
Context *cxt = 0;
bool status = 0;
char* query = 0;
int type = 0;
void connect(Context* cxt, const char* host = "bill.local",
const char* user = "root", const char* passwd = "0508",
const char* db_name = "db", const unsigned int port = 3306,
const char* unix_socket = 0, const unsigned long client_flag = 0
);
void exec(const char* q);
void close();
~Server();
};

@ -0,0 +1,466 @@
/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* Copyright 1997 - July 2008 CWI, August 2008 - 2022 MonetDB B.V.
*/
/* monetdb_config.h.in. Generated from CMakeLists.txt */
#ifndef MT_SEEN_MONETDB_CONFIG_H
#define MT_SEEN_MONETDB_CONFIG_H 1
#ifdef _MSC_VER
#if _MSC_VER < 1900
#error Versions below Visual Studio 2015 are no longer supported
#endif
/* Prevent pollution through excessive inclusion of include files by Windows.h. */
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN 1
#endif
/* Visual Studio 8 has deprecated lots of stuff: suppress warnings */
#ifndef _CRT_SECURE_NO_DEPRECATE
#define _CRT_SECURE_NO_DEPRECATE 1
#endif
#define _CRT_RAND_S /* for Windows rand_s, before stdlib.h */
#define HAVE_RAND_S 1
#endif
#if !defined(_XOPEN_SOURCE) && defined(__CYGWIN__)
#define _XOPEN_SOURCE 700
#endif
#include <stdlib.h>
#if defined(_MSC_VER) && defined(_DEBUG) && defined(_CRTDBG_MAP_ALLOC)
/* In this case, malloc and friends are redefined in crtdbg.h to debug
* versions. We need to include stdlib.h first or else we get
* conflicting declarations. */
#include <crtdbg.h>
#endif
#define HAVE_SYS_TYPES_H 1
#ifdef HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
/* standard C-99 include files */
#include <assert.h>
#include <errno.h>
#include <inttypes.h>
#include <stdarg.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdio.h>
#include <string.h>
#ifdef _MSC_VER
/* Windows include files */
#include <process.h>
#include <windows.h>
#include <ws2tcpip.h>
/* indicate to sqltypes.h that windows.h has already been included and
that it doesn't have to define Windows constants */
#define ALREADY_HAVE_WINDOWS_TYPE 1
#define NATIVE_WIN32 1
#endif /* _MSC_VER */
#if !defined(WIN32) && defined(__CYGWIN__)
#define WIN32 1
#endif
// Section: monetdb configure defines
/* #undef HAVE_DISPATCH_DISPATCH_H */
/* #undef HAVE_DLFCN_H */
#define HAVE_FCNTL_H 1
#define HAVE_IO_H 1
/* #undef HAVE_KVM_H */
/* #undef HAVE_LIBGEN_H */
/* #undef HAVE_LIBINTL_H */
/* #undef HAVE_MACH_MACH_INIT_H */
/* #undef HAVE_MACH_TASK_H */
/* #undef HAVE_MACH_O_DYLD_H */
/* #undef HAVE_NETDB_H */
/* #undef HAVE_NETINET_IN_H */
/* #undef HAVE_POLL_H */
/* #undef HAVE_PROCFS_H */
/* #undef HAVE_PWD_H */
/* #undef HAVE_STRINGS_H */
/* #undef HAVE_STROPTS_H */
/* #undef HAVE_SYS_FILE_H */
/* #undef HAVE_SYS_IOCTL_H */
/* #undef HAVE_SYS_SYSCTL_H */
/* #undef HAVE_SYS_MMAN_H */
/* #undef HAVE_SYS_PARAM_H */
/* #undef HAVE_SYS_RANDOM_H */
/* #undef HAVE_SYS_RESOURCE_H */
/* #undef HAVE_SYS_TIME_H */
/* #undef HAVE_SYS_TIMES_H */
/* #undef HAVE_SYS_UIO_H */
/* #undef HAVE_SYS_UN_H */
/* #undef HAVE_SYS_WAIT_H */
/* #undef HAVE_TERMIOS_H */
/* #undef HAVE_UNISTD_H */
/* #undef HAVE_UUID_UUID_H */
#define HAVE_WINSOCK_H 1
/* #undef HAVE_SEMAPHORE_H */
#define HAVE_GETOPT_H 1
/* #undef HAVE_STDATOMIC_H */
/* #undef HAVE_DIRENT_H */
/* #undef HAVE_SYS_SOCKET_H */
/* #undef HAVE_GETTIMEOFDAY */
#define HAVE_SYS_STAT_H 1
/* #undef HAVE_FDATASYNC */
/* #undef HAVE_ACCEPT4 */
/* #undef HAVE_ASCTIME_R */
/* #undef HAVE_CLOCK_GETTIME */
/* #undef HAVE_CTIME_R */
/* #undef HAVE_DISPATCH_SEMAPHORE_CREATE */
/* #undef HAVE_FALLOCATE */
/* #undef HAVE_FCNTL */
/* #undef HAVE_FORK */
/* #undef HAVE_FSYNC */
#define HAVE_FTIME 1
/* #undef HAVE_GETENTROPY */
/* #undef HAVE_GETEXECNAME */
/* #undef HAVE_GETLOGIN */
#define HAVE_GETOPT_LONG 1
/* #undef HAVE_GETRLIMIT */
/* #undef HAVE_GETTIMEOFDAY */
/* #undef HAVE_GETUID */
/* #undef HAVE_GMTIME_R */
/* #undef HAVE_LOCALTIME_R */
/* #undef HAVE_STRERROR_R */
/* #undef HAVE_LOCKF */
/* #undef HAVE_MADVISE */
/* #undef HAVE_MREMAP */
/* #undef HAVE_NANOSLEEP */
/* #undef HAVE_NL_LANGINFO */
/* #undef HAVE__NSGETEXECUTABLEPATH */
/* #undef HAVE_PIPE2 */
/* #undef HAVE_POLL */
/* #undef HAVE_POPEN */
/* #undef HAVE_POSIX_FADVISE */
/* #undef HAVE_POSIX_FALLOCATE */
/* #undef HAVE_POSIX_MADVISE */
#define HAVE_PUTENV 1
/* #undef HAVE_SETSID */
#define HAVE_SHUTDOWN 1
/* #undef HAVE_SIGACTION */
/* #undef HAVE_STPCPY */
/* #undef HAVE_STRCASESTR */
/* #undef HAVE_STRNCASECMP */
/* #undef HAVE_STRPTIME */
/* #undef HAVE_STRSIGNAL */
/* #undef HAVE_SYSCONF */
/* #undef HAVE_TASK_INFO */
/* #undef HAVE_TIMES */
/* #undef HAVE_UNAME */
/* #undef HAVE_SEMTIMEDOP */
/* #undef HAVE_PTHREAD_KILL */
/* #undef HAVE_PTHREAD_SIGMASK */
#define HAVE_GETOPT 1
#define ICONV_CONST
#define FLEXIBLE_ARRAY_MEMBER
#define ENABLE_MAPI 1
#define HAVE_MAPI 1
// End Section: monetdb configure defines
// Section: monetdb macro variables
#define HAVE_ICONV 1
/* #undef HAVE_PTHREAD_H */
#define HAVE_LIBPCRE 1
#define HAVE_LIBBZ2 1
/* #undef HAVE_CURL */
#define HAVE_LIBLZMA 1
#define HAVE_LIBXML 1
#define HAVE_LIBZ 1
#define HAVE_LIBLZ4 1
/* #undef HAVE_PROJ */
/* #undef HAVE_SNAPPY */
/* #undef HAVE_FITS */
/* #undef HAVE_UUID */
/* #undef HAVE_VALGRIND */
/* #undef HAVE_NETCDF */
/* #undef HAVE_READLINE */
/* #undef HAVE_LIBR */
#define RHOME "/registry"
#define HAVE_GEOM 1
/* #undef HAVE_SHP */
#define HAVE_LIBPY3 1
// #define SOCKET_LIBRARIES
#define HAVE_GETADDRINFO 1
/* #undef HAVE_CUDF */
#define MAPI_PORT 50000
#define MAPI_PORT_STR "50000"
#ifdef _MSC_VER
#define DIR_SEP '\\'
#define PATH_SEP ';'
#define DIR_SEP_STR "\\"
#define SO_PREFIX ""
#else
#define DIR_SEP '/'
#define PATH_SEP ':'
#define DIR_SEP_STR "/"
/* #undef SO_PREFIX */
#endif
#define SO_EXT ".dll"
#define BINDIR "C:/cygwin64/home/monet/x86_64/install/bin"
#define LIBDIR "C:/cygwin64/home/monet/x86_64/install/lib"
#define LOCALSTATEDIR "C:/cygwin64/home/monet/x86_64/install/var"
// End Section: monetdb macro variables
// Section: monetdb configure misc
#define MONETDB_RELEASE "Jan2022-SP3"
#define MONETDB_VERSION "11.43.15"
#define MONETDB_VERSION_MAJOR 11
#define MONETDB_VERSION_MINOR 43
#define MONETDB_VERSION_PATCH 15
#define GDK_VERSION "25.1.0"
#define GDK_VERSION_MAJOR 25
#define GDK_VERSION_MINOR 1
#define GDK_VERSION_PATCH 0
#define MAPI_VERSION "14.0.2"
#define MAPI_VERSION_MAJOR 14
#define MAPI_VERSION_MINOR 0
#define MAPI_VERSION_PATCH 2
#define MONETDB5_VERSION "32.0.6"
#define MONETDB5_VERSION_MAJOR 32
#define MONETDB5_VERSION_MINOR 0
#define MONETDB5_VERSION_PATCH 6
#define MONETDBE_VERSION "3.0.2"
#define MONETDBE_VERSION_MAJOR 3
#define MONETDBE_VERSION_MINOR 0
#define MONETDBE_VERSION_PATCH 2
#define STREAM_VERSION "16.0.1"
#define STREAM_VERSION_MAJOR 16
#define STREAM_VERSION_MINOR 0
#define STREAM_VERSION_PATCH 1
#define SQL_VERSION "12.0.5"
#define SQL_VERSION_MAJOR 12
#define SQL_VERSION_MINOR 0
#define SQL_VERSION_PATCH 5
/* Host identifier */
#define HOST "amd64-pc-windows-msvc"
/* The used password hash algorithm */
#define MONETDB5_PASSWDHASH "SHA512"
/* The used password hash algorithm */
#define MONETDB5_PASSWDHASH_TOKEN SHA512
#ifndef _Noreturn
#define _Noreturn __declspec(noreturn)
#endif
#ifndef __cplusplus
/* Does your compiler support `inline' keyword? (C99 feature) */
#ifndef inline
#define inline __inline
#endif
/* Does your compiler support `__restrict__' keyword? (C99 feature) */
#ifndef __restrict__
#define __restrict__ restrict
#endif
#endif
#ifdef _MSC_VER
#ifndef __restrict__
#define __restrict__ __restrict
#endif
#endif
// End Section: monetdb configure misc
// Section: monetdb configure sizes
#define SIZEOF_SIZE_T 8
/* The size of `void *', as computed by sizeof. */
#define SIZEOF_VOID_P 8
#define SIZEOF_CHAR 1
#define SIZEOF_SHORT 2
#define SIZEOF_INT 4
#define SIZEOF_LONG 4
#define SIZEOF_LONG_LONG 8
#define SIZEOF_DOUBLE 8
#define SIZEOF_WCHAR_T 2
#define HAVE_LONG_LONG 1 /* for ODBC include files */
#ifdef _MSC_VER
#ifdef _WIN64
#define LENP_OR_POINTER_T SQLLEN *
#else
#define LENP_OR_POINTER_T SQLPOINTER
#endif
#else
#define LENP_OR_POINTER_T SQLLEN *
#endif
#define SIZEOF_SQLWCHAR 2
/* #undef WORDS_BIGENDIAN */
/* Does your compiler support `ssize_t' type? (Posix type) */
#ifndef ssize_t
#define ssize_t int64_t
#endif
/* The size of `__int128', as computed by sizeof. */
/* #undef SIZEOF___INT128 */
/* The size of `__int128_t', as computed by sizeof. */
/* #undef SIZEOF___INT128_T */
/* The size of `__uint128_t', as computed by sizeof. */
/* #undef SIZEOF___UINT128_T */
#ifdef SIZEOF___INT128
typedef __int128 hge;
typedef unsigned __int128 uhge;
#define HAVE_HGE 1
#define SIZEOF_HGE SIZEOF___INT128
#elif defined(SIZEOF___INT128_T) && defined(SIZEOF___UINT128_T)
typedef __int128_t hge;
typedef __uint128_t uhge;
#define HAVE_HGE 1
#define SIZEOF_HGE SIZEOF___INT128_T
#endif
// End Section: monetdb configure sizes
/* Does your compiler support `__attribute__' extension? */
#if !defined(__GNUC__) && !defined(__clang__) && !defined(__attribute__)
#define __attribute__(a)
#endif
#if !defined(__cplusplus) || __cplusplus < 201103L
#ifndef static_assert
/* static_assert is a C11/C++11 feature, defined in assert.h which also exists
* in many other compilers we ignore it if the compiler doesn't support it
* However in C11 static_assert is a macro, while on C++11 is a keyword */
#define static_assert(expr, mesg) ((void) 0)
#endif
#endif
#ifdef HAVE_STRINGS_H
#include <strings.h> /* strcasecmp */
#endif
#ifdef _MSC_VER
#define strdup(s) _strdup(s)
#ifndef strcasecmp
#define strcasecmp(x,y) _stricmp(x,y)
#endif
/* Define to 1 if you have the `strncasecmp' function. */
#define HAVE_STRNCASECMP 1
#ifndef strncasecmp
#define strncasecmp(x,y,z) _strnicmp(x,y,z)
#endif
#include <sys/stat.h>
#ifdef lstat
#undef lstat
#endif
#define lstat _stat64
#ifdef stat
#undef stat
#endif
#define stat _stat64
#ifdef fstat
#undef fstat
#endif
#define fstat _fstat64
static inline char *
stpcpy(char *__restrict__ dst, const char *__restrict__ src)
{
size_t i;
for (i = 0; src[i]; i++)
dst[i] = src[i];
dst[i] = 0;
return dst + i;
}
/* Define to 1 if the system has the type `socklen_t'. */
#define HAVE_SOCKLEN_T 1
/* type used by connect */
#define socklen_t int
#define strtok_r(t,d,c) strtok_s(t,d,c)
#define HAVE_GETOPT_LONG 1
/* there is something very similar to localtime_r on Windows: */
#include <time.h>
#define HAVE_LOCALTIME_R 1
static inline struct tm *
localtime_r(const time_t *__restrict__ timep, struct tm *__restrict__ result)
{
return localtime_s(result, timep) == 0 ? result : NULL;
}
#define HAVE_GMTIME_R 1
static inline struct tm *
gmtime_r(const time_t *__restrict__ timep, struct tm *__restrict__ result)
{
return gmtime_s(result, timep) == 0 ? result : NULL;
}
/* Define if you have ctime_r(time_t*,char *buf,size_t s) */
#define HAVE_CTIME_R 1
#define HAVE_CTIME_R3 1
/* there is something very similar to ctime_r on Windows: */
#define ctime_r(t,b,s) (ctime_s(b,s,t) ? NULL : (b))
#endif /* _MSC_VER */
#define HAVE_SOCKLEN_T 1
#ifndef _MSC_VER
#define SOCKET int
#define closesocket close
#endif
#ifndef _In_z_
#define _In_z_
#endif
#ifndef _Printf_format_string_
#define _Printf_format_string_
#endif
#ifdef _MSC_VER
#define _LIB_STARTUP_FUNC_(f,q) \
static void f(void); \
__declspec(allocate(".CRT$XCU")) void (*f##_)(void) = f; \
__pragma(comment(linker,"/include:" q #f "_")) \
static void f(void)
#ifdef _WIN64
#define LIB_STARTUP_FUNC(f) _LIB_STARTUP_FUNC_(f,"")
#else
#define LIB_STARTUP_FUNC(f) _LIB_STARTUP_FUNC_(f,"_")
#endif
#else
#define LIB_STARTUP_FUNC(f) \
static void f(void) __attribute__((__constructor__)); \
static void f(void)
#endif
#endif /* MT_SEEN_MONETDB_CONFIG_H */

@ -0,0 +1,50 @@
#include "monetdb_conn.h"
#include "libaquery.h"
#include <cstdio>
void Server::connect(Context *cxt){
if (!cxt){
cxt->alt_server = this;
this->cxt = cxt;
}
else{
return;
}
if (server != 0){
monetdbe_close(*server);
free(*server);
server = (monetdbe_database*)malloc(sizeof(monetdbe_database));
}
monetdbe_open(server, nullptr, nullptr);
}
void Server::exec(const char* q){
auto qstatus = monetdbe_query(*server, const_cast<char*>(q), &res, &cnt);
if (qstatus != nullptr){
puts("Execution Failed.\n");
}
}
void Server::close(){
if(this->server){
monetdbe_close(*(this->server));
free(this->server);
this->server = 0;
}
}
void* Server::getCol(int col_idx){
if(res){
if(monetdbe_result_fetch(res, &ret_col, col_idx) != nullptr)
{
cnt = ret_col->count;
return ret_col->data;
}
}
return 0;
}
Server::~Server(){
close();
}

@ -0,0 +1,21 @@
#include "monetdbe.h"
struct Context;
struct Server{
monetdbe_database *server = 0;
Context *cxt = 0;
bool status = 0;
char* query = 0;
int type = 1;
monetdbe_result* res = 0;
monetdbe_column* ret_col = 0;
monetdbe_cnt cnt = 0;
void connect(Context* cxt);
void exec(const char* q);
void *getCol(int col_idx);
void close();
~Server();
};

@ -0,0 +1,188 @@
/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* Copyright 1997 - July 2008 CWI, August 2008 - 2022 MonetDB B.V.
*/
#ifndef _MONETDBE_LIB_
#define _MONETDBE_LIB_
#include "monetdb_config.h"
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#ifdef WIN32
#ifndef LIBMONETDBE
#define monetdbe_export extern __declspec(dllimport)
#else
#define monetdbe_export extern __declspec(dllexport)
#endif
#else
#define monetdbe_export extern
#endif
typedef int64_t monetdbe_cnt;
typedef struct {
unsigned char day;
unsigned char month;
short year;
} monetdbe_data_date;
typedef struct {
unsigned int ms;
unsigned char seconds;
unsigned char minutes;
unsigned char hours;
} monetdbe_data_time;
typedef struct {
monetdbe_data_date date;
monetdbe_data_time time;
} monetdbe_data_timestamp;
typedef struct {
size_t size;
char* data;
} monetdbe_data_blob;
typedef enum {
monetdbe_bool, monetdbe_int8_t, monetdbe_int16_t, monetdbe_int32_t, monetdbe_int64_t,
#ifdef HAVE_HGE
monetdbe_int128_t,
#endif
monetdbe_size_t, monetdbe_float, monetdbe_double,
monetdbe_str, monetdbe_blob,
monetdbe_date, monetdbe_time, monetdbe_timestamp,
// should be last:
monetdbe_type_unknown
} monetdbe_types;
typedef struct {
char* name;
unsigned int scale;
unsigned int digits;
} monetdbe_sql_type;
typedef struct {
monetdbe_types type;
monetdbe_sql_type sql_type;
void *data;
size_t count;
char* name;
} monetdbe_column;
typedef struct {
size_t nparam;
monetdbe_types *type;
} monetdbe_statement;
typedef struct {
monetdbe_cnt nrows;
size_t ncols;
char *name;
monetdbe_cnt last_id; /* last auto incremented id */
} monetdbe_result;
typedef void* monetdbe_database;
typedef struct {
const char *host;
int port;
const char *database;
const char *username;
const char *password;
const char *lang;
} monetdbe_remote;
typedef struct {
const char* port;
const char* usock;
} monetdbe_mapi_server;
typedef struct {
int memorylimit; // top off the amount of RAM to be used, in MB
int querytimeout; // graceful terminate query after a few seconds
int sessiontimeout; // graceful terminate the session after a few seconds
int nr_threads; // maximum number of worker treads, limits level of parallelism
monetdbe_remote* remote;
monetdbe_mapi_server* mapi_server;
const char *trace_file; // file to which log output should be written
} monetdbe_options;
#define DEFAULT_STRUCT_DEFINITION(ctype, typename) \
typedef struct \
{ \
monetdbe_types type; \
monetdbe_sql_type sql_type; \
ctype *data; \
size_t count; \
char *name; \
ctype null_value; \
double scale; \
int (*is_null)(ctype *value); \
} monetdbe_column_##typename
DEFAULT_STRUCT_DEFINITION(int8_t, bool);
DEFAULT_STRUCT_DEFINITION(int8_t, int8_t);
DEFAULT_STRUCT_DEFINITION(int16_t, int16_t);
DEFAULT_STRUCT_DEFINITION(int32_t, int32_t);
DEFAULT_STRUCT_DEFINITION(int64_t, int64_t);
#ifdef HAVE_HGE
DEFAULT_STRUCT_DEFINITION(__int128, int128_t);
#endif
DEFAULT_STRUCT_DEFINITION(size_t, size_t);
DEFAULT_STRUCT_DEFINITION(float, float);
DEFAULT_STRUCT_DEFINITION(double, double);
DEFAULT_STRUCT_DEFINITION(char *, str);
DEFAULT_STRUCT_DEFINITION(monetdbe_data_blob, blob);
DEFAULT_STRUCT_DEFINITION(monetdbe_data_date, date);
DEFAULT_STRUCT_DEFINITION(monetdbe_data_time, time);
DEFAULT_STRUCT_DEFINITION(monetdbe_data_timestamp, timestamp);
// UUID, INET, XML ?
monetdbe_export const char *monetdbe_version(void);
monetdbe_export int monetdbe_open(monetdbe_database *db, char *url, monetdbe_options *opts);
/* 0 ok, -1 (allocation failed), -2 error in db */
monetdbe_export int monetdbe_close(monetdbe_database db);
monetdbe_export char* monetdbe_error(monetdbe_database db);
monetdbe_export char* monetdbe_get_autocommit(monetdbe_database dbhdl, int* result);
monetdbe_export char* monetdbe_set_autocommit(monetdbe_database dbhdl, int value);
monetdbe_export int monetdbe_in_transaction(monetdbe_database dbhdl);
monetdbe_export char* monetdbe_query(monetdbe_database dbhdl, char* query, monetdbe_result** result, monetdbe_cnt* affected_rows);
monetdbe_export char* monetdbe_result_fetch(monetdbe_result *mres, monetdbe_column** res, size_t column_index);
monetdbe_export char* monetdbe_cleanup_result(monetdbe_database dbhdl, monetdbe_result* result);
monetdbe_export char* monetdbe_prepare(monetdbe_database dbhdl, char *query, monetdbe_statement **stmt, monetdbe_result** result);
monetdbe_export char* monetdbe_bind(monetdbe_statement *stmt, void *data, size_t parameter_nr);
monetdbe_export char* monetdbe_execute(monetdbe_statement *stmt, monetdbe_result **result, monetdbe_cnt* affected_rows);
monetdbe_export char* monetdbe_cleanup_statement(monetdbe_database dbhdl, monetdbe_statement *stmt);
monetdbe_export char* monetdbe_append(monetdbe_database dbhdl, const char* schema, const char* table, monetdbe_column **input, size_t column_count);
monetdbe_export const void* monetdbe_null(monetdbe_database dbhdl, monetdbe_types t);
monetdbe_export char* monetdbe_get_columns(monetdbe_database dbhdl, const char* schema_name, const char *table_name, size_t *column_count, monetdbe_column **columns);
monetdbe_export char* monetdbe_dump_database(monetdbe_database dbhdl, const char *backupfile);
monetdbe_export char* monetdbe_dump_table(monetdbe_database dbhdl, const char *schema_name, const char *table_name, const char *backupfile);
#ifdef __cplusplus
}
#endif
#endif
Loading…
Cancel
Save