Changeset: 5e2972498589 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/5e2972498589
Branch: strimps_v3
Log Message:

Merge with default branch


diffs (truncated from 1044 to 300 lines):

diff --git a/common/stream/stdio_stream.c b/common/stream/stdio_stream.c
--- a/common/stream/stdio_stream.c
+++ b/common/stream/stdio_stream.c
@@ -142,7 +142,7 @@ file_fsync(stream *s)
 #endif
 #endif
                    )) {
-               mnstr_set_error(s, MNSTR_WRITE_ERROR, "fsync failed");
+               mnstr_set_error_errno(s, MNSTR_WRITE_ERROR, "fsync failed");
                return -1;
        }
        return 0;
diff --git a/gdk/gdk_atoms.c b/gdk/gdk_atoms.c
--- a/gdk/gdk_atoms.c
+++ b/gdk/gdk_atoms.c
@@ -675,7 +675,7 @@ numFromStr(const char *src, size_t *len,
                                        return (ssize_t) (p - src);
                                }
                        }
-                       GDKerror("not a number");
+                       GDKerror("'%s' not a number\n", src);
                        goto bailout;
                case '-':
                        sign = -1;
@@ -686,7 +686,7 @@ numFromStr(const char *src, size_t *len,
                        break;
                }
                if (!GDKisdigit(*p)) {
-                       GDKerror("not a number");
+                       GDKerror("'%s' not a number\n", src);
                        goto bailout;
                }
        }
