Changeset: 38b8e2e03bd2 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=38b8e2e03bd2
Added Files:
        embedded/monetdb_embedded.c
        embedded/monetdb_embedded.h
        monetdb5/mal/mal_embedded.c
        monetdb5/mal/mal_embedded.h
        sql/backends/monet5/sql_hge.mal
Removed Files:
        embedded/embedded.c
        embedded/embedded.h
        monetdb5/embedded/CMakeLists.txt
        monetdb5/embedded/mal_embedded.c
        monetdb5/embedded/mal_embedded.h
Modified Files:
        buildtools/scripts/mal2h.py
        common/stream/stream.c
        common/stream/stream.h
        common/utils/mutils.c
        common/utils/mutils.h
        embedded/CMakeLists.txt
        gdk/gdk_utils.c
        monetdb5/CMakeLists.txt
        monetdb5/mal/CMakeLists.txt
        monetdb5/mal/mal_linker.c
        monetdb5/mal/mal_linker.h
        monetdb5/modules/mal/CMakeLists.txt
        monetdb_config.h.in
        sql/backends/monet5/CMakeLists.txt
        sql/backends/monet5/sql.mal
        sql/backends/monet5/sql_scenario.c
        tools/mserver/CMakeLists.txt
        tools/mserver/mserver5.c
        tools/mserver/shutdowntest.c
Branch: cmake-monetdblite
Log Message:

Progress for MonetDBLite:

- Disable further extensions in monetdb_config.h for MonetDBLite.
- Fixed comments strip in mal2h.py script (later I will check the grammar 
again).
- Added stream_blackhole_create code to silent output in embedded connection.
- MAL linker should be initialized separately.
- Don't read files from createdb directory in MonetDBLite.
- Added missing sql_hge.mal script back.


diffs (truncated from 997 to 300 lines):

diff --git a/buildtools/scripts/mal2h.py b/buildtools/scripts/mal2h.py
--- a/buildtools/scripts/mal2h.py
+++ b/buildtools/scripts/mal2h.py
@@ -110,7 +110,7 @@ while current_input_file_number < total_
             cur_state = 1
             i += 1
             continue
-        elif c == 'c' and i + 7 < endloop and mal_content[i:i+7] == 'comment':
+        elif c == 'c' and i + 8 < endloop and mal_content[i:i+7] == 'comment' 
and mal_content[i+8] in (' ', '\t', '\n'):
             cur_state = 2
             i += 6
             continue
diff --git a/common/stream/stream.c b/common/stream/stream.c
--- a/common/stream/stream.c
+++ b/common/stream/stream.c
@@ -5440,6 +5440,37 @@ callback_stream(void *restrict private,
        return s;
 }
 
+static ssize_t
+stream_blackhole_write(stream *restrict s, const void *restrict buf, size_t 
elmsize, size_t cnt)
+{
+       (void) s;
+       (void) buf;
+       (void) elmsize;
+       return (ssize_t) cnt;
+}
+
+static void
+stream_blackhole_close(stream *s)
+{
+       (void) s;
+       /* no resources to close */
+}
+
+stream *
+stream_blackhole_create(void)
+{
+       stream *s;
+       if ((s = create_stream("blackhole")) == NULL)
+               return NULL;
+
+       s->read = NULL;
+       s->write = stream_blackhole_write;
+       s->close = stream_blackhole_close;
+       s->flush = NULL;
+       s->readonly = false;
+       return s;
+}
+
 /* fixed-width format streams */
 #define STREAM_FWF_NAME "fwf_ftw"
 
@@ -5458,7 +5489,6 @@ typedef struct {
        size_t out_buf_remaining;
 } stream_fwf_data;
 
