Changeset: 795fe29e2da5 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=795fe29e2da5
Modified Files:
java/embedded/embedded.c
java/embedded/embedded.h
java/embedded/org_monetdb_embedded_MonetDBEmbedded.c
Branch: embedded-java
Log Message:
Adapt to the new startup interface
diffs (149 lines):
diff --git a/java/embedded/embedded.c b/java/embedded/embedded.c
--- a/java/embedded/embedded.c
+++ b/java/embedded/embedded.c
@@ -50,9 +50,9 @@ 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* lib, char* func) {
+static void* lookup_function(char* func) {
void *dl, *fun;
- dl = mdlopen(lib, RTLD_NOW | RTLD_GLOBAL);
+ dl = mdlopen("libmonetdb5", RTLD_NOW | RTLD_GLOBAL);
if (dl == NULL) {
return NULL;
}
@@ -61,7 +61,7 @@ static void* lookup_function(char* lib,
return fun;
}
-char* monetdb_startup(char* dir, char silent) {
+char* monetdb_startup(char* installdir, char* dbdir, char silent) {
opt *set = NULL;
int setlen = 0;
char* retval = NULL;
@@ -77,45 +77,48 @@ char* monetdb_startup(char* dir, char si
}
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", dir);
+ 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", BINDIR);
+ snprintf(mod_path, 1000, "%s/lib/monetdb5", installdir);
GDKsetenv("monet_mod_path", mod_path);
GDKsetenv("mapi_disable", "true");
GDKsetenv("max_clients", "0");
- GDKsetenv("sql_optimizer", "sequential_pipe"); // TODO: SELECT * FROM
table should not use mitosis in the first place.
+ // 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 (silent) THRdata[0] = stream_blackhole_create();
- msab_dbpathinit(GDKgetenv("gdk_dbpath"));
- if (mal_init() != 0) {
+ 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 library containing
them is loaded at runtime.
- // argh
- SQLstatementIntern_ptr = (SQLstatementIntern_ptr_tpe)
lookup_function("lib_sql", "SQLstatementIntern");
- SQLautocommit_ptr = (SQLautocommit_ptr_tpe) lookup_function("lib_sql",
"SQLautocommit");
- SQLinitClient_ptr = (SQLinitClient_ptr_tpe) lookup_function("lib_sql",
"SQLinitClient");
- getSQLContext_ptr = (getSQLContext_ptr_tpe) lookup_function("lib_sql",
"getSQLContext");
- res_table_destroy_ptr = (res_table_destroy_ptr_tpe)
lookup_function("libstore", "res_table_destroy");
- mvc_append_wrap_ptr = (mvc_append_wrap_ptr_tpe)
lookup_function("lib_sql", "mvc_append_wrap");
- mvc_bind_schema_ptr = (mvc_bind_schema_ptr_tpe)
lookup_function("lib_sql", "mvc_bind_schema");
- mvc_bind_table_ptr = (mvc_bind_table_ptr_tpe)
lookup_function("lib_sql", "mvc_bind_table");
- sqlcleanup_ptr = (sqlcleanup_ptr_tpe) lookup_function("lib_sql",
"sqlcleanup");
- mvc_trans_ptr = (mvc_trans_ptr_tpe) lookup_function("lib_sql",
"mvc_trans");
-
+ // 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 ||
@@ -130,7 +133,7 @@ char* monetdb_startup(char* dir, char si
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) {
@@ -139,7 +142,9 @@ char* monetdb_startup(char* dir, char si
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;
}
diff --git a/java/embedded/embedded.h b/java/embedded/embedded.h
--- a/java/embedded/embedded.h
+++ b/java/embedded/embedded.h
@@ -13,7 +13,7 @@
#ifndef _INVERSE_RAPI_LIB_
#define _INVERSE_RAPI_LIB_
-char* monetdb_startup(char* dir, char silent);
+char* monetdb_startup(char* installdir, char* dbdir, char silent);
char* monetdb_query(char* query, void** result);
void monetdb_cleanup_result(void* output);
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,9 @@ JNIEXPORT jboolean JNICALL Java_org_mone
silent_char = 'y';
}
- err = monetdb_startup(directory_string, silent_char);
+ 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
if (err != NULL) {
if (exClass == NULL) {
@@ -57,7 +59,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;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list