@@ -944,12 +944,12 @@ ptrFromStr(const char *src, size_t *len,
                        p += 2;
                }
                if (!GDKisxdigit(*p)) {
-                       GDKerror("not a number\n");
+                       GDKerror("'%s' not a number\n", src);
                        return -1;
                }
                while (GDKisxdigit(*p)) {
                        if (base >= ((size_t) 1 << (8 * sizeof(size_t) - 4))) {
-                               GDKerror("overflow\n");
+                               GDKerror("'%s' overflow\n", src);
                                return -1;
                        }
                        base = mult16(base) + base16(*p);
@@ -1013,7 +1013,7 @@ dblFromStr(const char *src, size_t *len,
                if (n == 0 || (errno == ERANGE && (d < -1 || d > 1))
                    || !isfinite(d) /* no NaN or Infinite */
                    ) {
-                       GDKerror("overflow or not a number\n");
+                       GDKerror("'%s' overflow or not a number\n", src);
                        return -1;
                } else {
                        while (src[n] && GDKisspace(src[n]))
@@ -1092,7 +1092,7 @@ fltFromStr(const char *src, size_t *len,
                n = (ssize_t) (p - src);
                if (n == 0 || (errno == ERANGE && (f < -1 || f > 1))
                    || !isfinite(f) /* no NaN or infinite */) {
-                       GDKerror("overflow or not a number\n");
+                       GDKerror("'%s' overflow or not a number\n", src);
                        return -1;
                } else {
                        while (src[n] && GDKisspace(src[n]))
@@ -1182,7 +1182,7 @@ OIDfromStr(const char *src, size_t *len,
                }
                p += pos;
        } else {
-               GDKerror("not an OID\n");
+               GDKerror("'%s' not an OID\n", src);
                return -1;
        }
        while (GDKisspace(*p))
@@ -1520,7 +1520,7 @@ BLOBfromstr(const char *instr, size_t *l
                if (GDKisxdigit(instr[i]))
                        nitems++;
                else if (!GDKisspace(instr[i])) {
-                       GDKerror("Illegal char in blob\n");
+                       GDKerror("Illegal char '%c' in blob\n", instr[i]);
                        return -1;
                }
        }
diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -239,7 +239,7 @@ log_write_format(logger *lg, logformat *
            mnstr_write(lg->current->output_log, &data->flag, 1, 1) == 1 &&
            mnstr_writeInt(lg->current->output_log, data->id))
                return GDK_SUCCEED;
-       TRC_CRITICAL(GDK, "write failed\n");
+       /* error message is generated by caller */
        return GDK_FAIL;
 }
 
@@ -292,7 +292,8 @@ log_write_id(logger *lg, int id)
        if (mnstr_errnr(lg->current->output_log) == MNSTR_NO__ERROR &&
            mnstr_writeInt(lg->current->output_log, id))
                return GDK_SUCCEED;
-       TRC_CRITICAL(GDK, "write failed\n");
+       const char *err = mnstr_peek_error(lg->current->output_log);
+       TRC_CRITICAL(GDK, "write failed%s%s\n", err ? ": " : "", err ? err : 
"");
        return GDK_FAIL;
 }
 
@@ -3065,6 +3066,8 @@ log_bat_persists(logger *lg, BAT *b, log
                if (mnstr_errnr(lg->current->output_log) != MNSTR_NO__ERROR ||
                    log_write_format(lg, &l) != GDK_SUCCEED ||
                    mnstr_write(lg->current->output_log, &ta, 1, 1) != 1) {
+                       const char *err = 
mnstr_peek_error(lg->current->output_log);
+                       TRC_CRITICAL(GDK, "write failed%s%s\n", err ? ": " : 
"", err ? err : "");
                        log_unlock(lg);
                        ATOMIC_DEC(&lg->current->refcount);
                        return GDK_FAIL;
@@ -3099,7 +3102,8 @@ log_bat_transient(logger *lg, log_id id)
 
        if (!LOG_DISABLED(lg)) {
                if (log_write_format(lg, &l) != GDK_SUCCEED) {
-                       TRC_CRITICAL(GDK, "write failed\n");
+                       const char *err = 
mnstr_peek_error(lg->current->output_log);
+                       TRC_CRITICAL(GDK, "write failed%s%s\n", err ? ": " : 
"", err ? err : "");
                        log_unlock(lg);
                        ATOMIC_DEC(&lg->current->refcount);
                        return GDK_FAIL;
@@ -3127,6 +3131,10 @@ log_bat_group(logger *lg, log_id id)
        l.flag = LOG_BAT_GROUP;
        l.id = id;
        gdk_return r = log_write_format(lg, &l);
+       if (r != GDK_SUCCEED) {
+               const char *err = mnstr_peek_error(lg->current->output_log);
+               TRC_CRITICAL(GDK, "write failed%s%s\n", err ? ": " : "", err ? 
err : "");
+       }
        return r;
 }
 
@@ -3275,6 +3283,10 @@ log_tend(logger *lg)
 
        if ((result = log_write_format(lg, &l)) == GDK_SUCCEED)
                ATOMIC_INC(&lg->nr_flushers);
+       else {
+               const char *err = mnstr_peek_error(lg->current->output_log);
+               TRC_CRITICAL(GDK, "write failed%s%s\n", err ? ": " : "", err ? 
err : "");
+       }
        return result;
 }
 
@@ -3289,8 +3301,11 @@ do_flush(logged_range *range)
        ulng ts = ATOMIC_GET(&range->last_ts);
 
        if (mnstr_flush(output_log, MNSTR_FLUSH_DATA) ||
-           (!(ATOMIC_GET(&GDKdebug) & NOSYNCMASK) && mnstr_fsync(output_log)))
+           (!(ATOMIC_GET(&GDKdebug) & NOSYNCMASK) && mnstr_fsync(output_log))) 
{
+               const char *err = mnstr_peek_error(output_log);
+               TRC_CRITICAL(GDK, "flush failed%s%s\n", err ? ": " : "", err ? 
err : "");
                return GDK_FAIL;
+       }
        ATOMIC_SET(&range->flushed_ts, ts);
        return GDK_SUCCEED;
 }
@@ -3339,6 +3354,7 @@ log_tflush(logger *lg, ulng file_id, uln
        }
 
        log_tdone(lg, frange, commit_ts);
+       gdk_return rc = GDK_SUCCEED;
 
        if ((ulng) ATOMIC_GET(&frange->flushed_ts) < commit_ts) {
                /* delay needed ? */
@@ -3346,7 +3362,7 @@ log_tflush(logger *lg, ulng file_id, uln
                flush_lock(lg);
                /* check it one more time */
                if ((ulng) ATOMIC_GET(&frange->flushed_ts) < commit_ts)
-                       do_flush(frange);
+                       rc = do_flush(frange);
                flush_unlock(lg);
        }
        /* else somebody else has flushed our log file */
@@ -3367,7 +3383,7 @@ log_tflush(logger *lg, ulng file_id, uln
        }
        rotation_unlock(lg);
 
-       return GDK_SUCCEED;
+       return rc;
 }
 
 static gdk_return
@@ -3386,7 +3402,8 @@ log_tsequence_(logger *lg, int seq, lng 
        if (mnstr_errnr(lg->current->output_log) != MNSTR_NO__ERROR ||
            log_write_format(lg, &l) != GDK_SUCCEED ||
            !mnstr_writeLng(lg->current->output_log, val)) {
-               TRC_CRITICAL(GDK, "write failed\n");
+               const char *err = mnstr_peek_error(lg->current->output_log);
+               TRC_CRITICAL(GDK, "write failed%s%s\n", err ? ": " : "", err ? 
err : "");
                ATOMIC_DEC(&lg->current->refcount);
                return GDK_FAIL;
        }
@@ -3573,6 +3590,8 @@ log_tstart(logger *lg, bool flushnow, ul
 
        TRC_DEBUG(WAL, "tstart %d\n", lg->tid);
        if (log_write_format(lg, &l) != GDK_SUCCEED) {
+               const char *err = mnstr_peek_error(lg->current->output_log);
+               TRC_CRITICAL(GDK, "write failed%s%s\n", err ? ": " : "", err ? 
err : "");
                ATOMIC_DEC(&lg->current->refcount);
                return GDK_FAIL;
        }
diff --git a/gdk/gdk_string.c b/gdk/gdk_string.c
--- a/gdk/gdk_string.c
+++ b/gdk/gdk_string.c
@@ -1181,10 +1181,12 @@ BATgroupstr_group_concat(BAT *b, BAT *g,
                goto done;
        }
 
-       if (BATtdense(g) || (g->tkey && g->tnonil)) {
+       if (ci.ncand == ngrp && (BATtdense(g) || (g->tkey && g->tnonil))) {
                /* trivial: singleton groups, so all results are equal
                 * to the inputs (but possibly a different type) */
                bn = BATconvert(b, s, TYPE_str, 0, 0, 0);
+               if (bn)
+                       bn->hseqbase = min;
                goto done;
        }
 
diff --git a/monetdb5/mal/mal_interpreter.c b/monetdb5/mal/mal_interpreter.c
--- a/monetdb5/mal/mal_interpreter.c
+++ b/monetdb5/mal/mal_interpreter.c
@@ -620,7 +620,7 @@ runMALsequence(Client cntxt, MalBlkPtr m
                                /* if still the same, replace lastprint with 
current
                                 * time and print the query */
                                if (ATOMIC_CAS(&cntxt->lastprint, &lp, t)) {
-                                       const char *q = cntxt->query ? 
cntxt->query : NULL;
+                                       const char *q = cntxt->query;
                                        TRC_INFO(MAL_SERVER,
                                                         "%s: query already 
running " LLFMT "s: %.200s\n",
                                                         cntxt->mythread ? 
cntxt->mythread : "?",
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
@@ -37,7 +37,6 @@ set(sql_public_headers
   $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../../server/rel_file_loader.h>
   $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../../server/rel_optimizer.h>
   $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../../server/rel_rewriter.h>
-  $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../../server/rel_partition.h>
   $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../../server/rel_prop.h>
   $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../../server/rel_exp.h>
   $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../../server/rel_rel.h>
@@ -71,7 +70,6 @@ set(sql_public_headers
   $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/monetdb/sql_parser.h>
   $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/monetdb/sql_privileges.h>
   $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/monetdb/rel_optimizer.h>
-  $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/monetdb/rel_partition.h>
   $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/monetdb/rel_prop.h>
   $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/monetdb/rel_exp.h>
   $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/monetdb/rel_rel.h>
diff --git a/sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_13.test 
b/sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_13.test
--- a/sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_13.test
+++ b/sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_13.test
@@ -11,6 +11,7 @@ language P
 }
 
 statement ok
+# "normal" indentation
 CREATE FUNCTION pyapi13_mult(i integer,j integer) returns integer
 language PYTHON_MAP
 {
@@ -26,6 +27,7 @@ statement ok
 DROP FUNCTION pyapi13_mult
 
 statement ok
+# weird indentation
 CREATE FUNCTION pyapi13_mult(i integer,j integer) returns integer
 language PYTHON_MAP { return(i*j)
 }
@@ -39,6 +41,7 @@ statement ok
 DROP FUNCTION pyapi13_mult
 
 statement ok
+# no new line
 CREATE FUNCTION pyapi13_mult(i integer,j integer) returns integer language 
PYTHON_MAP { return(i*j) }
 
 query I rowsort
@@ -50,6 +53,7 @@ statement ok
 DROP FUNCTION pyapi13_mult
 
 statement ok
+# \n in string
 CREATE FUNCTION pyapi13_mult(i integer,j integer) returns integer
 language PYTHON_MAP
 {
@@ -67,6 +71,7 @@ statement ok
 DROP FUNCTION pyapi13_mult
 
 statement ok
+# multiline statement
 CREATE FUNCTION pyapi13_mult(i integer,j integer) returns integer
 language PYTHON_MAP
 {
@@ -91,6 +96,7 @@ statement ok
 DROP FUNCTION pyapi13_mult
 
 statement ok
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to