-
 static ssize_t
 stream_fwf_read(stream *restrict s, void *restrict buf, size_t elmsize, size_t 
cnt)
 {
@@ -5529,7 +5559,6 @@ stream_fwf_read(stream *restrict s, void
        return (ssize_t) buf_written;
 }
 
-
 static void
 stream_fwf_close(stream *s)
 {
diff --git a/common/stream/stream.h b/common/stream/stream.h
--- a/common/stream/stream.h
+++ b/common/stream/stream.h
@@ -279,6 +279,8 @@ stream_export stream *callback_stream(
        void (*destroy)(void *priv),
        const char *restrict name);
 
+stream_export stream *stream_blackhole_create(void);
+
 stream_export stream *stream_fwf_create(stream *restrict s, size_t num_fields, 
size_t *restrict widths, char filler);
 
 #endif /*_STREAM_H_*/
diff --git a/common/utils/mutils.c b/common/utils/mutils.c
--- a/common/utils/mutils.c
+++ b/common/utils/mutils.c
@@ -452,6 +452,12 @@ MT_fprintf_silent(bool silent)
        MT_silent = silent;
 }
 
+bool
+MT_is_fprintf_silent(void)
+{
+       return MT_silent;
+}
+
 int
 MT_fprintf(FILE *fp, const char *format, ...)
 {
diff --git a/common/utils/mutils.h b/common/utils/mutils.h
--- a/common/utils/mutils.h
+++ b/common/utils/mutils.h
@@ -82,6 +82,7 @@ mutils_export const char *mercurial_revi
 
 /* print to stdout/stderr conditionally */
 mutils_export void MT_fprintf_silent(bool silent);
+mutils_export bool MT_is_fprintf_silent(void);
 mutils_export int MT_fprintf(FILE *, _In_z_ _Printf_format_string_ const char 
*, ...)
        __attribute__((__format__(__printf__, 2, 3)));
 mutils_export int MT_flush(FILE *);
diff --git a/embedded/CMakeLists.txt b/embedded/CMakeLists.txt
--- a/embedded/CMakeLists.txt
+++ b/embedded/CMakeLists.txt
@@ -7,9 +7,9 @@
 #]]
 
 include_directories(${CMAKE_CURRENT_BINARY_DIR} ../common/options 
../common/utils ../common/stream ../gdk
-                                       ../monetdb5/embedded ../monetdb5/mal 
../monetdb5/modules/kernel ../monetdb5/modules/atoms
-                                       ../monetdb5/modules/mal 
../monetdb5/optimizer ../sql/backends/monet5 ../sql/include ../sql/common
-                                       ../sql/scripts ../sql/server 
../sql/storage ../sql/storage/bat)
+                                       ../monetdb5/mal 
../monetdb5/modules/kernel ../monetdb5/modules/atoms ../monetdb5/modules/mal
+                                       ../monetdb5/optimizer 
../sql/backends/monet5 ../sql/include ../sql/common ../sql/scripts
+                                       ../sql/server ../sql/storage 
../sql/storage/bat)
 
 set(MAL_SCRIPTS_LIST
        "${CMAKE_SOURCE_DIR}/monetdb5/modules/kernel/mmath.mal"
@@ -75,8 +75,8 @@ set(SQL_SCRIPTS_LIST1
 set(SQL_SCRIPTS_LIST2
        "${CMAKE_SOURCE_DIR}/sql/scripts/99_system.sql")
 
-add_library(monetdblite MODULE
-                       embedded.c
+add_library(monetdblite SHARED
+                       monetdb_embedded.c
                        ../common/options/monet_options.c
                        ../common/stream/stream.c
                        ../common/utils/mutils.c
@@ -110,12 +110,12 @@ add_library(monetdblite MODULE
                        ../gdk/gdk_unique.c
                        ../gdk/gdk_utils.c
                        ../gdk/gdk_value.c
-                       ../monetdb5/embedded/mal_embedded.c
                        ../monetdb5/mal/mal.c
                        ../monetdb5/mal/mal_atom.c
                        ../monetdb5/mal/mal_builder.c
                        ../monetdb5/mal/mal_client.c
                        ../monetdb5/mal/mal_dataflow.c
+                       ../monetdb5/mal/mal_embedded.c
                        ../monetdb5/mal/mal_exception.c
                        ../monetdb5/mal/mal_function.c
                        ../monetdb5/mal/mal_import.c
@@ -256,15 +256,16 @@ add_library(monetdblite MODULE
                        ../sql/storage/store.c
                        ../sql/storage/store_dependency.c
                        $<TARGET_OBJECTS:bison_obj>)
-# TODO If we are going to deploy MonetDBLite on FreeBSD we have to check the 
availability of the kvm library
 target_link_libraries(monetdblite PRIVATE ${MATH_LIBRARIES} 
${THREAD_LIBRARIES} ${DL_LIBRARIES} ${KVM_LIBRARIES}
-                                         ${PSAPI_LIBRARIES} 
${SOCKET_LIBRARIES})
+                                         ${PSAPI_LIBRARIES})
 set_target_properties(monetdblite PROPERTIES VERSION ${MONETDB_VERSION} 
SOVERSION ${MONETDB_VERSION_MAJOR}
                                          OUTPUT_NAME monetdb5)
 target_compile_definitions(monetdblite PRIVATE LIBMUTILS LIBMEROUTIL LIBSTREAM 
LIBGDK LIBMAL LIBATOMS LIBKERNEL
                                                   LIBSCHEDULER LIBMONETDB5 
LIBOPTIMIZER LIBSQL LIBSQLSERVER LIBSQLCOMMON LIBBATSTORE LIBSTORE
                                                   LIBMOPTIONS LIBEMBEDDED 
HAVE_EMBEDDED)
+
 install(TARGETS monetdblite DESTINATION ${LIBDIR}/monetdblite)
+install(FILES monetdb_embedded.h DESTINATION ${INCLUDEDIR}/monetdb)
 if(WIN32)
        install(FILES $<TARGET_PDB_FILE:monetdblite> DESTINATION 
${LIBDIR}/monetdblite OPTIONAL)
 endif()
diff --git a/embedded/embedded.c b/embedded/monetdb_embedded.c
rename from embedded/embedded.c
rename to embedded/monetdb_embedded.c
--- a/embedded/embedded.c
+++ b/embedded/monetdb_embedded.c
@@ -13,7 +13,7 @@
 
 #include "monetdb_config.h"
 
-#include "embedded.h"
+#include "monetdb_embedded.h"
 
 #include "mal.h"
 #include "mal_client.h"
@@ -122,7 +122,7 @@ monetdb_disconnect(monetdb_connection co
 }
 
 str
-monetdb_startup(char* dbdir, char silent, char sequential, char* library_path)
+monetdb_startup(char* dbdir, char silent, char sequential)
 {
        str msg = MAL_SUCCEED;
        monetdb_result* res = NULL;
@@ -144,11 +144,6 @@ monetdb_startup(char* dbdir, char silent
        if (monetdb_embedded_initialized)
                goto cleanup;
 
-       if (!library_path) {
-               msg = createException(MAL, "embedded.monetdb_startup", 
SQLSTATE(42000) "library_path parameter is NULL");
-               goto cleanup;
-       }
-
        if (silent)
                MT_fprintf_silent(true);
 
@@ -177,7 +172,7 @@ monetdb_startup(char* dbdir, char silent
                goto cleanup;
        }
 
-       if ((msg = malEmbeddedBoot(library_path)) != MAL_SUCCEED)
+       if ((msg = malEmbeddedBoot()) != MAL_SUCCEED)
                goto cleanup;
        if (!SQLisInitialized()) {
                msg = createException(MAL, "embedded.monetdb_startup", 
SQLSTATE(HY002) "SQL initialization failed");
diff --git a/embedded/embedded.h b/embedded/monetdb_embedded.h
rename from embedded/embedded.h
rename to embedded/monetdb_embedded.h
--- a/embedded/embedded.h
+++ b/embedded/monetdb_embedded.h
@@ -113,7 +113,7 @@ DEFAULT_STRUCT_DEFINITION(monetdb_data_t
 
 embedded_export str monetdb_connect(monetdb_connection *conn)
 embedded_export str monetdb_disconnect(monetdb_connection conn);
-embedded_export str monetdb_startup(char* dbdir, char silent, char sequential, 
char* library_path);
+embedded_export str monetdb_startup(char* dbdir, char silent, char sequential);
 embedded_export int monetdb_is_initialized(void);
 
 embedded_export str monetdb_set_autocommit(monetdb_connection conn, char 
value);
diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c
--- a/gdk/gdk_utils.c
+++ b/gdk/gdk_utils.c
@@ -1220,7 +1220,9 @@ GDKusec(void)
 {
        /* Return the time in microseconds since an epoch.  The epoch
         * is roughly the time this program started. */
-#ifdef NATIVE_WIN32
+#ifdef HAVE_EMBEDDED
+       return 0; // Just ignore on MonetDBLite
+#elif defined(NATIVE_WIN32)
        static LARGE_INTEGER freq, start;       /* automatically initialized to 
0 */
        LARGE_INTEGER ctr;
 
@@ -1466,10 +1468,13 @@ THRinit(void)
        int i = 0;
        Thread s;
        static bool first = true;
+       bool isSilent = MT_is_fprintf_silent();
 
-       if ((THRdata[0] = (void *) file_wastream(stdout, "stdout")) == NULL)
+       THRdata[0] = isSilent ? (void *) stream_blackhole_create() : (void *) 
file_wastream(stdout, "stdout");
+       if (!THRdata[0])
                return -1;
-       if ((THRdata[1] = (void *) file_rastream(stdin, "stdin")) == NULL) {
+       THRdata[1] = isSilent ? (void *) stream_blackhole_create() : (void *) 
file_rastream(stdin, "stdin");
+       if (!THRdata[1]) {
                mnstr_destroy(THRdata[0]);
                THRdata[0] = NULL;
                return -1;
diff --git a/monetdb5/CMakeLists.txt b/monetdb5/CMakeLists.txt
--- a/monetdb5/CMakeLists.txt
+++ b/monetdb5/CMakeLists.txt
@@ -10,7 +10,6 @@ add_subdirectory(mal)
 add_subdirectory(modules)
 add_subdirectory(optimizer)
 add_subdirectory(scheduler)
-add_subdirectory(embedded)
 add_subdirectory(tools)
 add_subdirectory(extras)
 if(WIN32)
diff --git a/monetdb5/embedded/CMakeLists.txt b/monetdb5/embedded/CMakeLists.txt
deleted file mode 100644
--- a/monetdb5/embedded/CMakeLists.txt
+++ /dev/null
@@ -1,108 +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 1997 - July 2008 CWI, August 2008 - 2019 MonetDB B.V.
-#]]
-
-include_directories(${CMAKE_CURRENT_BINARY_DIR} ../../common/stream 
../../common/utils ../../gdk ../mal ../modules/atoms
-                                       ../modules/kernel ../modules/mal 
../optimizer ../scheduler)
-
-set(MAL_SCRIPTS_LIST )
-if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
-       list(APPEND MAL_SCRIPTS_LIST 
"${CMAKE_SOURCE_DIR}/monetdb5/modules/mal/mdb.mal")
-endif()
-list(APPEND MAL_SCRIPTS_LIST
-       "${CMAKE_SOURCE_DIR}/monetdb5/modules/kernel/alarm.mal"
-       "${CMAKE_SOURCE_DIR}/monetdb5/modules/kernel/mmath.mal"
-       "${CMAKE_SOURCE_DIR}/monetdb5/modules/atoms/streams.mal"
-       "${CMAKE_SOURCE_DIR}/monetdb5/modules/kernel/bat5.mal"
-       "${CMAKE_SOURCE_DIR}/monetdb5/modules/mal/batExtensions.mal"
-       "${CMAKE_SOURCE_DIR}/monetdb5/modules/kernel/algebra.mal"
-       "${CMAKE_SOURCE_DIR}/monetdb5/modules/mal/orderidx.mal"
-       "${CMAKE_SOURCE_DIR}/monetdb5/modules/kernel/status.mal"
-       "${CMAKE_SOURCE_DIR}/monetdb5/modules/mal/groupby.mal"
-       "${CMAKE_SOURCE_DIR}/monetdb5/modules/kernel/group.mal"
-       "${CMAKE_SOURCE_DIR}/monetdb5/modules/kernel/aggr.mal"
-       "${CMAKE_SOURCE_DIR}/monetdb5/modules/mal/mkey.mal"
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to