Changeset: bd23a836c0fb for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=bd23a836c0fb Modified Files: common/utils/mcrypt.c configure.ag monetdb5/mal/mal_authorize.c tools/Makefile.ag tools/embedded/Makefile.ag tools/embedded/java-package/Makefile.ag tools/embedded/java-package/org_monetdb_embedded_MonetDBEmbedded.c tools/embedded/java-package/org_monetdb_embedded_MonetDBEmbedded.h tools/embedded/java-package/org_monetdb_embedded_result_EmbeddedQueryResult.c tools/embedded/java-package/src/main/java/org/monetdb/embedded/MonetDBEmbedded.java Branch: embedded-java Log Message:
Fix compilation and afew other issues diffs (truncated from 375 to 300 lines): diff --git a/common/utils/mcrypt.c b/common/utils/mcrypt.c --- a/common/utils/mcrypt.c +++ b/common/utils/mcrypt.c @@ -384,7 +384,8 @@ mcrypt_hashPassword( #define NO_OPENSSL_FATAL "MonetDB was built without OpenSSL, but what you are trying to do requires it.\n" -char* mcrypt_sum_fail(const char *string, size_t len) { +static char* +mcrypt_sum_fail(const char *string, size_t len) { (void)string; (void)len; fprintf(stderr, NO_OPENSSL_FATAL); diff --git a/configure.ag b/configure.ag --- a/configure.ag +++ b/configure.ag @@ -208,7 +208,17 @@ if test "x$enable_embedded" != xno; then fi AM_CONDITIONAL(HAVE_EMBEDDED, test x"$enable_embedded" != xno) +dft_embedded_java=no +AC_ARG_ENABLE(embedded-java, + AS_HELP_STRING([--enable-embedded-java], + [enable support for running MonetDB as a Java library (default=no)]), + enable_embedded_java=$enableval, + enable_embedded_java=$dft_embedded_java) +AM_CONDITIONAL(HAVE_EMBEDDED, test x$enable_embedded_java != xno) +if test "x$enable_embedded" != xno; then + enable_embedded_java=no +fi dft_microhttpd=no AC_ARG_ENABLE(microhttpd, @@ -1660,6 +1670,7 @@ if test "x$have_java" != xno; then AC_PATH_PROG(JAVAC,javac,,$JPATH) AC_PATH_PROG(JAR,jar,,$JPATH) AC_PATH_PROG(JAVADOC,javadoc,,$JPATH) + AC_PATH_PROG(JAVAH,javah,,$JPATH) if test "x$have_java" = xyes; then JAVA_HOME="`echo $JAVAC | sed 's:/bin/javac$::'`" fi @@ -1675,6 +1686,12 @@ if test "x$have_java" != xno; then fi have_java=no why_have_java="(no jar found)" + elif test "x$JAVAC" = "x"; then + if test "x$enable_embedded_java" = xyes; then + AC_MSG_ERROR([No javah found]) + fi + have_java=no + why_have_java="(no javah found)" else have_java=yes fi @@ -1698,6 +1715,7 @@ AC_SUBST(JAVA) AC_SUBST(JAVAC) AC_SUBST(JAR) AC_SUBST(JAVADOC) +AC_SUBST(JAVAH) AC_SUBST(CLASSPATH) AC_SUBST(JAVA_HOME) @@ -2950,6 +2968,18 @@ if test x"$enable_sql" = xauto && test x disable_sql="(MonetDB/SQL requires MonetDB5)" fi fi +if test x"$enable_monetdb5" = xyes || test x"$enable_monetdb5" = xauto ; then + enable_mserver=auto + if test x"$enable_embedded" = x"yes" ; then + enable_mserver=no + fi +fi +if test x"$target_os" != xcygwin ; then + enable_merovingian=auto + if test x"$enable_embedded" = x"yes" ; then + enable_merovingian=no + fi +fi dnl output AM_CONDITIONAL(HAVE_GDK, test "x$enable_gdk" = xyes -o "x$enable_gdk" = xauto) @@ -2957,6 +2987,8 @@ AM_CONDITIONAL(HAVE_MONETDB5, test "x$en AM_CONDITIONAL(HAVE_SQL, test "x$enable_sql" = xyes -o "x$enable_sql" = xauto) AM_CONDITIONAL(HAVE_GEOM, test "x$enable_geom" = xyes -o "x$enable_geom" = xauto) AM_CONDITIONAL(HAVE_EMBEDDED, test "x$enable_embedded" = xyes) +AM_CONDITIONAL(HAVE_MEROVINGIAN, test "x$enable_merovingian" = xyes -o "x$enable_merovingian" = xauto) +AM_CONDITIONAL(HAVE_MSERVER, test "x$enable_mserver" = xyes -o "x$enable_mserver" = xauto) AM_CONDITIONAL(HAVE_TESTING, test "x$enable_testing" = xyes -o "x$enable_testing" = xauto) AM_CONDITIONAL(HAVE_DEVELOPER, test "x$enable_developer" = xyes) diff --git a/monetdb5/mal/mal_authorize.c b/monetdb5/mal/mal_authorize.c --- a/monetdb5/mal/mal_authorize.c +++ b/monetdb5/mal/mal_authorize.c @@ -740,6 +740,7 @@ AUTHverifyPassword(str *passwd) { char *p = *passwd; size_t len = strlen(p); + (void)len; #ifdef HAVE_RIPEMD160 if (strcmp(MONETDB5_PASSWDHASH, "RIPEMD160") == 0) { diff --git a/tools/Makefile.ag b/tools/Makefile.ag --- a/tools/Makefile.ag +++ b/tools/Makefile.ag @@ -4,4 +4,4 @@ # # Copyright 2008-2015 MonetDB B.V. -SUBDIRS = HAVE_MONETDB5?mserver NOT_WIN32?merovingian HAVE_EMBEDDED?embedded +SUBDIRS = HAVE_MSERVER?mserver HAVE_MEROVINGIAN?merovingian HAVE_EMBEDDED?embedded diff --git a/tools/embedded/Makefile.ag b/tools/embedded/Makefile.ag --- a/tools/embedded/Makefile.ag +++ b/tools/embedded/Makefile.ag @@ -32,7 +32,8 @@ INCLUDES = ../../monetdb5/mal \ ../../sql/server \ ../../sql/common \ ../../sql/storage \ - ../../sql/backends/monet5 \ + ../../sql/backends/monet5 \ + -I"/Library/Frameworks/R.framework/Resources/include" \ $(pcre_CFLAGS) lib_embedded = { diff --git a/tools/embedded/java-package/Makefile.ag b/tools/embedded/java-package/Makefile.ag --- a/tools/embedded/java-package/Makefile.ag +++ b/tools/embedded/java-package/Makefile.ag @@ -31,15 +31,21 @@ INCLUDES = ../ \ ../../../sql/server \ ../../../sql/common \ ../../../sql/storage \ - ../../../sql/backends/monet5 \ + ../../../sql/storage/bat \ + ../../../sql/backends/monet5 \ + -I$(JAVA_HOME)/include \ + -I$(JAVA_HOME)/include/darwin \ + -I"/Library/Frameworks/R.framework/Resources/include" \ $(pcre_CFLAGS) + -lib_embedded = { +lib_embedded_java = { SOURCES = org_monetdb_embedded_MonetDBEmbedded.c org_monetdb_embedded_MonetDBEmbedded.h \ org_monetdb_embedded_result_EmbeddedQueryResult.c org_monetdb_embedded_result_EmbeddedQueryResult.h VERSION = 0.1 LIBS = ../../monetdb5/tools/libmonetdb5 \ ../../gdk/libbat \ + ../embedded \ $(pcre_LIBS) $(PSAPILIB) \ $(SOCKET_LIBS) $(MALLOC_LIBS) $(DL_LIBS) $(PTHREAD_LIBS) } diff --git a/tools/embedded/java-package/org_monetdb_embedded_MonetDBEmbedded.c b/tools/embedded/java-package/org_monetdb_embedded_MonetDBEmbedded.c --- a/tools/embedded/java-package/org_monetdb_embedded_MonetDBEmbedded.c +++ b/tools/embedded/java-package/org_monetdb_embedded_MonetDBEmbedded.c @@ -9,49 +9,49 @@ #include "org_monetdb_embedded_MonetDBEmbedded.h" #include "embedded.h" -#include "gdk.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 "res_table.h" +#include "mal_type.h" -JNIEXPORT jint JNICALL Java_org_monetdb_embedded_MonetDBLite_startupWrapper +jint JNICALL Java_org_monetdb_embedded_MonetDBEmbedded_startupWrapper (JNIEnv *env, jobject object, jstring directory, jboolean silent) { - const char *dir = (*env)->GetStringUTFChars(env, directory, 0); + (void)object; + const char *directory_string_tmp = (*env)->GetStringUTFChars(env, directory, 0); + char *directory_string = strdup(directory_string_tmp); unsigned char silent_char = 'n'; // Release the directory string - (*env)->ReleaseStringUTFChars(env, directory, dir); + (*env)->ReleaseStringUTFChars(env, directory, directory_string_tmp); // Set the silent flag based on passed boolean value if (silent) { silent_char = 'y'; } - return monetdb_startup(dir, silent_char); + return monetdb_startup(directory_string, silent_char); } -JNIEXPORT jobject JNICALL Java_org_monetdb_embedded_MonetDBEmbedded_query +jobject JNICALL Java_org_monetdb_embedded_MonetDBEmbedded_query (JNIEnv *env, jobject object, jstring query) { + (void)object; res_table *output = NULL; - const char *query_string = (*env)->GetStringUTFChars(env, query, 0); + const char *query_string_tmp = (*env)->GetStringUTFChars(env, query, 0); + char *query_string = strdup(query_string_tmp); + // Release the query string + (*env)->ReleaseStringUTFChars(env, query, query_string_tmp); - jobject *result; + jobject result; jclass resultClass = (*env)->FindClass(env, "org/monetdb/embedded/result/EmbeddedQueryResult"); // from Java EmbeddedQueryResult(String[] columnNames, String[] columnTypes, int numberOfColumns, long resultPointer) jmethodID resultConstructor = (*env)->GetMethodID(env, resultClass, "<init>", "([Ljava/lang/String;[Ljava/lang/String;IJ)V"); // column names and types string arrays jobjectArray columnNames, columnTypes = NULL; + jclass stringClass = (*env)->FindClass(env, "java/lang/String"); // In case we can't find the result object class if (resultClass == NULL) { return NULL; } + // Execute the query char* err = monetdb_query(query_string, (void**)&output); - // Release the query string - (*env)->ReleaseStringUTFChars(env, query, query_string); // Checking for errors if (err != NULL) { @@ -63,13 +63,16 @@ JNIEXPORT jobject JNICALL Java_org_monet // Cloud not find the exception class, just return empty object return NULL; } - return (*env)->ThrowNew(env, exClass, err); + (*env)->ThrowNew(env, exClass, err); + return NULL; } // Collect result column names and types in string arrays // If we have not output, we will return them empty - columnNames = (jobjectArray)env->NewObjectArray(output->nr_cols, env->FindClass("java/lang/String"), env->NewStringUTF("")); - columnTypes = (jobjectArray)env->NewObjectArray(output->nr_cols, env->FindClass("java/lang/String"), env->NewStringUTF("")); + columnNames = (*env)->NewObjectArray(env, output->nr_cols, stringClass, 0); + columnTypes = (*env)->NewObjectArray(env, output->nr_cols, stringClass, 0); +// columnNames = (jobjectArray)env->NewObjectArray(env, output->nr_cols, env->FindClass("java/lang/String"), env->NewStringUTF("")); +// columnTypes = (jobjectArray)env->NewObjectArray(env, output->nr_cols, env->FindClass("java/lang/String"), env->NewStringUTF("")); if (output && output->nr_cols > 0) { int i; for (i = 0; i < output->nr_cols; i++) { @@ -98,15 +101,15 @@ JNIEXPORT jobject JNICALL Java_org_monet break; #ifdef HAVE_HGE case TYPE_hge: - type_string = "huge"; + type = "huge"; break; #endif default: - type_string = "unknown"; + type = "unknown"; } // Set the meta fields in the result object - env->SetObjectArrayElement(columnNames, i, env->NewStringUTF(env, col.name)); - env->SetObjectArrayElement(columnTypes, i, env->NewStringUTF(env, type)); + (*env)->SetObjectArrayElement(env, columnNames, i, (*env)->NewStringUTF(env, col.name)); + (*env)->SetObjectArrayElement(env, columnTypes, i, (*env)->NewStringUTF(env, type)); } } // Also keep a long value with the result pointer in the Java result object @@ -118,10 +121,11 @@ JNIEXPORT jobject JNICALL Java_org_monet return result; } -JNIEXPORT jstring JNICALL Java_org_monetdb_embedded_MonetDBLite_append -(JNIEnv *env, jobject object, jstring schema_name, jstring table_name, jobject data) { - const char *schema_name = (*env)->GetStringUTFChars(env, schema, 0); - const char *table_name = (*env)->GetStringUTFChars(env, table, 0); +jstring JNICALL Java_org_monetdb_embedded_MonetDBEmbedded_append +(JNIEnv *env, jobject object, jstring table, jstring schema, jobject data) { + (void)object; + (void)table; + (void)schema; (void)data; return (*env)->NewStringUTF(env, ""); diff --git a/tools/embedded/java-package/org_monetdb_embedded_MonetDBEmbedded.h b/tools/embedded/java-package/org_monetdb_embedded_MonetDBEmbedded.h --- a/tools/embedded/java-package/org_monetdb_embedded_MonetDBEmbedded.h +++ b/tools/embedded/java-package/org_monetdb_embedded_MonetDBEmbedded.h @@ -12,7 +12,7 @@ extern "C" { * Method: startupNative * Signature: (Ljava/lang/String;Z)I */ -JNIEXPORT jint JNICALL Java_org_monetdb_embedded_MonetDBEmbedded_startupNative +JNIEXPORT jint JNICALL Java_org_monetdb_embedded_MonetDBEmbedded_startupWrapper (JNIEnv *, jobject, jstring, jboolean); /* diff --git a/tools/embedded/java-package/org_monetdb_embedded_result_EmbeddedQueryResult.c b/tools/embedded/java-package/org_monetdb_embedded_result_EmbeddedQueryResult.c --- a/tools/embedded/java-package/org_monetdb_embedded_result_EmbeddedQueryResult.c +++ b/tools/embedded/java-package/org_monetdb_embedded_result_EmbeddedQueryResult.c @@ -9,19 +9,22 @@ #include "org_monetdb_embedded_result_EmbeddedQueryResult.h" #include "embedded.h" -JNIEXPORT jobject JNICALL Java_org_monetdb_embedded_result_EmbeddedQueryResult_getColumnWrapper +#include "res_table.h" + +jobject JNICALL Java_org_monetdb_embedded_result_EmbeddedQueryResult_getColumnWrapper _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list