Changeset: 23491d80a5a1 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=23491d80a5a1
Added Files:
sql/test/BugTracker-2019/Tests/double-free.Bug-6757.sql
sql/test/BugTracker-2019/Tests/double-free.Bug-6757.stable.err
sql/test/BugTracker-2019/Tests/double-free.Bug-6757.stable.out
sql/test/BugTracker-2019/Tests/python-loader-string.Bug-6759.py
sql/test/BugTracker-2019/Tests/python-loader-string.Bug-6759.stable.err
sql/test/BugTracker-2019/Tests/python-loader-string.Bug-6759.stable.out
sql/test/SQLite_regress/sqllogictest/Tests/test1.SQL.bat
sql/test/SQLite_regress/sqllogictest/Tests/test1.SQL.sh
sql/test/SQLite_regress/sqllogictest/Tests/test1.stable.err
sql/test/SQLite_regress/sqllogictest/Tests/test1.stable.err-noapprove
sql/test/SQLite_regress/sqllogictest/Tests/test1.stable.out
sql/test/SQLite_regress/sqllogictest/Tests/test1.stable.out-noapprove
sql/test/SQLite_regress/sqllogictest/Tests/test1.timeout
sql/test/SQLite_regress/sqllogictest/Tests/test2.SQL.bat
sql/test/SQLite_regress/sqllogictest/Tests/test2.SQL.sh
sql/test/SQLite_regress/sqllogictest/Tests/test2.stable.err
sql/test/SQLite_regress/sqllogictest/Tests/test2.stable.err-noapprove
sql/test/SQLite_regress/sqllogictest/Tests/test2.stable.out
sql/test/SQLite_regress/sqllogictest/Tests/test2.stable.out-noapprove
sql/test/SQLite_regress/sqllogictest/Tests/test2.timeout
sql/test/SQLite_regress/sqllogictest/Tests/test3.SQL.bat
sql/test/SQLite_regress/sqllogictest/Tests/test3.SQL.sh
sql/test/SQLite_regress/sqllogictest/Tests/test3.stable.err
sql/test/SQLite_regress/sqllogictest/Tests/test3.stable.err-noapprove
sql/test/SQLite_regress/sqllogictest/Tests/test3.stable.out
sql/test/SQLite_regress/sqllogictest/Tests/test3.stable.out-noapprove
sql/test/SQLite_regress/sqllogictest/Tests/test3.timeout
sql/test/SQLite_regress/sqllogictest/Tests/test4.SQL.bat
sql/test/SQLite_regress/sqllogictest/Tests/test4.SQL.sh
sql/test/SQLite_regress/sqllogictest/Tests/test4.stable.err
sql/test/SQLite_regress/sqllogictest/Tests/test4.stable.err-noapprove
sql/test/SQLite_regress/sqllogictest/Tests/test4.stable.out
sql/test/SQLite_regress/sqllogictest/Tests/test4.stable.out-noapprove
sql/test/SQLite_regress/sqllogictest/Tests/test4.timeout
sql/test/SQLite_regress/sqllogictest/Tests/test5.SQL.bat
sql/test/SQLite_regress/sqllogictest/Tests/test5.SQL.sh
sql/test/SQLite_regress/sqllogictest/Tests/test5.stable.err
sql/test/SQLite_regress/sqllogictest/Tests/test5.stable.err-noapprove
sql/test/SQLite_regress/sqllogictest/Tests/test5.stable.out
sql/test/SQLite_regress/sqllogictest/Tests/test5.stable.out-noapprove
sql/test/SQLite_regress/sqllogictest/Tests/test5.timeout
sql/test/SQLite_regress/sqllogictest/sqllogictest.py
Removed Files:
sql/test/BugTracker-2015/Tests/incorrect_result_type.Bug-3687.stable.out.int128
sql/test/BugTracker-2016/Tests/column_alias_in_where_clause.Bug-3947.stable.out.int128
sql/test/BugTracker-2016/Tests/inner_join_cross_join.Bug-6140.stable.out.int128
sql/test/BugTracker-2017/Tests/crash-dce.Bug-6330.stable.out.int128
sql/test/BugTracker-2017/Tests/crash-select_after_MAL_error.Bug-6332.stable.out.int128
sql/test/BugTracker-2017/Tests/group-by-on-constant.Bug-6082.stable.out.int128
sql/test/BugTracker-2018/Tests/sqlitelogictest-aritmetic-expressions-handling.Bug-6576.stable.out.int128
sql/test/BugTracker-2018/Tests/sqlitelogictest-coalesce-division-by-zero.Bug-6556.stable.out.int128
sql/test/BugTracker-2018/Tests/sqlitelogictest-count-coalesce-nullif.Bug-6586.stable.out.int128
sql/test/BugTracker-2018/Tests/sqlitelogictest-groupby-coalesce-error-message.Bug-6608.stable.out.int128
sql/test/BugTracker-2018/Tests/sqlitelogictest-select-nullif-case.Bug-6579.stable.out.int128
sql/test/SQLite_regress/sqllogictest/Tests/select1.test.sql
sql/test/SQLite_regress/sqllogictest/Tests/select1.test.stable.err
sql/test/SQLite_regress/sqllogictest/Tests/select1.test.stable.out
sql/test/SQLite_regress/sqllogictest/Tests/select1.test.stable.out.int128
sql/test/SQLite_regress/sqllogictest/Tests/select1.test.timeout
sql/test/SQLite_regress/sqllogictest/Tests/select2.test.sql
sql/test/SQLite_regress/sqllogictest/Tests/select2.test.stable.err
sql/test/SQLite_regress/sqllogictest/Tests/select2.test.stable.out
sql/test/SQLite_regress/sqllogictest/Tests/select2.test.stable.out.int128
sql/test/SQLite_regress/sqllogictest/Tests/select2.test.timeout
sql/test/SQLite_regress/sqllogictest/Tests/select3.test.sql
sql/test/SQLite_regress/sqllogictest/Tests/select3.test.stable.err
sql/test/SQLite_regress/sqllogictest/Tests/select3.test.stable.out
sql/test/SQLite_regress/sqllogictest/Tests/select3.test.stable.out.int128
sql/test/SQLite_regress/sqllogictest/Tests/select3.test.timeout
sql/test/SQLite_regress/sqllogictest/Tests/select4.test.sql
sql/test/SQLite_regress/sqllogictest/Tests/select4.test.stable.err
sql/test/SQLite_regress/sqllogictest/Tests/select4.test.stable.out
sql/test/SQLite_regress/sqllogictest/Tests/select4.test.stable.out.int128
sql/test/SQLite_regress/sqllogictest/Tests/select4.test.timeout
sql/test/SQLite_regress/sqllogictest/Tests/select5.test.sql
sql/test/SQLite_regress/sqllogictest/Tests/select5.test.stable.err
sql/test/SQLite_regress/sqllogictest/Tests/select5.test.stable.out
sql/test/SQLite_regress/sqllogictest/Tests/select5.test.timeout
Modified Files:
NT/rules.msc
clients/mapiclient/mclient.c
configure.ag
gdk/gdk_bbp.c
gdk/gdk_heap.c
gdk/gdk_interprocess.c
gdk/gdk_logger.c
gdk/gdk_storage.c
monetdb5/modules/mal/sysmon.c
monetdb5/modules/mal/tablet.c
sql/backends/monet5/UDF/pyapi/pyapi.c
sql/backends/monet5/rel_bin.c
sql/backends/monet5/sql.c
sql/backends/monet5/sql_cat.c
sql/backends/monet5/sql_upgrades.c
sql/backends/monet5/wlr.c
sql/common/sql_types.c
sql/common/sql_types.h
sql/include/sql_catalog.h
sql/server/rel_optimizer.c
sql/server/rel_prop.c
sql/server/rel_prop.h
sql/server/rel_psm.c
sql/server/rel_psm.h
sql/server/rel_schema.c
sql/server/rel_select.c
sql/server/rel_semantic.c
sql/server/rel_unnest.c
sql/server/rel_unnest.h
sql/server/sql_env.c
sql/server/sql_mvc.c
sql/server/sql_mvc.h
sql/server/sql_qc.c
sql/server/sql_qc.h
sql/server/sql_tokens.h
sql/storage/sql_catalog.c
sql/storage/sql_storage.h
sql/storage/store.c
sql/storage/store_dependency.c
sql/test/BugTracker-2009/Tests/All
sql/test/BugTracker-2015/Tests/incorrect_result_type.Bug-3687.sql
sql/test/BugTracker-2016/Tests/column_alias_in_where_clause.Bug-3947.sql
sql/test/BugTracker-2016/Tests/inner_join_cross_join.Bug-6140.sql
sql/test/BugTracker-2017/Tests/crash-dce.Bug-6330.sql
sql/test/BugTracker-2017/Tests/crash-select_after_MAL_error.Bug-6332.sql
sql/test/BugTracker-2017/Tests/group-by-on-constant.Bug-6082.sql
sql/test/BugTracker-2018/Tests/sqlitelogictest-algebra-join-not-in.Bug-6519.sql
sql/test/BugTracker-2018/Tests/sqlitelogictest-algebra-join-not-in.Bug-6519.stable.out
sql/test/BugTracker-2018/Tests/sqlitelogictest-aritmetic-expressions-handling.Bug-6576.sql
sql/test/BugTracker-2018/Tests/sqlitelogictest-cast-null-not-in.Bug-6605.sql
sql/test/BugTracker-2018/Tests/sqlitelogictest-cast-null-not-in.Bug-6605.stable.out
sql/test/BugTracker-2018/Tests/sqlitelogictest-count-coalesce-nullif.Bug-6586.sql
sql/test/BugTracker-2018/Tests/sqlitelogictest-groupby-coalesce-error-message.Bug-6608.sql
sql/test/BugTracker-2018/Tests/sqlitelogictest-groupby-coalesce-error-message.Bug-6608.stable.out
sql/test/BugTracker-2018/Tests/sqlitelogictest-having-not-null-not-in.Bug-6557.sql
sql/test/BugTracker-2018/Tests/sqlitelogictest-having-not-null-not-in.Bug-6557.stable.out
sql/test/BugTracker-2018/Tests/sqlitelogictest-select-nullif-case.Bug-6579.sql
sql/test/BugTracker-2019/Tests/All
sql/test/BugTracker-2019/Tests/cte-union.Bug-6755.sql
sql/test/BugTracker-2019/Tests/cte-union.Bug-6755.stable.out
sql/test/BugTracker-2019/Tests/duplicates-not-eliminated-long-CASE-stmt.Bug-6697.sql
sql/test/BugTracker-2019/Tests/sequence-first-next-value.Bug-6743.stable.out
sql/test/BugTracker/Tests/All
sql/test/SQLite_regress/sqllogictest/Tests/All
sql/test/subquery/Tests/correlated.stable.err
sql/test/subquery/Tests/correlated.stable.out
sql/test/subquery/Tests/subquery.sql
sql/test/subquery/Tests/subquery.stable.err
sql/test/subquery/Tests/subquery2.sql
sql/test/testdb-reload/Tests/reload.py
sql/test/wlcr/Tests/wlc01.py
testing/Mtest.py.bat
testing/Mtest.py.in
testing/process.py
tools/merovingian/daemon/controlrunner.c
tools/merovingian/daemon/forkmserver.c
Branch: hot-snapshot
Log Message:
Merge branch 'default' into hot-snapshot
diffs (truncated from 2099462 to 300 lines):
diff --git a/NT/rules.msc b/NT/rules.msc
--- a/NT/rules.msc
+++ b/NT/rules.msc
@@ -42,6 +42,7 @@ BITSMCHN=X64
# force W_CFLAGS off in debug builds: using icc, you get way more
# warnings about casts which results in the code being uncompilable
W_CFLAGS =
+HAVE_MAL_DEBUGGER = 1
!ENDIF
!IFDEF ENABLE_STRICT
# strict mode: treat warnings as errors
@@ -386,6 +387,11 @@ create_winconfig_conds_new_py:
!ELSE
$(ECHO) HAVE_SHP_FALSE='' >> "$(TOPDIR)\winconfig_conds_new.py"
!ENDIF
+!IFDEF HAVE_MAL_DEBUGGER
+ $(ECHO) HAVE_MAL_DEBUGGER_FALSE='#' >>
"$(TOPDIR)\winconfig_conds_new.py"
+!ELSE
+ $(ECHO) HAVE_MAL_DEBUGGER_FALSE='' >> "$(TOPDIR)\winconfig_conds_new.py"
+!ENDIF
!IFDEF HAVE_SQL
$(ECHO) HAVE_SQL_FALSE='#' >> "$(TOPDIR)\winconfig_conds_new.py"
!ELSE
diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c
--- a/clients/mapiclient/mclient.c
+++ b/clients/mapiclient/mclient.c
@@ -3664,6 +3664,9 @@ main(int argc, char **argv)
if (mode == SQL)
dump_version(mid, toConsole, "Database:");
+ mnstr_printf(toConsole, "FOLLOW US on
https://twitter.com/MonetDB ");
+ mnstr_printf(toConsole, "or
https://github.com/MonetDB/MonetDB\n");
+
mnstr_printf(toConsole, "Type \\q to quit, \\? for a list of
available commands\n");
if (mode == SQL)
mnstr_printf(toConsole, "auto commit mode: %s\n",
diff --git a/configure.ag b/configure.ag
--- a/configure.ag
+++ b/configure.ag
@@ -838,6 +838,7 @@ AS_VAR_IF([enable_assert], [no], [
AC_MSG_RESULT([no])],
[AC_MSG_RESULT([yes])])
+AM_CONDITIONAL([HAVE_MAL_DEBUGGER], [test "x$enable_assert" != xno])
AC_MSG_CHECKING([for --enable-optimize])
AS_CASE([$enable_optimize], [yes], [
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -1737,7 +1737,7 @@ BBPdir_subcommit(int cnt, bat *subcommit
assert(subcommit[n - 1] < subcommit[n]);
#endif
- if ((nbbpf = GDKfilelocate(0, "BBP", "w", "dir")) == NULL)
+ if ((nbbpf = GDKfilelocate(0, "BBP", "wx", "dir")) == NULL)
return GDK_FAIL;
n = (bat) ATOMIC_GET(&BBPsize);
@@ -1849,7 +1849,7 @@ BBPdir(int cnt, bat *subcommit)
return BBPdir_subcommit(cnt, subcommit);
IODEBUG fprintf(stderr, "#BBPdir: writing BBP.dir (%d bats).\n", (int)
(bat) ATOMIC_GET(&BBPsize));
- if ((fp = GDKfilelocate(0, "BBP", "w", "dir")) == NULL) {
+ if ((fp = GDKfilelocate(0, "BBP", "wx", "dir")) == NULL) {
goto bailout;
}
diff --git a/gdk/gdk_heap.c b/gdk/gdk_heap.c
--- a/gdk/gdk_heap.c
+++ b/gdk/gdk_heap.c
@@ -61,7 +61,7 @@ HEAPcreatefile(int farmid, size_t *maxsz
fn = path;
}
/* round up to mulitple of GDK_mmap_pagesize */
- fd = GDKfdlocate(NOFARM, fn, "wb", NULL);
+ fd = GDKfdlocate(NOFARM, fn, "wxb", NULL);
if (fd >= 0) {
close(fd);
base = GDKload(NOFARM, fn, NULL, *maxsz, maxsz, STORE_MMAP);
@@ -119,36 +119,12 @@ HEAPalloc(Heap *h, size_t nitems, size_t
}
if (!GDKinmemory() && h->base == NULL) {
char *nme;
- struct stat st;
- if(!(nme = GDKfilepath(h->farmid, BATDIR, h->filename, NULL))) {
- GDKerror("HEAPalloc: malloc failure");
+ nme = GDKfilepath(h->farmid, BATDIR, h->filename, NULL);
+ if (nme == NULL)
return GDK_FAIL;
- }
- if (stat(nme, &st) < 0) {
- h->storage = STORE_MMAP;
- h->base = HEAPcreatefile(NOFARM, &h->size, nme);
- } else {
- int fd;
-
- fd = GDKfdlocate(NOFARM, nme, "wb", NULL);
- if (fd >= 0) {
- char of[sizeof(h->filename)];
- char *ext;
- close(fd);
- strncpy(of, h->filename, sizeof(of));
-#ifdef STATIC_CODE_ANALYSIS
- /* help coverity */
- of[sizeof(h->filename) - 1] = 0;
-#endif
- ext = decompose_filename(of);
- h->newstorage = STORE_MMAP;
- if (HEAPload(h, of, ext, false) != GDK_SUCCEED)
- h->base = NULL; /* superfluous */
- /* success checked by looking at
- * h->base below */
- }
- }
+ h->storage = STORE_MMAP;
+ h->base = HEAPcreatefile(NOFARM, &h->size, nme);
GDKfree(nme);
}
if (h->base == NULL) {
@@ -270,6 +246,7 @@ HEAPextend(Heap *h, size_t size, bool ma
HEAPfree(&bak, false);
return GDK_SUCCEED;
}
+ GDKclrerr();
}
fd = GDKfdlocate(h->farmid, nme, "wb", ext);
if (fd >= 0) {
@@ -445,7 +422,7 @@ GDKupgradevarheap(BAT *b, var_t v, bool
const char *base = b->theap.base;
/* first save heap in file with extra .tmp extension */
- if ((fd = GDKfdlocate(b->theap.farmid, b->theap.filename, "wb",
"tmp")) < 0)
+ if ((fd = GDKfdlocate(b->theap.farmid, b->theap.filename,
"wxb", "tmp")) < 0)
return GDK_FAIL;
while (size > 0) {
ret = write(fd, base, (unsigned) MIN(1 << 30, size));
diff --git a/gdk/gdk_interprocess.c b/gdk/gdk_interprocess.c
--- a/gdk/gdk_interprocess.c
+++ b/gdk/gdk_interprocess.c
@@ -28,7 +28,7 @@
#include <sys/sem.h>
#include <time.h>
-static size_t interprocess_unique_id = 1;
+static ATOMIC_TYPE interprocess_unique_id = ATOMIC_VAR_INIT(1);
static key_t base_key = 800000000;
// Regular ftok produces too many collisions
@@ -46,12 +46,7 @@ ftok_enhanced(int id, key_t * return_key
size_t
GDKuniqueid(size_t offset)
{
- // TODO: lock this here instead of in pyapi
- size_t id;
-
- id = interprocess_unique_id;
- interprocess_unique_id += offset;
- return id;
+ return (size_t) ATOMIC_ADD(&interprocess_unique_id, (ATOMIC_BASE_TYPE)
offset);
}
//! Create a memory mapped file if it does not exist and open it
@@ -75,19 +70,21 @@ GDKinitmmap(size_t id, size_t size, size
size = (maxsize + GDK_mmap_pagesize - 1) & ~(GDK_mmap_pagesize - 1);
if (size == 0)
size = GDK_mmap_pagesize; */
- fd = GDKfdlocate(0, address, "wb", "tmp");
- if (fd < 0) {
- return NULL;
- }
path = GDKfilepath(0, BATDIR, address, "tmp");
if (path == NULL) {
return NULL;
}
- close(fd);
- if (GDKextend(path, size) != GDK_SUCCEED) {
+ fd = GDKfdlocate(NOFARM, path, "wb", NULL);
+ if (fd < 0) {
GDKfree(path);
return NULL;
}
+ if (GDKextendf(fd, size, path) != GDK_SUCCEED) {
+ close(fd);
+ GDKfree(path);
+ return NULL;
+ }
+ close(fd);
ptr = GDKmmap(path, mod, size);
GDKfree(path);
if (ptr == NULL) {
diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -3034,8 +3034,10 @@ pre_allocate(logger *lg)
p = (lng) getfilepos(getFile(lg->log));
if (p == -1)
return GDK_FAIL;
- if (p > LOG_LARGE)
+ if (p > LOG_LARGE) {
+ lg->id++;
return logger_open(lg);
+ }
if (p + DBLKSZ > lg->end) {
p &= ~(DBLKSZ - 1);
p += SEGSZ;
diff --git a/gdk/gdk_storage.c b/gdk/gdk_storage.c
--- a/gdk/gdk_storage.c
+++ b/gdk/gdk_storage.c
@@ -194,7 +194,7 @@ int
GDKfdlocate(int farmid, const char *nme, const char *mode, const char
*extension)
{
char *path = NULL;
- int fd, flags = 0;
+ int fd, flags = O_CLOEXEC;
assert(!GDKinmemory());
if (nme == NULL || *nme == 0)
@@ -212,12 +212,14 @@ GDKfdlocate(int farmid, const char *nme,
mode++;
#ifdef _CYGNUS_H_
} else {
- flags = _FRDSEQ; /* WIN32
CreateFile(FILE_FLAG_SEQUENTIAL_SCAN) */
+ flags |= _FRDSEQ; /* WIN32
CreateFile(FILE_FLAG_SEQUENTIAL_SCAN) */
#endif
}
if (strchr(mode, 'w')) {
flags |= O_WRONLY | O_CREAT;
+ if (strchr(mode, 'x'))
+ flags |= O_EXCL;
} else if (!strchr(mode, '+')) {
flags |= O_RDONLY;
} else {
@@ -226,11 +228,11 @@ GDKfdlocate(int farmid, const char *nme,
#ifdef WIN32
flags |= strchr(mode, 'b') ? O_BINARY : O_TEXT;
#endif
- fd = open(nme, flags | O_CLOEXEC, MONETDB_MODE);
+ fd = open(nme, flags, MONETDB_MODE);
if (fd < 0 && *mode == 'w') {
/* try to create the directory, in case that was the problem */
if (GDKcreatedir(nme) == GDK_SUCCEED) {
- fd = open(nme, flags | O_CLOEXEC, MONETDB_MODE);
+ fd = open(nme, flags, MONETDB_MODE);
if (fd < 0)
GDKsyserror("GDKfdlocate: cannot open file
%s\n", nme);
}
@@ -584,10 +586,12 @@ GDKload(int farmid, const char *nme, con
nme = path;
}
if (nme != NULL && GDKextend(nme, size) == GDK_SUCCEED) {
- int mod = MMAP_READ | MMAP_WRITE | MMAP_SEQUENTIAL |
MMAP_SYNC;
+ int mod = MMAP_READ | MMAP_WRITE | MMAP_SEQUENTIAL;
if (mode == STORE_PRIV)
mod |= MMAP_COPY;
+ else
+ mod |= MMAP_SYNC;
ret = GDKmmap(nme, mod, size);
if (ret != NULL) {
/* success: update allocated size */
diff --git a/monetdb5/modules/mal/sysmon.c b/monetdb5/modules/mal/sysmon.c
--- a/monetdb5/modules/mal/sysmon.c
+++ b/monetdb5/modules/mal/sysmon.c
@@ -13,7 +13,7 @@
#include "mtime.h"
/* (c) M.L. Kersten
- * The query runtime monitor facility is hardwired
+ * The query runtime monitor facility is hardwired
*/
str
@@ -177,7 +177,7 @@ SYSMONresume(Client cntxt, MalBlkPtr mb,
throw(MAL, "SYSMONresume", "type hge not handled, yet");
#endif
default:
- throw(MAL, "SYSMONpause", "Pause requires integer");
+ throw(MAL, "SYSMONresume", "Resume requires integer");
}
MT_lock_set(&mal_delayLock);
for ( i = 0; QRYqueue[i].tag; i++)
@@ -207,7 +207,7 @@ SYSMONstop(Client cntxt, MalBlkPtr mb, M
throw(MAL, "SYSMONstop", "type hge not handled, yet");
#endif
default:
- throw(MAL, "SYSMONpause", "Pause requires integer");
+ throw(MAL, "SYSMONstop", "Stop requires integer");
}
MT_lock_set(&mal_delayLock);
for ( i = 0; QRYqueue[i].tag; i++)
diff --git a/monetdb5/modules/mal/tablet.c b/monetdb5/modules/mal/tablet.c
--- a/monetdb5/modules/mal/tablet.c
+++ b/monetdb5/modules/mal/tablet.c
@@ -670,7 +670,7 @@ tablet_error(READERtask *task, lng row,
BUNappend(task->cntxt->error_msg, msg, false) !=
GDK_SUCCEED ||
BUNappend(task->cntxt->error_input, fcn, false) !=
GDK_SUCCEED)
task->besteffort = 0;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list