Changeset: a0baab1ad7ec for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a0baab1ad7ec
Removed Files:
java/embedded/embedded.c
java/embedded/embedded.h
Modified Files:
java/embedded/Makefile.ag
java/embedded/org_monetdb_embedded_MonetDBEmbedded.c
java/embedded/org_monetdb_embedded_result_EmbeddedQueryResult.c
Branch: embedded-java
Log Message:
Depricate copied-over code, start using the propper embedded code
- Use the embedded branch code and library
- Adapt to the new interface, creating connection objects
diffs (283 lines):
diff --git a/java/embedded/Makefile.ag b/java/embedded/Makefile.ag
--- a/java/embedded/Makefile.ag
+++ b/java/embedded/Makefile.ag
@@ -17,7 +17,8 @@
MTSAFE
-INCLUDES = ../../monetdb5/mal \
+INCLUDES = ../../tools/embedded \
+ ../../monetdb5/mal \
../../monetdb5/modules/atoms \
../../monetdb5/modules/mal \
../../monetdb5/extras/rapi \
@@ -37,11 +38,11 @@ INCLUDES = ../../monetdb5/mal \
$(pcre_CFLAGS)
lib_embedded_java = {
- SOURCES = embedded.c embedded.h \
- org_monetdb_embedded_MonetDBEmbedded.c
org_monetdb_embedded_MonetDBEmbedded.h \
+ SOURCES = org_monetdb_embedded_MonetDBEmbedded.c
org_monetdb_embedded_MonetDBEmbedded.h \
org_monetdb_embedded_result_EmbeddedQueryResult.c
org_monetdb_embedded_result_EmbeddedQueryResult.h
VERSION = 1
- LIBS = ../../monetdb5/tools/libmonetdb5 \
+ LIBS = ../../tools/embedded/libembedded \
+ ../../monetdb5/tools/libmonetdb5 \
../../gdk/libbat \
$(pcre_LIBS) $(PSAPILIB) \
$(SOCKET_LIBS) $(MALLOC_LIBS) $(DL_LIBS) $(PTHREAD_LIBS)
diff --git a/java/embedded/embedded.c b/java/embedded/embedded.c
deleted file mode 100644
--- a/java/embedded/embedded.c
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * 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 2008-2015 MonetDB B.V.
- */
-
-/*
- * H. Muehleisen, M. Raasveldt
- * Inverse RAPI
- */
-
-/*
- * Taken from the embedded branch tools/embedded/embedded.h
- * Stripped of the R-specific functions
- */
-#include "embedded.h"
-
-#include "monetdb_config.h"
-#include "monet_options.h"
-#include "mal.h"
-#include "mal_client.h"
-#include "mal_linker.h"
-#include "msabaoth.h"
-#include "sql_scenario.h"
-#include "gdk_utils.h"
-
-typedef str (*SQLstatementIntern_ptr_tpe)(Client, str*, str, bit, bit,
res_table**);
-SQLstatementIntern_ptr_tpe SQLstatementIntern_ptr = NULL;
-typedef str (*SQLautocommit_ptr_tpe)(Client, mvc*);
-SQLautocommit_ptr_tpe SQLautocommit_ptr = NULL;
-typedef str (*SQLinitClient_ptr_tpe)(Client);
-SQLinitClient_ptr_tpe SQLinitClient_ptr = NULL;
-typedef str (*getSQLContext_ptr_tpe)(Client, MalBlkPtr, mvc**, backend**);
-getSQLContext_ptr_tpe getSQLContext_ptr = NULL;
-typedef void (*res_table_destroy_ptr_tpe)(res_table *t);
-res_table_destroy_ptr_tpe res_table_destroy_ptr = NULL;
-typedef str (*mvc_append_wrap_ptr_tpe)(Client, MalBlkPtr, MalStkPtr, InstrPtr);
-mvc_append_wrap_ptr_tpe mvc_append_wrap_ptr = NULL;
-typedef sql_schema* (*mvc_bind_schema_ptr_tpe)(mvc*, const char*);
-mvc_bind_schema_ptr_tpe mvc_bind_schema_ptr = NULL;
-typedef sql_table* (*mvc_bind_table_ptr_tpe)(mvc*, sql_schema*, const char*);
-mvc_bind_table_ptr_tpe mvc_bind_table_ptr = NULL;
-typedef int (*sqlcleanup_ptr_tpe)(mvc*, int);
-sqlcleanup_ptr_tpe sqlcleanup_ptr = NULL;
-typedef void (*mvc_trans_ptr_tpe)(mvc*);
-mvc_trans_ptr_tpe mvc_trans_ptr = NULL;
-
-static bit monetdb_embedded_initialized = 0;
-static MT_Lock monetdb_embedded_lock;
-
-static void* lookup_function(char* func) {
- void *dl, *fun;
- dl = mdlopen("libmonetdb5", RTLD_NOW | RTLD_GLOBAL);
- if (dl == NULL) {
- return NULL;
- }
- fun = dlsym(dl, func);
- dlclose(dl);
- return fun;
-}
-
-char* monetdb_startup(char* installdir, char* dbdir, char silent) {
- opt *set = NULL;
- int setlen = 0;
- char* retval = NULL;
- char* sqres = NULL;
- void* res = NULL;
- char mod_path[1000];
- GDKfataljumpenable = 1;
- if(setjmp(GDKfataljump) != 0) {
- retval = GDKfatalmsg;
- // we will get here if GDKfatal was called.
- if (retval != NULL) {
- retval = GDKstrdup("GDKfatal() with unspecified
error?");
- }
- goto cleanup;
- }
- MT_lock_init(&monetdb_embedded_lock, "monetdb_embedded_lock");
- MT_lock_set(&monetdb_embedded_lock, "monetdb.startup");
- if (monetdb_embedded_initialized) goto cleanup;
-
- setlen = mo_builtin_settings(&set);
- setlen = mo_add_option(&set, setlen, opt_cmdline, "gdk_dbpath", dbdir);
- BBPaddfarm(dbdir, (1 << PERSISTENT) | (1 << TRANSIENT));
-
- if (GDKinit(set, setlen) == 0) {
- retval = GDKstrdup("GDKinit() failed");
- goto cleanup;
- }
- snprintf(mod_path, 1000, "%s/lib/monetdb5", installdir);
- GDKsetenv("monet_mod_path", mod_path);
- GDKsetenv("mapi_disable", "true");
- GDKsetenv("max_clients", "0");
- // TODO: SELECT * FROM table should not use mitosis in the first place
(?).
- GDKsetenv("sql_optimizer", "sequential_pipe");
- printf("Starting 1.1\n");
- if (silent) THRdata[0] = stream_blackhole_create();
- msab_dbpathinit(dbdir);
- printf("Starting 1.1.1\n");
-
- if (mal_init() != 0) { // mal_init() does not return meaningful codes
on failure
- printf("Starting 1.1 fail\n");
- retval = GDKstrdup("mal_init() failed");
- goto cleanup;
- }
- printf("Starting 1.2\n");
- if (silent) mal_clients[0].fdout = THRdata[0];
- // This dynamically looks up functions, because the libraries
containing them are loaded at runtime.
- SQLstatementIntern_ptr = (SQLstatementIntern_ptr_tpe)
lookup_function("SQLstatementIntern");
- SQLautocommit_ptr = (SQLautocommit_ptr_tpe)
lookup_function("SQLautocommit");
- SQLinitClient_ptr = (SQLinitClient_ptr_tpe)
lookup_function("SQLinitClient");
- getSQLContext_ptr = (getSQLContext_ptr_tpe)
lookup_function("getSQLContext");
- res_table_destroy_ptr = (res_table_destroy_ptr_tpe)
lookup_function("res_table_destroy");
- mvc_append_wrap_ptr = (mvc_append_wrap_ptr_tpe)
lookup_function("mvc_append_wrap");
- mvc_bind_schema_ptr = (mvc_bind_schema_ptr_tpe)
lookup_function("mvc_bind_schema");
- mvc_bind_table_ptr = (mvc_bind_table_ptr_tpe)
lookup_function("mvc_bind_table");
- sqlcleanup_ptr = (sqlcleanup_ptr_tpe)
lookup_function("sqlcleanup");
- mvc_trans_ptr = (mvc_trans_ptr_tpe)
lookup_function("mvc_trans");
- printf("Starting 1.3\n");
- if (SQLstatementIntern_ptr == NULL || SQLautocommit_ptr == NULL ||
- SQLinitClient_ptr == NULL || getSQLContext_ptr == NULL
||
- res_table_destroy_ptr == NULL || mvc_append_wrap_ptr ==
NULL ||
- mvc_bind_schema_ptr == NULL || mvc_bind_table_ptr ==
NULL ||
- sqlcleanup_ptr == NULL || mvc_trans_ptr == NULL) {
- retval = GDKstrdup("Dynamic function lookup failed");
- goto cleanup;
- }
- // call this, otherwise c->sqlcontext is empty
- (*SQLinitClient_ptr)(&mal_clients[0]);
- ((backend *) mal_clients[0].sqlcontext)->mvc->session->auto_commit = 1;
- monetdb_embedded_initialized = true;
- // we do not want to jump after this point, since we cannot do so
between threads
- GDKfataljumpenable = 0;
- printf("Starting 1.4\n");
- // sanity check, run a SQL query
- sqres = monetdb_query("SELECT * FROM tables;", res);
- if (sqres != NULL) {
- monetdb_embedded_initialized = false;
- retval = sqres;
- goto cleanup;
- }
-cleanup:
- printf("Starting 1. cleanup\n");
- mo_free_options(set, setlen);
- printf("Starting 1. cleanup2\n");
- MT_lock_unset(&monetdb_embedded_lock, "monetdb.startup");
- return retval;
-}
-
-char* monetdb_query(char* query, void** result) {
- str res = MAL_SUCCEED;
- Client c = &mal_clients[0];
- mvc* m = ((backend *) c->sqlcontext)->mvc;
- if (!monetdb_embedded_initialized) {
- return GDKstrdup("Embedded MonetDB is not started");
- }
-
- while (*query == ' ' || *query == '\t') query++;
- if (strncasecmp(query, "START", 5) == 0) { // START TRANSACTION
- m->session->auto_commit = 0;
- }
- else if (strncasecmp(query, "ROLLBACK", 8) == 0) {
- m->session->status = -1;
- m->session->auto_commit = 1;
- }
- else if (strncasecmp(query, "COMMIT", 6) == 0) {
- m->session->auto_commit = 1;
- }
- else if (strncasecmp(query, "SHIBBOLEET", 10) == 0) {
- res =
GDKstrdup("\x46\x6f\x72\x20\x69\x6d\x6d\x65\x64\x69\x61\x74\x65\x20\x74\x65\x63\x68\x6e\x69\x63\x61\x6c\x20\x73\x75\x70\x70\x6f\x72\x74\x20\x63\x61\x6c\x6c\x20\x2b\x33\x31\x20\x32\x30\x20\x35\x39\x32\x20\x34\x30\x33\x39");
- }
- else if (m->session->status < 0 && m->session->auto_commit ==0){
- res = GDKstrdup("Current transaction is aborted (please
ROLLBACK)");
- } else {
- res = (*SQLstatementIntern_ptr)(c, &query, "name", 1, 0,
(res_table **) result);
- }
-
- (*SQLautocommit_ptr)(c, m);
- return res;
-}
-
-void monetdb_cleanup_result(void* output) {
- (*res_table_destroy_ptr)((res_table*) output);
-}
diff --git a/java/embedded/embedded.h b/java/embedded/embedded.h
deleted file mode 100644
--- a/java/embedded/embedded.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * 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 2008-2015 MonetDB B.V.
- */
-
-/*
- * H. Muehleisen, M. Raasveldt
- * Inverse RAPI
- */
-#ifndef _INVERSE_RAPI_LIB_
-#define _INVERSE_RAPI_LIB_
-
-char* monetdb_startup(char* installdir, char* dbdir, char silent);
-char* monetdb_query(char* query, void** result);
-void monetdb_cleanup_result(void* output);
-
-#endif
diff --git a/java/embedded/org_monetdb_embedded_MonetDBEmbedded.c
b/java/embedded/org_monetdb_embedded_MonetDBEmbedded.c
--- a/java/embedded/org_monetdb_embedded_MonetDBEmbedded.c
+++ b/java/embedded/org_monetdb_embedded_MonetDBEmbedded.c
@@ -47,7 +47,6 @@ JNIEXPORT jboolean JNICALL Java_org_mone
silent_char = 'y';
}
- printf("Starting 1\n");
// XXX: hardcoded install dir for now. fix, soon!
err = monetdb_startup("/Users/dnedev/monetdb/installation",
directory_string, silent_char);
// Checking for errors
@@ -59,7 +58,7 @@ JNIEXPORT jboolean JNICALL Java_org_mone
(*env)->ThrowNew(env, exClass, err);
return false;
}
- printf("Starting 2\n");
+
// set the flags
running = true;
runningDirectory = directory_string;
@@ -91,7 +90,7 @@ JNIEXPORT jobject JNICALL Java_org_monet
}
// Execute the query
- char* err = monetdb_query(query_string, (void**)&output);
+ char* err = monetdb_query(monetdb_connect(), query_string,
(void**)&output);
// Checking for errors
if (err != NULL) {
diff --git a/java/embedded/org_monetdb_embedded_result_EmbeddedQueryResult.c
b/java/embedded/org_monetdb_embedded_result_EmbeddedQueryResult.c
--- a/java/embedded/org_monetdb_embedded_result_EmbeddedQueryResult.c
+++ b/java/embedded/org_monetdb_embedded_result_EmbeddedQueryResult.c
@@ -406,5 +406,5 @@ JNIEXPORT void JNICALL Java_org_monetdb_
(void)env;
res_table* result = (res_table *)resultTablePointer;
- monetdb_cleanup_result(result);
+ monetdb_cleanup_result(monetdb_connect(), result);
}
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list