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