MonetDB: default - Remove debug line.
Changeset: e6552c9db473 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e6552c9db473 Modified Files: monetdb5/optimizer/opt_commonTerms.c Branch: default Log Message: Remove debug line. diffs (11 lines): diff --git a/monetdb5/optimizer/opt_commonTerms.c b/monetdb5/optimizer/opt_commonTerms.c --- a/monetdb5/optimizer/opt_commonTerms.c +++ b/monetdb5/optimizer/opt_commonTerms.c @@ -189,7 +189,6 @@ OPTcommonTermsImplementation(Client cntx newComment(mb,buf); if( actions >= 0) addtoMalBlkHistory(mb); - fprintFunction(stderr, mb, stk, LIST_MAL_ALL); wrapup: if(alias) GDKfree(alias); ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: default - Indent + send debug output to stderr.
Changeset: 77bed127f56d for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=77bed127f56d Modified Files: monetdb5/optimizer/opt_commonTerms.c Branch: default Log Message: Indent + send debug output to stderr. diffs (112 lines): diff --git a/monetdb5/optimizer/opt_commonTerms.c b/monetdb5/optimizer/opt_commonTerms.c --- a/monetdb5/optimizer/opt_commonTerms.c +++ b/monetdb5/optimizer/opt_commonTerms.c @@ -58,8 +58,8 @@ OPTcommonTermsImplementation(Client cntx duplicate = 0; for ( k = 0; k < p->argc; k++) - if ( alias[getArg(p,k)] ) - getArg(p,k) = alias[getArg(p,k)]; + if ( alias[getArg(p,k)] ) + getArg(p,k) = alias[getArg(p,k)]; if (p->token == ENDsymbol){ pushInstruction(mb,p); @@ -84,7 +84,7 @@ OPTcommonTermsImplementation(Client cntx barrier |= getFunctionId(p) == assertRef; if (barrier || p->token == NOOPsymbol || p->token == ASSIGNsymbol) { #ifdef DEBUG_OPT_COMMONTERMS_MORE - fprintf(stderr, "#COMMON SKIPPED[%d] %d %d\n",i, barrier, p->retc == p->argc); + fprintf(stderr, "#COMMON SKIPPED[%d] %d %d\n",i, barrier, p->retc == p->argc); #endif pushInstruction(mb,p); continue; @@ -93,7 +93,7 @@ OPTcommonTermsImplementation(Client cntx /* the same holds for function calls without an argument, it is unclear where the results comes from (e.g. clock()) */ if ( mayhaveSideEffects(cntxt, mb, p,TRUE) || p->argc == p->retc){ #ifdef DEBUG_OPT_COMMONTERMS_MORE - fprintf(stderr, "#COMMON SKIPPED[%d] side-effect %d\n", i, p->retc == p->argc); + fprintf(stderr, "#COMMON SKIPPED[%d] side-effect %d\n", i, p->retc == p->argc); #endif pushInstruction(mb,p); continue; @@ -101,25 +101,25 @@ OPTcommonTermsImplementation(Client cntx /* from here we have a candidate to look for a match */ #ifdef DEBUG_OPT_COMMONTERMS_MORE - fprintf(stderr,"#CANDIDATE[%d] look at list[%d]=>%d\n", + fprintf(stderr,"#CANDIDATE[%d] look at list[%d]=>%d\n", i, HASHinstruction(p), hash[HASHinstruction(p)]); - fprintInstruction(stderr, mb, 0, p, LIST_MAL_ALL); + fprintInstruction(stderr, mb, 0, p, LIST_MAL_ALL); #endif /* Look into the hash structure for matching instructions */ for (j = hash[HASHinstruction(p)]; j > 0 ; j = list[j]) if ( (q= getInstrPtr(mb,j)) && getFunctionId(q) == getFunctionId(p) && getModuleId(q) == getModuleId(p) ){ #ifdef DEBUG_OPT_COMMONTERMS_MORE - fprintf(stderr,"#CANDIDATE[%d->%d] %d %d", j, list[j], - hasSameSignature(mb, p, q, p->retc), - hasSameArguments(mb, p, q)); - mnstr_printf(cntxt->fdout," :%d %d %d=%d %d %d %d ", - q->token != ASSIGNsymbol , - list[getArg(q,q->argc-1)],i, - !hasCommonResults(p, q), - !isUnsafeFunction(q), - !isUpdateInstruction(q), - isLinearFlow(q)); - printInstruction(cntxt->fdout, mb, 0, q, LIST_MAL_ALL); + fprintf(stderr,"#CANDIDATE[%d->%d] %d %d :%d %d %d=%d %d %d %d ", + j, list[j], + hasSameSignature(mb, p, q, p->retc), + hasSameArguments(mb, p, q), + q->token != ASSIGNsymbol , + list[getArg(q,q->argc-1)],i, + !hasCommonResults(p, q), + !isUnsafeFunction(q), + !isUpdateInstruction(q), + isLinearFlow(q)); + fprintInstruction(stderr, mb, 0, q, LIST_MAL_ALL); #endif /* * Simple assignments are not replaced either. They should be @@ -127,13 +127,13 @@ OPTcommonTermsImplementation(Client cntx * be assigned their value before instruction p. */ if ( hasSameArguments(mb, p, q) && -
MonetDB: cmake-fun - Compiles and install generator module.
Changeset: c807f964b5c1 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c807f964b5c1 Added Files: sql/backends/monet5/generator/CMakeLists.txt Modified Files: sql/backends/monet5/CMakeLists.txt Branch: cmake-fun Log Message: Compiles and install generator module. diffs (48 lines): diff --git a/sql/backends/monet5/CMakeLists.txt b/sql/backends/monet5/CMakeLists.txt --- a/sql/backends/monet5/CMakeLists.txt +++ b/sql/backends/monet5/CMakeLists.txt @@ -9,8 +9,8 @@ #[[if(NOT WIN32) add_subdirectory(vaults) endif() -add_subdirectory(UDF) -add_subdirectory(generator)#]] +add_subdirectory(UDF)#]] +add_subdirectory(generator) include_directories(../../include ../../common ../../storage ../../server ../../../monetdb5/modules/atoms ../../../monetdb5/modules/kernel ../../../monetdb5/mal ../../../monetdb5/modules/mal diff --git a/sql/backends/monet5/generator/CMakeLists.txt b/sql/backends/monet5/generator/CMakeLists.txt new file mode 100644 --- /dev/null +++ b/sql/backends/monet5/generator/CMakeLists.txt @@ -0,0 +1,29 @@ +#[[ +# 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(../../../include ../../../common ../../../storage ../../../server ../../../../monetdb5/modules/atoms + ../../../../monetdb5/modules/kernel ../../../../monetdb5/mal ../../../../monetdb5/modules/mal + ../../../../monetdb5/optimizer ../../../../monetdb5/scheduler ../../../../common/options + ../../../../common/stream ../../../../common/utils ../../../../gdk) + + +add_library(generator MODULE generator.c generator.h) +target_link_libraries(generator PRIVATE monetdb5 gdk) +set_target_properties(generator PROPERTIES RUNTIME_OUTPUT_NAME _generator LIBRARY_OUTPUT_NAME _generator + COMPILE_DEFINITIONS "LIBGENERATOR") + +install(TARGETS generator DESTINATION ${LIBDIR}/monetdb5) +install(FILES generator.mal DESTINATION ${LIBDIR}/monetdb5) +install(FILES 90_generator.mal DESTINATION ${LIBDIR}/monetdb5/autoload) +install(FILES 90_generator.sql DESTINATION ${LIBDIR}/monetdb5/createdb) + +if(HAVE_HGE) + install(FILES generator_hge.mal DESTINATION ${LIBDIR}/monetdb5) + install(FILES 90_generator_hge.mal DESTINATION ${LIBDIR}/monetdb5/autoload) + install(FILES 90_generator_hge.sql DESTINATION ${LIBDIR}/monetdb5/createdb) +endif() ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: default - Merge with Apr2019 branch.
Changeset: e2c3c933fb78 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e2c3c933fb78 Modified Files: monetdb5/mal/mal_client.h sql/backends/monet5/sql_execute.c sql/backends/monet5/sql_scenario.c Branch: default Log Message: Merge with Apr2019 branch. diffs (74 lines): diff --git a/monetdb5/mal/mal_client.h b/monetdb5/mal/mal_client.h --- a/monetdb5/mal/mal_client.h +++ b/monetdb5/mal/mal_client.h @@ -191,8 +191,8 @@ typedef struct CLIENT { size_t blocksize; protocol_version protocol; - bool filetrans; /* whether the client can read files for us */ - const char *query; /* string, identify whatever we're working on */ + bool filetrans; /* whether the client can read files for us */ + char *query;/* string, identify whatever we're working on */ } *Client, ClientRec; mal_export voidMCinit(void); diff --git a/sql/backends/monet5/sql_execute.c b/sql/backends/monet5/sql_execute.c --- a/sql/backends/monet5/sql_execute.c +++ b/sql/backends/monet5/sql_execute.c @@ -759,7 +759,7 @@ SQLengineIntern(Client c, backend *be) if (oldlang == 'X') { /* return directly from X-commands */ sqlcleanup(be->mvc, 0); - q = (char *) c->query; + q = c->query; c->query = NULL; GDKfree(q); return MAL_SUCCEED; @@ -781,7 +781,7 @@ SQLengineIntern(Client c, backend *be) goto cleanup_engine; } sqlcleanup(be->mvc, 0); - q = (char *) c->query; + q = c->query; c->query = NULL; GDKfree(q); return MAL_SUCCEED; @@ -829,7 +829,7 @@ cleanup_engine: MSresetInstructions(c->curprg->def, 1); freeVariables(c, c->curprg->def, NULL, be->vtop); be->language = oldlang; - q = (char *) c->query; + q = c->query; c->query = NULL; GDKfree(q); /* diff --git a/sql/backends/monet5/sql_scenario.c b/sql/backends/monet5/sql_scenario.c --- a/sql/backends/monet5/sql_scenario.c +++ b/sql/backends/monet5/sql_scenario.c @@ -1036,10 +1036,9 @@ SQLparser(Client c) char *q = NULL; /* clean up old stuff */ - msg = (char *) c->query; + q = c->query; c->query = NULL; - GDKfree(msg); /* may be NULL */ - msg = NULL; + GDKfree(q); /* may be NULL */ be = (backend *) c->sqlcontext; if (be == 0) { @@ -1335,8 +1334,12 @@ SQLparser(Client c) } } finalize: - if (msg) + if (msg) { sqlcleanup(m, 0); + q = c->query; + c->query = NULL; + GDKfree(q); + } return msg; } ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: default - Improve hot restart.
Changeset: c2b7ecc6bea5 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c2b7ecc6bea5 Modified Files: gdk/gdk_bbp.c gdk/gdk_private.h gdk/gdk_system.c gdk/gdk_utils.c Branch: default Log Message: Improve hot restart. The shutdown test started crashing. This has been fixed. diffs (236 lines): diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c --- a/gdk/gdk_bbp.c +++ b/gdk/gdk_bbp.c @@ -3530,9 +3530,8 @@ gdk_bbp_reset(void) BBPlimit -= BBPINIT; assert(BBPlimit >= 0); GDKfree(BBP[BBPlimit >> BBPINITLOG]); + BBP[BBPlimit >> BBPINITLOG] = NULL; } - memset(BBP, 0, sizeof(BBP)); - BBPlimit = 0; ATOMIC_SET(, 0); for (i = 0; i < MAXFARMS; i++) GDKfree((void *) BBPfarms[i].dirname); /* loose "const" */ diff --git a/gdk/gdk_private.h b/gdk/gdk_private.h --- a/gdk/gdk_private.h +++ b/gdk/gdk_private.h @@ -160,8 +160,6 @@ void BBPdump(void) /* never called: for __hidden gdk_return GDKssort(void *restrict h, void *restrict t, const void *restrict base, size_t n, int hs, int ts, int tpe) __attribute__((__warn_unused_result__)) __attribute__((__visibility__("hidden"))); -__hidden void gdk_system_reset(void) - __attribute__((__visibility__("hidden"))); __hidden gdk_return GDKunlink(int farmid, const char *dir, const char *nme, const char *extension) __attribute__((__visibility__("hidden"))); __hidden void HASHfree(BAT *b) diff --git a/gdk/gdk_system.c b/gdk/gdk_system.c --- a/gdk/gdk_system.c +++ b/gdk/gdk_system.c @@ -285,15 +285,6 @@ MT_thread_getdata(void) return w ? w->data : NULL; } -void -gdk_system_reset(void) -{ - assert(threadslot != TLS_OUT_OF_INDEXES); - TlsFree(threadslot); - threadslot = TLS_OUT_OF_INDEXES; - DeleteCriticalSection(_cs); -} - static void rm_winthread(struct winthread *w) { diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c --- a/gdk/gdk_utils.c +++ b/gdk/gdk_utils.c @@ -436,11 +436,11 @@ GDKsetverbose(int verbose) gdk_return GDKinit(opt *set, int setlen) { + static bool first = true; char *dbpath = mo_find_option(set, setlen, "gdk_dbpath"); const char *p; opt *n; int i, nlen = 0; - int farmid; char buf[16]; /* some sanity checks (should also find if symbols are not defined) */ @@ -467,32 +467,39 @@ GDKinit(opt *set, int setlen) static_assert(SIZEOF_OID == SIZEOF_INT || SIZEOF_OID == SIZEOF_LNG, "SIZEOF_OID should be equal to SIZEOF_INT or SIZEOF_LNG"); - if (!MT_thread_init()) - return GDK_FAIL; + if (first) { + /* some things are really only initialized once */ + if (!MT_thread_init()) + return GDK_FAIL; - for (i = 0; i <= BBP_BATMASK; i++) { - char name[16]; - snprintf(name, sizeof(name), "GDKswapLock%d", i); - MT_lock_init([i].swap, name); - snprintf(name, sizeof(name), "GDKhashLock%d", i); - MT_lock_init([i].hash, name); - snprintf(name, sizeof(name), "GDKimpsLock%d", i); - MT_lock_init([i].imprints, name); - } - for (i = 0; i <= BBP_THREADMASK; i++) { - char name[16]; - snprintf(name, sizeof(name), "GDKcacheLock%d", i); - MT_lock_init([i].cache, name); - snprintf(name, sizeof(name), "GDKtrimLock%d", i); - MT_lock_init([i].trim, name); - GDKbbpLock[i].free = 0; + for (i = 0; i <= BBP_BATMASK; i++) { + char name[16]; + snprintf(name, sizeof(name), "GDKswapLock%d", i); + MT_lock_init([i].swap, name); + snprintf(name, sizeof(name), "GDKhashLock%d", i); + MT_lock_init([i].hash, name); + snprintf(name, sizeof(name), "GDKimpsLock%d", i); + MT_lock_init([i].imprints, name); + } + for (i = 0; i <= BBP_THREADMASK; i++) { + char name[16]; + snprintf(name, sizeof(name), "GDKcacheLock%d", i); + MT_lock_init([i].cache, name); + snprintf(name, sizeof(name), "GDKtrimLock%d", i); + MT_lock_init([i].trim, name); + GDKbbpLock[i].free = 0; + } + if (mnstr_init() < 0) + return GDK_FAIL; + first = false; + } else { + /* BBP was locked by BBPexit() */ + BBPunlock(); } errno = 0; if (!GDKenvironment(dbpath)) return GDK_FAIL; - if (mnstr_init() < 0) - return GDK_FAIL; MT_init_posix(); if (THRinit() < 0)
MonetDB: default - Remove unused function BBPresetfarms.
Changeset: 6238eeb5616a for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6238eeb5616a Modified Files: clients/Tests/exports.stable.out gdk/gdk_bbp.c gdk/gdk_bbp.h Branch: default Log Message: Remove unused function BBPresetfarms. diffs (46 lines): diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out --- a/clients/Tests/exports.stable.out +++ b/clients/Tests/exports.stable.out @@ -194,7 +194,6 @@ BAT *BBPquickdesc(bat b, bool delaccess) int BBPreclaim(BAT *b); int BBPrelease(bat b); int BBPrename(bat bid, const char *nme); -void BBPresetfarms(void); int BBPretain(bat b); gdk_return BBPsave(BAT *b); void BBPshare(bat b); diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c --- a/gdk/gdk_bbp.c +++ b/gdk/gdk_bbp.c @@ -1099,20 +1099,6 @@ BBPaddfarm(const char *dirname, int role return GDK_FAIL; } -void -BBPresetfarms(void) -{ - BBPexit(); - BBPunlock(); - ATOMIC_SET(, 0); - if (BBPfarms[0].dirname != NULL) { - GDKfree((void*) BBPfarms[0].dirname); /* loose "const" */ - } - BBPfarms[0].dirname = NULL; - BBPfarms[0].roles = 0; -} - - gdk_return BBPinit(void) { diff --git a/gdk/gdk_bbp.h b/gdk/gdk_bbp.h --- a/gdk/gdk_bbp.h +++ b/gdk/gdk_bbp.h @@ -57,7 +57,6 @@ gdk_export bat getBBPsize(void); /* curr /* global calls */ gdk_export gdk_return BBPaddfarm(const char *dirname, int rolemask); -gdk_export void BBPresetfarms(void); /* update interface */ gdk_export void BBPclear(bat bid); ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: cmake-fun - Major improvements:
Changeset: 86585ac9f880 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=86585ac9f880 Added Files: cmake/FindCfitsio.cmake cmake/FindLZ4.cmake cmake/FindNetCDF.cmake cmake/FindProj.cmake cmake/FindSnappy.cmake cmake/FindValgrind.cmake Modified Files: CMakeLists.txt clients/mapiclient/CMakeLists.txt clients/mapilib/CMakeLists.txt cmake/FindPCRE.cmake common/stream/CMakeLists.txt common/utils/CMakeLists.txt gdk/CMakeLists.txt monetdb5/mal/CMakeLists.txt monetdb5/modules/atoms/CMakeLists.txt monetdb5/modules/mal/CMakeLists.txt monetdb5/tools/CMakeLists.txt sql/backends/monet5/CMakeLists.txt testing/CMakeLists.txt testing/Mtest.py.in tools/merovingian/client/CMakeLists.txt tools/merovingian/daemon/CMakeLists.txt tools/merovingian/utils/CMakeLists.txt tools/mserver/CMakeLists.txt Branch: cmake-fun Log Message: Major improvements: - Pkg-config is no longer required, thus more portability is granted. Instead we look optional libraries ourselves. - Set libraries include dir and library name variables uniform across all libraries. - Throw STATUS messages instead of WARNING messages in many places. - Fixed LINK_OPTIONS check for multiple runs. diffs (truncated from 1642 to 300 lines): diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,9 +12,7 @@ project(MonetDB C) set(C_STANDARD_REQUIRED ON) set(CMAKE_C_STANDARD 99) -set(PACKAGE "MonetDB" CACHE STRING "") - -find_package(PkgConfig) +set(PACKAGE "MonetDB" CACHE STRING "MonetDB, SQL queries at light speed") set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake" CACHE INTERNAL "Location of custom CMake modules.") include(CheckCCompilerFlag REQUIRED) @@ -33,7 +31,6 @@ cmake_policy(SET CMP0075 NEW) # Save default cmake options in the begining set(PREV_CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES}") -set(NEW_LINK_OPTIONS "${LINK_OPTIONS}") function(MT_clibsToCmake INPUT_INCS OUTPUT_INCS) # Remove -I before the include path string(LENGTH "${INPUT_INCS}" INPUT_INCS_LENGTH) @@ -106,14 +103,14 @@ else() endif() # modules to use -set(ENABLE_MAPI "YES" CACHE STRING "Enable MAPI (default=yes)") +set(ENABLE_MAPI "YES" CACHE STRING "Enable MAPI (default=YES)") if(NOT ${ENABLE_MAPI} STREQUAL "NO") set(HAVE_MAPI ON) endif() -set(ENABLE_GDK "YES" CACHE STRING "Enable support for GDK (default=yes)") +set(ENABLE_GDK "YES" CACHE STRING "Enable support for GDK (default=YES)") -set(ENABLE_MONETDB5 "YES" CACHE STRING "Enable support for MonetDB5 (default=yes)") +set(ENABLE_MONETDB5 "YES" CACHE STRING "Enable support for MonetDB5 (default=YES)") if(${ENABLE_GDK} STREQUAL "NO") if(${ENABLE_MONETDB5} STREQUAL "YES") message(FATAL_ERROR "MonetDB5 requires GDK.") @@ -124,7 +121,7 @@ else() set(HAVE_GDK ON) endif() -set(ENABLE_SQL "YES" CACHE STRING "Enable support for MonetDB/SQL (default=yes)") +set(ENABLE_SQL "YES" CACHE STRING "Enable support for MonetDB/SQL (default=YES)") if(${ENABLE_MONETDB5} STREQUAL "NO") if(${ENABLE_SQL} STREQUAL "YES") message(FATAL_ERROR "MonetDB/SQL requires MonetDB5.") @@ -133,7 +130,7 @@ if(${ENABLE_MONETDB5} STREQUAL "NO") endif() endif() -set(ENABLE_GEOM "AUTO" CACHE STRING "Enable support for geom module (default=auto)") +set(ENABLE_GEOM "AUTO" CACHE STRING "Enable support for geom module (default=AUTO)") if(${ENABLE_MONETDB5} STREQUAL "NO") if(${ENABLE_GEOM} STREQUAL "YES") message(FATAL_ERROR "Geom module requires MonetDB5.") @@ -142,8 +139,8 @@ if(${ENABLE_MONETDB5} STREQUAL "NO") endif() endif() -set(ENABLE_LIDAR "AUTO" CACHE STRING "Enable support for LiDAR data (default=auto)") -set(ENABLE_SHP "AUTO" CACHE STRING "Enable support for ESRI Shapefiles (default=auto)") +set(ENABLE_LIDAR "AUTO" CACHE STRING "Enable support for LiDAR data (default=AUTO)") +set(ENABLE_SHP "AUTO" CACHE STRING "Enable support for ESRI Shapefiles (default=AUTO)") if(${ENABLE_GEOM} STREQUAL "NO") if(${ENABLE_SHP} STREQUAL "YES") message(FATAL_ERROR "ESRI Shapefile vault requires the geom module.") @@ -154,20 +151,20 @@ else() set(HAVE_GEOM ON) endif() -set(ENABLE_EMBEDDED "NO" CACHE STRING "Enable support for running MonetDB as a library (default=no)") +set(ENABLE_EMBEDDED "NO" CACHE STRING "Enable support for running MonetDB as a library (default=NO)") if(NOT ${ENABLE_EMBEDDED} STREQUAL "NO") set(HAVE_EMBEDDED ON) endif() -set(ENABLE_CONSOLE "YES" CACHE STRING "Enables direct console on the server (involves security risks) (default=yes)") +set(ENABLE_CONSOLE "YES" CACHE STRING "Enables direct console on the server (involves security risks) (default=YES)") if(NOT ${ENABLE_CONSOLE} STREQUAL "NO")
MonetDB: subquery - bind free variables when possible (some more...
Changeset: 2912e2656631 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2912e2656631 Modified Files: sql/server/rel_unnest.c Branch: subquery Log Message: bind free variables when possible (some more cases need work) diffs (123 lines): diff --git a/sql/server/rel_unnest.c b/sql/server/rel_unnest.c --- a/sql/server/rel_unnest.c +++ b/sql/server/rel_unnest.c @@ -245,44 +245,25 @@ rel_dependent_var(mvc *sql, sql_rel *l, return res; } -#if 0 -static int -exps_only_simple_refs(list *exps) +/* + * try to bind any freevar in the expression e + */ +static void +rel_bind_var(mvc *sql, sql_rel *rel, sql_exp *e) { - int simple = 1; - node *n; - - if (!exps || !exps->h) - return 1; - for (n=exps->h; simple && n; n = n->next) { - sql_exp *e = n->data; - - simple &= (e->type == e_column && (!e->l || (!e->rname || strcmp(e->l, e->rname) == 0)) && -(e->r && (!e->name || strcmp(e->r, e->name) == 0))); - } - return simple; -} + list *fvs = exp_freevar(sql, e); -static sql_rel * -rel_remove_project(sql_rel *rel) -{ - sql_rel *p = rel, *op = rel; + if (fvs) { + node *n; + + for(n = fvs->h; n; n=n->next) { + sql_exp *e = n->data; - while(rel) { - if (rel->op == op_project && exps_only_simple_refs(rel->exps)) { - if (!p) - op = rel->l; - else - p->l = rel->l; + if (e->freevar && (exp_is_atom(e) || rel_find_exp(rel,e))) + reset_freevar(e); } - if (!rel->l || is_basetable(rel->op)) - break; - p = rel; - rel = rel->l; } - return op; } -#endif static sql_rel * push_up_project(mvc *sql, sql_rel *rel) @@ -339,8 +320,11 @@ push_up_project(mvc *sql, sql_rel *rel) for (m=r->exps->h; m; m = m->next) { sql_exp *e = m->data; - if (!e->freevar || exp_name(e)) /* only skip full freevars */ + if (!e->freevar || exp_name(e)) { /* only skip full freevars */ append(n->exps, e); + if (exp_has_freevar(e)) + rel_bind_var(sql, rel->l, e); + } } assert(!r->r); /* remove old project */ @@ -378,6 +362,8 @@ push_up_select(mvc *sql, sql_rel *rel) for (n=r->exps->h; n; n = n->next) { sql_exp *e = n->data; + if (exp_has_freevar(e)) + rel_bind_var(sql, rel->l, e); rel_join_add_exp(sql->sa, rel, e); } /* remove select */ @@ -423,6 +409,8 @@ push_up_groupby(mvc *sql, sql_rel *rel) append(e->l=sa_list(sql->sa), col); set_no_nil(e); } + if (exp_has_freevar(e)) + rel_bind_var(sql, rel->l, e); } r->exps = list_merge(r->exps, a, (fdup)NULL); if (!r->r) @@ -432,7 +420,7 @@ push_up_groupby(mvc *sql, sql_rel *rel) rel->r = r->l; r->l = rel; - /* check if a join expression needs to be move above the group by (into a select) */ + /* check if a join expression needs to be moved above the group by (into a select) */ sexps = sa_list(sql->sa); jexps = sa_list(sql->sa); if (rel->exps) { @@ -476,8 +464,12 @@ move_join_exps(mvc *sql, sql_rel *j, sql sql_exp *e = n->data; if (rel_find_exp(rel, e)) { + if (exp_has_freevar(e)) + rel_bind_var(sql, rel->l, e); append(rel->exps, e); } else { + if (exp_has_freevar(e)) + rel_bind_var(sql, j->l, e); append(j->exps, e); } } @@ -714,8 +706,6 @@ rel_unnest_dependent(mvc *sql, sql_rel * if (rel_has_freevar(r)){ list *ad; - //rel->r = r = rel_remove_project(r); - if (r && is_simple_project(r->op)) { rel = push_up_project(sql, rel);
MonetDB: subquery - fixes for complex in cases
Changeset: b3a0f40d1b58 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b3a0f40d1b58 Modified Files: sql/server/rel_rel.c sql/server/rel_select.c sql/server/rel_unnest.c sql/server/rel_unnest.h sql/test/BugTracker-2009/Tests/count_bug.SF-2604583.stable.out.int128 sql/test/BugTracker-2012/Tests/scalar_subquery_with_alias.Bug-3093.stable.out Branch: subquery Log Message: fixes for complex in cases diffs (truncated from 1062 to 300 lines): diff --git a/sql/server/rel_rel.c b/sql/server/rel_rel.c --- a/sql/server/rel_rel.c +++ b/sql/server/rel_rel.c @@ -566,11 +566,15 @@ rel_label( mvc *sql, sql_rel *r, int all r->exps->ht = NULL; for (; ne; ne = ne->next) { - if (all) { - nr = ++sql->label; - cnme = number2name(cname, 16, nr); + sql_exp *e = ne->data; + + if (!e->freevar) { + if (all) { + nr = ++sql->label; + cnme = number2name(cname, 16, nr); + } + exp_setname(sql->sa, e, tnme, cnme ); } - exp_setname(sql->sa, ne->data, tnme, cnme ); } } /* op_projects can have a order by list */ diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c --- a/sql/server/rel_select.c +++ b/sql/server/rel_select.c @@ -2008,6 +2008,200 @@ static sql_exp* return sql_error(sql, 02, SQLSTATE(42000) "SELECT: no such operator '%s'", fname); } +static sql_exp * +rel_in_value_exp(sql_query *query, sql_rel **rel, symbol *sc, int f) +{ + mvc *sql = query->sql; + exp_kind ek = {type_value, card_column, FALSE}; + + dlist *dl = sc->data.lval; + symbol *lo = dl->h->data.sym; + dnode *n = dl->h->next; + sql_rel *left = *rel, *right = NULL; + sql_exp *l = NULL, *r = NULL; + int vals_only = 1, l_is_value = 1, l_init = 0, l_used = 0, l_tuple = 0; + list *vals = NULL, *pexps = NULL; + + (void)l_tuple; + + /* no input, assume single value */ + if (!left) { + left = *rel = rel_project_exp(sql->sa, exp_atom_bool(sql->sa, 1)); + reset_processed(left); + } + if (left && is_sql_sel(f) && !is_processed(left) && is_simple_project(left->op)) { + pexps = left->exps; + if (left->l) { + left = left->l; + } else { + pexps = sa_list(sql->sa); + l_init = 1; + } + } + + l = rel_value_exp(query, , lo, f, ek); + if (!l) + return NULL; + if (l && exp_has_freevar(l)) { + l_is_value=0; + } + ek.card = card_set; + + if (n->type == type_list) { + vals = sa_list(sql->sa); + n = n->data.lval->h; + for (; n; n = n->next) { + sql_rel *z = NULL; + + r = rel_value_exp(query, , n->data.sym, sql_where /* ie no result project */, ek); + if (z && r) { + sql_subaggr *ea = NULL; + sql_exp *a, *id; + list *exps; + + if (l_init) { + l = rel_project_add_exp(sql, left, l); + l = exp_ref(sql->sa, l); + } + exps = rel_projections(sql, left, NULL, 1/*keep names */, 1); + left = rel_add_identity(sql, left, ); + id = exp_ref(sql->sa, id); + left = rel_crossproduct(sql->sa, left, z, is_sql_sel(f)?op_left:op_join); + /* TODO only if freevars */ + if (!l_is_value) + set_dependent(left); + + left = rel_groupby(sql, left, exp2list(sql->sa, id)); + left->exps = exps; + /* group by on ? */ + if (rel_convert_types(sql, , , 1, type_equal_no_any) < 0) + return NULL; + ea = sql_bind_aggr(sql->sa, sql->session->schema, sc->token==SQL_IN?"anyequal":"allnotequal", exp_subtype(r)); + a = exp_aggr1(sql->sa, l, ea, 0, 0, CARD_ATOM, 0); + append(a->l, r); + r = rel_groupby_add_aggr(sql, left, a); + r =
MonetDB: cmake-fun - Install Mapprove only on install phase.
Changeset: 404941ab08b7 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=404941ab08b7 Modified Files: testing/CMakeLists.txt Branch: cmake-fun Log Message: Install Mapprove only on install phase. diffs (16 lines): diff --git a/testing/CMakeLists.txt b/testing/CMakeLists.txt --- a/testing/CMakeLists.txt +++ b/testing/CMakeLists.txt @@ -81,10 +81,6 @@ if(WIN32) else() configure_file(Mlog.in ${CMAKE_CURRENT_BINARY_DIR}/Mlog @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/Mlog PERMISSIONS ${PROGRAM_PERMISSIONS_DEFAULT} DESTINATION ${BINDIR}) - - add_custom_target(Mapprove ALL - COMMAND ${CMAKE_COMMAND} -E make_directory ${BINDIR} - COMMAND ${CMAKE_COMMAND} -E create_symlink Mtest.py ${BINDIR}/Mapprove.py - COMMENT "Creating symlink to Mtest.py") - add_dependencies(Mdiff Mapprove) # Hack, this will make the custom_target "Mapprove" run every time + install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${BINDIR})") + install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink Mtest.py ${BINDIR}/Mapprove.py)") endif() ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: cmake-fun - Merge with default.
Changeset: 93efa31bb360 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=93efa31bb360 Added Files: buildtools/selinux/ChangeLog.Apr2019 sql/test/BugTracker-2019/Tests/r-date.Bug-6674.sql sql/test/BugTracker-2019/Tests/r-date.Bug-6674.stable.err sql/test/BugTracker-2019/Tests/r-date.Bug-6674.stable.out Modified Files: MonetDB.spec NT/monetdb_config.h.in buildtools/ChangeLog.Apr2019 configure.ag gdk/ChangeLog.Apr2019 gdk/gdk_analytic.h gdk/gdk_analytic_bounds.c gdk/gdk_analytic_func.c gdk/gdk_atomic.h gdk/gdk_utils.c monetdb5/mal/mal_dataflow.c monetdb5/modules/kernel/status.c sql/test/BugTracker-2019/Tests/All tools/merovingian/ChangeLog.Apr2019 tools/merovingian/daemon/forkmserver.c tools/merovingian/utils/properties.h Branch: cmake-fun Log Message: Merge with default. diffs (truncated from 5098 to 300 lines): diff --git a/NT/monetdb_config.h.in b/NT/monetdb_config.h.in --- a/NT/monetdb_config.h.in +++ b/NT/monetdb_config.h.in @@ -438,6 +438,11 @@ /* Define if you have the SQLGetPrivateProfileString function */ #define HAVE_SQLGETPRIVATEPROFILESTRING 1 +/* Define to 1 if stdatomic.h conforms to C11. */ +#if defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 1800) +#define HAVE_STDATOMIC_H 1 +#endif + /* Define to 1 if stdbool.h conforms to C99. */ #define HAVE_STDBOOL_H 1 diff --git a/buildtools/ChangeLog.Apr2019 b/buildtools/ChangeLog.Apr2019 --- a/buildtools/ChangeLog.Apr2019 +++ b/buildtools/ChangeLog.Apr2019 @@ -1,7 +1,13 @@ # ChangeLog file for buildtools # This file is updated with Maddlog +* Tue Mar 19 2019 Sjoerd Mullender +- We now use the C11 atomic operations if available, although + libatomic_ops is still used if present and not disabled on the configure + command line. + * Wed Aug 29 2018 Sjoerd Mullender - We now also build the Python 3 integration packages for Fedora, Debian, - and Ubuntu (not for Debian 8 or Ubuntu 14.04 which are too old). + Ubuntu, and Windows (not for Debian 8, Ubuntu 14.04, or EPEL 6 and 7 + which are too old). diff --git a/buildtools/selinux/ChangeLog.Apr2019 b/buildtools/selinux/ChangeLog.Apr2019 new file mode 100644 --- /dev/null +++ b/buildtools/selinux/ChangeLog.Apr2019 @@ -0,0 +1,9 @@ +# ChangeLog file for selinux +# This file is updated with Maddlog + +* Tue Mar 19 2019 Sjoerd Mullender +- There is one tunable parameter, mserver5_can_read_home, which can + be set using "setsebool -P mserver5_can_read_home=true" to allow an + mserver5 process started by monetdbd under the control of systemd to + read files in users' home directories. + diff --git a/configure.ag b/configure.ag --- a/configure.ag +++ b/configure.ag @@ -2489,6 +2489,7 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ @%:@else atomic_uint i; @%:@endif + typedef void *_Atomic volatile aptr; ]], [[ atomic_store(, 0); ]] )], diff --git a/gdk/ChangeLog.Apr2019 b/gdk/ChangeLog.Apr2019 --- a/gdk/ChangeLog.Apr2019 +++ b/gdk/ChangeLog.Apr2019 @@ -1,6 +1,11 @@ # ChangeLog file for MonetDB # This file is updated with Maddlog +* Tue Mar 19 2019 Sjoerd Mullender +- During processing, we now try to maintain the smallest and largest + values that occur in a BAT. This information is not saved across + server restarts. + * Mon Nov 12 2018 Sjoerd Mullender - Added an extra argument of type `bool' to the atom to string and string to atom methods to indicate whether the string is for diff --git a/gdk/gdk_analytic.h b/gdk/gdk_analytic.h --- a/gdk/gdk_analytic.h +++ b/gdk/gdk_analytic.h @@ -18,19 +18,21 @@ gdk_export gdk_return GDKanalyticaldiff(BAT *r, BAT *b, BAT *p, int tpe); -gdk_export gdk_return GDKanalyticalntile(BAT *r, BAT *b, BAT *p, int tpe, const void* restrict ntile); -gdk_export gdk_return GDKanalyticallag(BAT *r, BAT *b, BAT *p, BUN lag, const void* restrict default_value, int tpe); -gdk_export gdk_return GDKanalyticallead(BAT *r, BAT *b, BAT *p, BUN lead, const void* restrict default_value, int tpe); +gdk_export gdk_return GDKanalyticalntile(BAT *r, BAT *b, BAT *p, int tpe, const void *restrict ntile); +gdk_export gdk_return GDKanalyticallag(BAT *r, BAT *b, BAT *p, BUN lag, const void *restrict default_value, int tpe); +gdk_export gdk_return GDKanalyticallead(BAT *r, BAT *b, BAT *p, BUN lead, const void *restrict default_value, int tpe); -gdk_export gdk_return GDKanalyticalwindowbounds(BAT *r, BAT *b, BAT *p, BAT *l, const void* restrict bound, - int tp1, int tp2, int unit, bool preceding, lng first_half); +gdk_export gdk_return GDKanalyticalwindowbounds(BAT *r, BAT *b, BAT *p, BAT *l, + const void *restrict bound, + int tp1, int tp2, int
MonetDB: cmake-fun - Compiles and installs geom module.
Changeset: dc33c128557f for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=dc33c128557f Added Files: geom/CMakeLists.txt geom/lib/CMakeLists.txt geom/monetdb5/CMakeLists.txt geom/sql/CMakeLists.txt Modified Files: CMakeLists.txt sql/backends/monet5/CMakeLists.txt testing/CMakeLists.txt Branch: cmake-fun Log Message: Compiles and installs geom module. diffs (115 lines): diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2004,9 +2004,9 @@ endif() if(HAVE_SQL) add_subdirectory(sql) endif() -#[[if(HAVE_GEOM) +if(HAVE_GEOM) add_subdirectory(geom) -endif()#]] +endif() add_subdirectory(tools) if(HAVE_TESTING) add_subdirectory(testing) diff --git a/geom/CMakeLists.txt b/geom/CMakeLists.txt new file mode 100644 --- /dev/null +++ b/geom/CMakeLists.txt @@ -0,0 +1,13 @@ +#[[ +# 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. +#]] + +add_subdirectory(lib) +if(HAVE_MONETDB5) + add_subdirectory(monetdb5) +endif() +add_subdirectory(sql) diff --git a/geom/lib/CMakeLists.txt b/geom/lib/CMakeLists.txt new file mode 100644 --- /dev/null +++ b/geom/lib/CMakeLists.txt @@ -0,0 +1,12 @@ +#[[ +# 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(../../common/options ../../common/stream ../../gdk ${GEOS_INCS} ${PROJ_INCLUDE_DIR}) + +add_library(geomobj STATIC libgeom.c libgeom.h) +set_target_properties(geomobj PROPERTIES POSITION_INDEPENDENT_CODE ON) diff --git a/geom/monetdb5/CMakeLists.txt b/geom/monetdb5/CMakeLists.txt new file mode 100644 --- /dev/null +++ b/geom/monetdb5/CMakeLists.txt @@ -0,0 +1,18 @@ +#[[ +# 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(../lib ../../gdk ../../common/stream ../../common/options ../../monetdb5/mal ${GEOS_INCS} + ${PROJ_INCLUDE_DIR}) + +add_library(geom MODULE geom.h geom.c geomBulk.c geom_upgrade.c) +target_link_libraries(geom PRIVATE geomobj gdk stream monetdb5 ${GEOS_LIBS} ${PROJ_LIBRARIES}) +set_target_properties(geom PROPERTIES RUNTIME_OUTPUT_NAME _geom LIBRARY_OUTPUT_NAME _geom COMPILE_DEFINITIONS "LIBGEOM") + +install(TARGETS geom DESTINATION ${LIBDIR}/monetdb5) +install(FILES geom.mal DESTINATION ${LIBDIR}/monetdb5) +install(FILES 30_geom.mal DESTINATION ${LIBDIR}/monetdb5/autoload) diff --git a/geom/sql/CMakeLists.txt b/geom/sql/CMakeLists.txt new file mode 100644 --- /dev/null +++ b/geom/sql/CMakeLists.txt @@ -0,0 +1,9 @@ +#[[ +# 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. +#]] + +install(FILES 40_geom.sql DESTINATION ${LIBDIR}/monetdb5/createdb) diff --git a/sql/backends/monet5/CMakeLists.txt b/sql/backends/monet5/CMakeLists.txt --- a/sql/backends/monet5/CMakeLists.txt +++ b/sql/backends/monet5/CMakeLists.txt @@ -41,6 +41,7 @@ add_library(sql MODULE sql_fround.c sql_fround_impl.h sql_orderidx.c sql_orderidx.h wlr.c wlr.h + sql_datetrunc.c sql_rank.c sql_rank.h) target_link_libraries(sql PRIVATE monetdb5 mapi gdk stream ${OPENSSL_LIBRARIES} PUBLIC sqlserver store batstore sqlcommon) set_target_properties(sql PROPERTIES RUNTIME_OUTPUT_NAME _sql LIBRARY_OUTPUT_NAME _sql COMPILE_DEFINITIONS "LIBSQL") diff --git a/testing/CMakeLists.txt b/testing/CMakeLists.txt --- a/testing/CMakeLists.txt +++ b/testing/CMakeLists.txt @@ -82,8 +82,9 @@ else() configure_file(Mlog.in ${CMAKE_CURRENT_BINARY_DIR}/Mlog @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/Mlog PERMISSIONS ${PROGRAM_PERMISSIONS_DEFAULT} DESTINATION ${BINDIR}) - add_custom_target(Mbindir ALL COMMAND ${CMAKE_COMMAND} -E make_directory ${BINDIR}) - add_custom_target(Mapprove ALL COMMAND ${CMAKE_COMMAND} -E create_symlink Mtest.py Mapprove.py - WORKING_DIRECTORY ${BINDIR} COMMENT "Creating symlink to Mtest.py") - add_dependencies(Mdiff Mbindir Mapprove) # Hack, this will make the custom_target "Mapprove" run every
MonetDB: default - Renamed macros for atomic pointers, added ATO...
Changeset: 6660692e5c02 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6660692e5c02 Modified Files: NT/monetdb_config.h.in configure.ag gdk/gdk_atomic.h gdk/gdk_utils.c monetdb5/mal/mal_dataflow.c monetdb5/modules/kernel/status.c Branch: default Log Message: Renamed macros for atomic pointers, added ATOMIC_PTR_CAS, use volatile. diffs (truncated from 366 to 300 lines): diff --git a/NT/monetdb_config.h.in b/NT/monetdb_config.h.in --- a/NT/monetdb_config.h.in +++ b/NT/monetdb_config.h.in @@ -438,6 +438,11 @@ /* Define if you have the SQLGetPrivateProfileString function */ #define HAVE_SQLGETPRIVATEPROFILESTRING 1 +/* Define to 1 if stdatomic.h conforms to C11. */ +#if defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 1800) +#define HAVE_STDATOMIC_H 1 +#endif + /* Define to 1 if stdbool.h conforms to C99. */ #define HAVE_STDBOOL_H 1 diff --git a/configure.ag b/configure.ag --- a/configure.ag +++ b/configure.ag @@ -2489,6 +2489,7 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ @%:@else atomic_uint i; @%:@endif + typedef void *_Atomic volatile aptr; ]], [[ atomic_store(, 0); ]] )], diff --git a/gdk/gdk_atomic.h b/gdk/gdk_atomic.h --- a/gdk/gdk_atomic.h +++ b/gdk/gdk_atomic.h @@ -33,12 +33,12 @@ * * Some of these are also available for pointers: * ATOMIC_PTR_INIT - * ATOMIC_GET_PTR - * ATOMIC_SET_PTR - * ATOMIC_XCG_PTR - * To define an atomic pointer, use ATOMIC_PTR_TYPE(type). This may - * or may not use the type provided to construct a type that is usable - * in the above macros. + * ATOMIC_PTR_GET + * ATOMIC_PTR_SET + * ATOMIC_PTR_XCG + * ATOMIC_PTR_CAS + * To define an atomic pointer, use ATOMIC_PTR_TYPE. This is a (void *) + * pointer that is appropriately adapted for atomic use. * * In addition, the following operations are defined: * ATOMIC_TAS -- test-and-set: set variable to "true" and return old value @@ -55,30 +55,30 @@ /* define this if you don't want to use atomic instructions */ /* #define NO_ATOMIC_INSTRUCTIONS */ -#if defined(HAVE_STDATOMIC_H) && !defined(__INTEL_COMPILER) && !defined(__STDC_NO_ATOMICS__) && !defined(NO_ATOMIC_INSTRUCTIONS) +#if defined(HAVE_STDATOMIC_H) && !defined(__STDC_NO_ATOMICS__) && !defined(NO_ATOMIC_INSTRUCTIONS) #include #if ATOMIC_LLONG_LOCK_FREE == 2 -typedef atomic_ullong ATOMIC_TYPE; +typedef volatile atomic_ullong ATOMIC_TYPE; typedef unsigned long long ATOMIC_BASE_TYPE; #elif ATOMIC_LONG_LOCK_FREE == 2 -typedef atomic_ulong ATOMIC_TYPE; +typedef volatile atomic_ulong ATOMIC_TYPE; typedef unsigned long ATOMIC_BASE_TYPE; #elif ATOMIC_INT_LOCK_FREE == 2 -typedef atomic_uint ATOMIC_TYPE; +typedef volatile atomic_uint ATOMIC_TYPE; typedef unsigned int ATOMIC_BASE_TYPE; #elif ATOMIC_LLONG_LOCK_FREE == 1 -typedef atomic_ullong ATOMIC_TYPE; +typedef volatile atomic_ullong ATOMIC_TYPE; typedef unsigned long long ATOMIC_BASE_TYPE; #elif ATOMIC_LONG_LOCK_FREE == 1 -typedef atomic_ulong ATOMIC_TYPE; +typedef volatile atomic_ulong ATOMIC_TYPE; typedef unsigned long ATOMIC_BASE_TYPE; #elif ATOMIC_INT_LOCK_FREE == 1 -typedef atomic_uint ATOMIC_TYPE; +typedef volatile atomic_uint ATOMIC_TYPE; typedef unsigned int ATOMIC_BASE_TYPE; #else -typedef atomic_ullong ATOMIC_TYPE; +typedef volatile atomic_ullong ATOMIC_TYPE; typedef unsigned long long ATOMIC_BASE_TYPE; #endif @@ -92,13 +92,19 @@ typedef unsigned long long ATOMIC_BASE_T #define ATOMIC_INC(var)(atomic_fetch_add(var, 1) + 1) #define ATOMIC_DEC(var)(atomic_fetch_sub(var, 1) - 1) -#define ATOMIC_PTR_TYPE(typ) _Atomic typ +#ifdef __INTEL_COMPILER +typedef volatile atomic_address ATOMIC_PTR_TYPE; +#else +typedef void *_Atomic volatile ATOMIC_PTR_TYPE; +#endif #define ATOMIC_PTR_INIT(var, val) atomic_init(var, val) -#define ATOMIC_GET_PTR(var)atomic_load(var) -#define ATOMIC_SET_PTR(var, val) atomic_store(var, val) -#define ATOMIC_XCG_PTR(var, val) atomic_exchange(var, val) +#define ATOMIC_PTR_VAR_INIT(val) ATOMIC_VAR_INIT(val) +#define ATOMIC_PTR_GET(var)atomic_load(var) +#define ATOMIC_PTR_SET(var, val) atomic_store(var, (void *) (val)) +#define ATOMIC_PTR_XCG(var, val) atomic_exchange(var, (void *) (val)) +#define ATOMIC_PTR_CAS(var, exp, des) atomic_compare_exchange_strong(var, exp, (void *) (des)) -typedef atomic_flag ATOMIC_FLAG; +typedef volatile atomic_flag ATOMIC_FLAG; /* ATOMIC_FLAG_INIT is already defined by the include file */ #define ATOMIC_CLEAR(var) atomic_flag_clear(var) #define ATOMIC_TAS(var)atomic_flag_test_and_set(var) @@ -120,6 +126,8 @@ typedef atomic_flag ATOMIC_FLAG; * * This does not go for the Intel compiler, so there we use * _InterlockedExchangeAdd to load the value of an atomic variable. + * There might be a better way, but it's hard to find in the + * documentation. */ #if
MonetDB: cmake-fun - Compiles from outside the source directory.
Changeset: 66a480606a35 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=66a480606a35 Added Files: monetdb_config.h.in Removed Files: cmake/monetdb_config.h.in Modified Files: CMakeLists.txt clients/mapilib/CMakeLists.txt common/stream/CMakeLists.txt gdk/CMakeLists.txt monetdb5/tools/CMakeLists.txt testing/CMakeLists.txt tools/merovingian/daemon/CMakeLists.txt tools/merovingian/daemon/config/CMakeLists.txt tools/mserver/CMakeLists.txt Branch: cmake-fun Log Message: Compiles from outside the source directory. diffs (229 lines): diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -510,25 +510,29 @@ set(PYTHON2 "AUTO" CACHE STRING "python2 set(PYTHON3 "AUTO" CACHE STRING "python3 is installed in DIR") message(STATUS "Checking major version of Python interpreter") find_program(PYTHON_INTERPRETER python) -exec_program("${PYTHON_INTERPRETER}" ARGS "-V" OUTPUT_VARIABLE PY_OUPUT_RES RETURN_VALUE PY_RETURN_CODE) -if(PY_RETURN_CODE EQUAL 0 AND PY_OUPUT_RES) - string(FIND "${PY_OUPUT_RES}" "Python 2" MAJOR_IS_PYTHON2) - string(FIND "${PY_OUPUT_RES}" "Python 3" MAJOR_IS_PYTHON3) - if(NOT MAJOR_IS_PYTHON2 EQUAL -1) # Python 2 has precedence - set(MAJOR_PYTHON 2) - set(HAVE_PYTHON2 YES) - set(PY2_OUPUT_RES "${PY_OUPUT_RES}") - elseif(NOT MAJOR_IS_PYTHON3 EQUAL -1) - set(MAJOR_PYTHON 3) - set(HAVE_PYTHON3 YES) - set(PY3_OUPUT_RES "${PY_OUPUT_RES}") - else() - message(FATAL_ERROR "Only python versions 2 and 3 are supported by MonetDB") +if(PYTHON_INTERPRETER) + exec_program("${PYTHON_INTERPRETER}" ARGS "-V" OUTPUT_VARIABLE PY_OUPUT_RES RETURN_VALUE PY_RETURN_CODE) + if(PY_RETURN_CODE EQUAL 0 AND PY_OUPUT_RES) + string(FIND "${PY_OUPUT_RES}" "Python 2" MAJOR_IS_PYTHON2) + string(FIND "${PY_OUPUT_RES}" "Python 3" MAJOR_IS_PYTHON3) + if(NOT MAJOR_IS_PYTHON2 EQUAL -1) # Python 2 has precedence + set(MAJOR_PYTHON 2) + set(HAVE_PYTHON2 YES) + set(PY2_OUPUT_RES "${PY_OUPUT_RES}") + elseif(NOT MAJOR_IS_PYTHON3 EQUAL -1) + set(MAJOR_PYTHON 3) + set(HAVE_PYTHON3 YES) + set(PY3_OUPUT_RES "${PY_OUPUT_RES}") + else() + message(FATAL_ERROR "Only python versions 2 and 3 are supported by MonetDB") + endif() + if(MAJOR_IS_PYTHON2 OR MAJOR_IS_PYTHON3) + set(HAVE_PYTHON YES) + message(STATUS "Major Python interpreter: ${MAJOR_PYTHON}") + endif() endif() - if(MAJOR_IS_PYTHON2 OR MAJOR_IS_PYTHON3) - set(HAVE_PYTHON YES) - message(STATUS "Major Python interpreter: ${MAJOR_PYTHON}") - endif() +else() + message(WARNING "A python interpreter was not found") endif() if(NOT ${PYTHON2} STREQUAL "NO") @@ -1984,9 +1988,9 @@ set(builtby "$ENV{USER}@${BUILD_HOST}") set(compilercall "${CMAKE_C_COMPILER}${CMAKE_C_FLAGS}") set(linkercall "${CMAKE_LINKER}${CMAKE_REQUIRED_FLAGS}") -configure_file(${CMAKE_SOURCE_DIR}/cmake/monetdb_config.h.in ${CMAKE_SOURCE_DIR}/monetdb_config.h) -install(FILES monetdb_config.h DESTINATION ${INCLUDEDIR}/monetdb) -include_directories(${CMAKE_SOURCE_DIR}) +configure_file(monetdb_config.h.in ${CMAKE_CURRENT_BINARY_DIR}/monetdb_config.h) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/monetdb_config.h DESTINATION ${INCLUDEDIR}/monetdb) +include_directories(${CMAKE_CURRENT_BINARY_DIR}) add_subdirectory(buildtools) add_subdirectory(common) diff --git a/clients/mapilib/CMakeLists.txt b/clients/mapilib/CMakeLists.txt --- a/clients/mapilib/CMakeLists.txt +++ b/clients/mapilib/CMakeLists.txt @@ -19,6 +19,6 @@ if(NOT WIN32) if(SOCKET_LIBRARIES) set(PKG_SOCKET_LIBS "-l${SOCKET_LIBRARIES}") #TODO fix this endif() - configure_file(monetdb-mapi.pc.in monetdb-mapi.pc @ONLY) - install(FILES monetdb-mapi.pc DESTINATION ${PKGCONFIGDIR}) + configure_file(monetdb-mapi.pc.in ${CMAKE_CURRENT_BINARY_DIR}/monetdb-mapi.pc @ONLY) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/monetdb-mapi.pc DESTINATION ${PKGCONFIGDIR}) endif() diff --git a/common/stream/CMakeLists.txt b/common/stream/CMakeLists.txt --- a/common/stream/CMakeLists.txt +++ b/common/stream/CMakeLists.txt @@ -43,6 +43,6 @@ if(NOT WIN32) if(Iconv_LIBRARY AND NOT Iconv_IS_BUILT_IN) set(PKG_LIBICONV "-l${Iconv_LIBRARY}") endif() - configure_file(monetdb-stream.pc.in monetdb-stream.pc @ONLY) - install(FILES monetdb-stream.pc DESTINATION ${PKGCONFIGDIR}) + configure_file(monetdb-stream.pc.in
MonetDB: cmake-fun - fix compilation of sql with seperate build ...
Changeset: 713ca59c82b8 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=713ca59c82b8 Modified Files: sql/server/CMakeLists.txt Branch: cmake-fun Log Message: fix compilation of sql with seperate build directory diffs (12 lines): diff --git a/sql/server/CMakeLists.txt b/sql/server/CMakeLists.txt --- a/sql/server/CMakeLists.txt +++ b/sql/server/CMakeLists.txt @@ -8,7 +8,7 @@ include_directories(. ../include ../common ../storage ../../monetdb5/mal ../../monetdb5/modules/atoms ../../monetdb5/modules/mal ../../monetdb5/extras/rapi ../../clients/mapilib ../../common/options - ../../common/stream ../../gdk) + ../../common/stream ../../gdk ${CMAKE_CURRENT_BINARY_DIR}) bison_target(sqlparser sql_parser.y ${CMAKE_CURRENT_BINARY_DIR}/sql_parser.tab.c COMPILE_FLAGS "-d -p sql -r all" ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: cmake-fun - Compiles and installs monetdbd.
Changeset: b09b2713d405 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b09b2713d405 Added Files: tools/merovingian/client/CMakeLists.txt tools/merovingian/daemon/CMakeLists.txt tools/merovingian/daemon/config/CMakeLists.txt tools/merovingian/utils/CMakeLists.txt Modified Files: CMakeLists.txt clients/mapiclient/CMakeLists.txt common/options/CMakeLists.txt common/stream/CMakeLists.txt gdk/CMakeLists.txt monetdb5/mal/CMakeLists.txt sql/CMakeLists.txt sql/server/CMakeLists.txt tools/merovingian/CMakeLists.txt tools/merovingian/daemon/config/.merovingian_properties.in tools/merovingian/daemon/config/monetdbd.in tools/mserver/CMakeLists.txt Branch: cmake-fun Log Message: Compiles and installs monetdbd. diffs (239 lines): diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -188,7 +188,7 @@ if(UNIX OR APPLE) # instalation director set(LIBDIR "${CMAKE_INSTALL_FULL_LIBDIR}") set(LIBEXECDIR "${CMAKE_INSTALL_FULL_LIBEXECDIR}") set(LOCALSTATEDIR "${CMAKE_INSTALL_FULL_LOCALSTATEDIR}") - set(INCLUDEDIR "${CMAKE_INSTALL_FULL_INCLUDEDIR}/monetdb") + set(INCLUDEDIR "${CMAKE_INSTALL_FULL_INCLUDEDIR}") set(PKGCONFIGDIR "${LIBDIR}/pkgconfig") set(SYSCONFDIR "${CMAKE_INSTALL_FULL_SYSCONFDIR}") set(MANDIR "${CMAKE_INSTALL_FULL_MANDIR}") @@ -1985,6 +1985,7 @@ set(compilercall "${CMAKE_C_COMPILER}${C set(linkercall "${CMAKE_LINKER}${CMAKE_REQUIRED_FLAGS}") configure_file(${CMAKE_SOURCE_DIR}/cmake/monetdb_config.h.in ${CMAKE_SOURCE_DIR}/monetdb_config.h) +install(FILES monetdb_config.h DESTINATION ${INCLUDEDIR}/monetdb) include_directories(${CMAKE_SOURCE_DIR}) add_subdirectory(buildtools) diff --git a/clients/mapiclient/CMakeLists.txt b/clients/mapiclient/CMakeLists.txt --- a/clients/mapiclient/CMakeLists.txt +++ b/clients/mapiclient/CMakeLists.txt @@ -36,3 +36,4 @@ target_link_libraries(tomograph PRIVATE ${Iconv_LIBRARY} ${OPENSSL_LIBRARIES}) install(TARGETS mclient msqldump stethoscope tachograph tomograph DESTINATION ${BINDIR}) +install(FILES mclient.1 msqldump.1 DESTINATION ${DATADIR}/man/man1) diff --git a/common/options/CMakeLists.txt b/common/options/CMakeLists.txt --- a/common/options/CMakeLists.txt +++ b/common/options/CMakeLists.txt @@ -9,4 +9,4 @@ add_library(moptions OBJECT monet_options.c monet_options.h monet_getopt.h) set_target_properties(moptions PROPERTIES POSITION_INDEPENDENT_CODE ON) -install(FILES monet_options.h DESTINATION ${INCLUDEDIR}) +install(FILES monet_options.h DESTINATION ${INCLUDEDIR}/monetdb) diff --git a/common/stream/CMakeLists.txt b/common/stream/CMakeLists.txt --- a/common/stream/CMakeLists.txt +++ b/common/stream/CMakeLists.txt @@ -16,7 +16,7 @@ target_include_directories(stream PRIVAT set_target_properties(stream PROPERTIES VERSION ${STREAM_VERSION} SOVERSION ${STREAM_VERSION_MAJOR}) install(TARGETS stream LIBRARY DESTINATION ${LIBDIR}) -install(FILES stream_socket.h stream.h DESTINATION ${INCLUDEDIR}) +install(FILES stream_socket.h stream.h DESTINATION ${INCLUDEDIR}/monetdb) if(NOT WIN32) if(CURL_LIBRARY) diff --git a/gdk/CMakeLists.txt b/gdk/CMakeLists.txt --- a/gdk/CMakeLists.txt +++ b/gdk/CMakeLists.txt @@ -52,7 +52,7 @@ install(FILES gdk_hash.h gdk_system.h gdk_utils.h - DESTINATION ${INCLUDEDIR}) + DESTINATION ${INCLUDEDIR}/monetdb) if(NOT WIN32) if(MATH_LIBS) diff --git a/monetdb5/mal/CMakeLists.txt b/monetdb5/mal/CMakeLists.txt --- a/monetdb5/mal/CMakeLists.txt +++ b/monetdb5/mal/CMakeLists.txt @@ -59,4 +59,4 @@ install(FILES mal_resolve.h mal_stack.h mal_type.h - DESTINATION ${INCLUDEDIR}) + DESTINATION ${INCLUDEDIR}/monetdb) diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt --- a/sql/CMakeLists.txt +++ b/sql/CMakeLists.txt @@ -15,3 +15,5 @@ add_subdirectory(scripts) #if(WIN32) # add_subdirectory(NT) #endif() + +install(FILES dump-restore.txt dump-restore.html DESTINATION ${DATADIR}/doc/MonetDB-SQL) diff --git a/sql/server/CMakeLists.txt b/sql/server/CMakeLists.txt --- a/sql/server/CMakeLists.txt +++ b/sql/server/CMakeLists.txt @@ -6,7 +6,7 @@ # Copyright 1997 - July 2008 CWI, August 2008 - 2019 MonetDB B.V. #]] -include_directories(../include ../common ../storage ../../monetdb5/mal ../../monetdb5/modules/atoms +include_directories(. ../include ../common ../storage ../../monetdb5/mal ../../monetdb5/modules/atoms ../../monetdb5/modules/mal ../../monetdb5/extras/rapi ../../clients/mapilib ../../common/options ../../common/stream ../../gdk) diff --git a/tools/merovingian/CMakeLists.txt
MonetDB: Apr2019 - Plug memory leak.
Changeset: aab90a699b6e for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=aab90a699b6e Modified Files: sql/backends/monet5/sql_scenario.c Branch: Apr2019 Log Message: Plug memory leak. diffs (30 lines): diff --git a/sql/backends/monet5/sql_scenario.c b/sql/backends/monet5/sql_scenario.c --- a/sql/backends/monet5/sql_scenario.c +++ b/sql/backends/monet5/sql_scenario.c @@ -1036,10 +1036,9 @@ SQLparser(Client c) char *q = NULL; /* clean up old stuff */ - msg = (char *) c->query; + q = (char *) c->query; c->query = NULL; - GDKfree(msg); /* may be NULL */ - msg = NULL; + GDKfree(q); /* may be NULL */ be = (backend *) c->sqlcontext; if (be == 0) { @@ -1335,8 +1334,12 @@ SQLparser(Client c) } } finalize: - if (msg) + if (msg) { sqlcleanup(m, 0); + q = (char *) c->query; + c->query = NULL; + GDKfree(q); + } return msg; } ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Apr2019 - Not really a const pointer.
Changeset: 36d64f2d0cf2 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=36d64f2d0cf2 Modified Files: monetdb5/mal/mal_client.h sql/backends/monet5/sql_execute.c sql/backends/monet5/sql_scenario.c Branch: Apr2019 Log Message: Not really a const pointer. diffs (65 lines): diff --git a/monetdb5/mal/mal_client.h b/monetdb5/mal/mal_client.h --- a/monetdb5/mal/mal_client.h +++ b/monetdb5/mal/mal_client.h @@ -191,8 +191,8 @@ typedef struct CLIENT { size_t blocksize; protocol_version protocol; - bool filetrans; /* whether the client can read files for us */ - const char *query; /* string, identify whatever we're working on */ + bool filetrans; /* whether the client can read files for us */ + char *query;/* string, identify whatever we're working on */ } *Client, ClientRec; mal_export voidMCinit(void); diff --git a/sql/backends/monet5/sql_execute.c b/sql/backends/monet5/sql_execute.c --- a/sql/backends/monet5/sql_execute.c +++ b/sql/backends/monet5/sql_execute.c @@ -760,7 +760,7 @@ SQLengineIntern(Client c, backend *be) if (oldlang == 'X') { /* return directly from X-commands */ sqlcleanup(be->mvc, 0); - q = (char *) c->query; + q = c->query; c->query = NULL; GDKfree(q); return MAL_SUCCEED; @@ -782,7 +782,7 @@ SQLengineIntern(Client c, backend *be) goto cleanup_engine; } sqlcleanup(be->mvc, 0); - q = (char *) c->query; + q = c->query; c->query = NULL; GDKfree(q); return MAL_SUCCEED; @@ -830,7 +830,7 @@ cleanup_engine: MSresetInstructions(c->curprg->def, 1); freeVariables(c, c->curprg->def, NULL, be->vtop); be->language = oldlang; - q = (char *) c->query; + q = c->query; c->query = NULL; GDKfree(q); /* diff --git a/sql/backends/monet5/sql_scenario.c b/sql/backends/monet5/sql_scenario.c --- a/sql/backends/monet5/sql_scenario.c +++ b/sql/backends/monet5/sql_scenario.c @@ -1036,7 +1036,7 @@ SQLparser(Client c) char *q = NULL; /* clean up old stuff */ - q = (char *) c->query; + q = c->query; c->query = NULL; GDKfree(q); /* may be NULL */ @@ -1336,7 +1336,7 @@ SQLparser(Client c) finalize: if (msg) { sqlcleanup(m, 0); - q = (char *) c->query; + q = c->query; c->query = NULL; GDKfree(q); } ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list