Changeset: 5cc533410eb3 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5cc533410eb3
Modified Files:
gdk/gdk_utils.c
tools/embedded/embedded.c
tools/embedded/embedded.h
tools/embedded/embeddedr.c
tools/embedded/embeddedr.h
tools/embedded/rpackage/NAMESPACE
tools/embedded/rpackage/R/monetdb.R
Branch: embedded
Log Message:
Embedded MonetDB: shutdown support
diffs (109 lines):
diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c
--- a/gdk/gdk_utils.c
+++ b/gdk/gdk_utils.c
@@ -1241,10 +1241,12 @@ GDKexiting(void)
void
GDKexit(int status)
{
+#ifndef HAVE_EMBEDDED
if (GDKlockFile == NULL) {
/* no database lock, so no threads, so exit now */
exit(status);
}
+#endif
if (ATOMIC_TAS(GDKstopped, GDKstoppedLock, "GDKexit") == 0) {
MT_Id pid = MT_getpid();
Thread t, s;
@@ -1290,7 +1292,9 @@ GDKexit(int status)
#if !defined(USE_PTHREAD_LOCKS) && !defined(NDEBUG)
TEMDEBUG GDKlockstatistics(1);
#endif
+#ifndef HAVE_EMBEDDED
MT_global_exit(status);
+#endif
}
MT_exit_thread(-1);
}
diff --git a/tools/embedded/embedded.c b/tools/embedded/embedded.c
--- a/tools/embedded/embedded.c
+++ b/tools/embedded/embedded.c
@@ -291,3 +291,8 @@ str monetdb_get_columns(void* conn, cons
return msg;
}
+
+void monetdb_shutdown() {
+ mal_exit();
+ monetdb_embedded_initialized = 0;
+}
diff --git a/tools/embedded/embedded.h b/tools/embedded/embedded.h
--- a/tools/embedded/embedded.h
+++ b/tools/embedded/embedded.h
@@ -27,5 +27,6 @@ char* monetdb_query(void* conn, char* qu
char* monetdb_append(void* conn, const char* schema, const char* table,
append_data *data, int ncols);
void monetdb_cleanup_result(void* conn, void* output);
char* monetdb_get_columns(void* conn, const char* schema_name, const char
*table_name, int *column_count, char ***column_names, int **column_types);
+void monetdb_shutdown();
#endif
diff --git a/tools/embedded/embeddedr.c b/tools/embedded/embeddedr.c
--- a/tools/embedded/embeddedr.c
+++ b/tools/embedded/embeddedr.c
@@ -141,3 +141,8 @@ SEXP monetdb_disconnect_R(SEXP connsexp)
R_ClearExternalPtr(connsexp);
return R_NilValue;
}
+
+SEXP monetdb_shutdown_R() {
+ monetdb_shutdown();
+ return R_NilValue;
+}
diff --git a/tools/embedded/embeddedr.h b/tools/embedded/embeddedr.h
--- a/tools/embedded/embeddedr.h
+++ b/tools/embedded/embeddedr.h
@@ -16,10 +16,11 @@
#include <Rdefines.h>
#include "embedded.h"
-SEXP monetdb_query_R(SEXP connsexp, SEXP querysexp, SEXP notreally);
-SEXP monetdb_startup_R(SEXP installdirsexp, SEXP dbdirsexp, SEXP silentsexp);
-SEXP monetdb_append_R(SEXP connsexp, SEXP schemaname, SEXP tablename, SEXP
tabledata);
-SEXP monetdb_connect_R();
-SEXP monetdb_disconnect_R(SEXP connsexp);
+SEXP monetdb_query_R(SEXP connsexp, SEXP querysexp, SEXP notreally);
+SEXP monetdb_startup_R(SEXP installdirsexp, SEXP dbdirsexp, SEXP silentsexp);
+SEXP monetdb_append_R(SEXP connsexp, SEXP schemaname, SEXP tablename, SEXP
tabledata);
+SEXP monetdb_connect_R();
+SEXP monetdb_disconnect_R(SEXP connsexp);
+SEXP monetdb_shutdown_R();
#endif
diff --git a/tools/embedded/rpackage/NAMESPACE
b/tools/embedded/rpackage/NAMESPACE
--- a/tools/embedded/rpackage/NAMESPACE
+++ b/tools/embedded/rpackage/NAMESPACE
@@ -3,3 +3,4 @@ export(monetdb_embedded_query)
export(monetdb_embedded_append)
export(monetdb_embedded_connect)
export(monetdb_embedded_disconnect)
+export(monetdb_embedded_shutdown)
diff --git a/tools/embedded/rpackage/R/monetdb.R
b/tools/embedded/rpackage/R/monetdb.R
--- a/tools/embedded/rpackage/R/monetdb.R
+++ b/tools/embedded/rpackage/R/monetdb.R
@@ -28,7 +28,7 @@ monetdb_embedded_startup <- function(dir
res <- .Call("monetdb_startup_R",
monetdb_embedded_env$install_dir, dir, quiet, PACKAGE="libmonetdb5")
} else {
if (dir != monetdb_embedded_env$started_dir) {
- warning("MonetDBLite cannot change database directories
(already started in ", monetdb_embedded_env$started_dir, ").")
+ stop("MonetDBLite cannot change database directories
(already started in ", monetdb_embedded_env$started_dir, ", restart R).")
}
return(invisible(TRUE))
}
@@ -112,3 +112,8 @@ monetdb_embedded_disconnect <- function(
return(invisible(TRUE))
}
+monetdb_embedded_shutdown <- function() {
+ .Call("monetdb_shutdown_R", PACKAGE="libmonetdb5")
+ return(invisible(TRUE))
+}
+
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list