commit
3b659b99f8
Binary file not shown.
@ -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…
Reference in new issue