Changeset: fed0db3f972a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=fed0db3f972a
Modified Files:
        clients/mapiclient/dotmonetdb.c
        clients/mapiclient/mclient.c
        common/utils/msabaoth.c
        gdk/gdk_aggr.c
        gdk/gdk_bbp.c
        gdk/gdk_logger.c
        gdk/gdk_string.c
        gdk/gdk_time.c
        gdk/gdk_tracer.c
        gdk/gdk_utils.c
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql_gencode.c
        sql/backends/monet5/sql_statement.c
        sql/backends/monet5/sql_upgrades.c
        sql/server/rel_prop.c
        sql/server/rel_select.c
        sql/server/rel_unnest.c
        sql/server/rel_unnest.h
        sql/test/subquery/Tests/subquery4.sql
        sql/test/subquery/Tests/subquery4.stable.err
        sql/test/subquery/Tests/subquery4.stable.out
        sql/test/subquery/Tests/subquery5.sql
        sql/test/subquery/Tests/subquery5.stable.err
        sql/test/subquery/Tests/subquery5.stable.out
        tools/merovingian/daemon/controlrunner.c
        tools/merovingian/daemon/forkmserver.c
        tools/merovingian/daemon/merovingian.c
Branch: unlock
Log Message:

merged with default


diffs (truncated from 1287 to 300 lines):

diff --git a/clients/mapiclient/dotmonetdb.c b/clients/mapiclient/dotmonetdb.c
--- a/clients/mapiclient/dotmonetdb.c
+++ b/clients/mapiclient/dotmonetdb.c
@@ -17,6 +17,8 @@ parse_dotmonetdb(DotMonetdb *dotfile)
        FILE *config = NULL;
        char buf[FILENAME_MAX];
 
+       if (dotfile == NULL)
+               return;
        if ((cfile = getenv("DOTMONETDBFILE")) == NULL) {
                /* no environment variable: use a default */
                if ((config = fopen(".monetdb", "r")) == NULL) {
@@ -46,9 +48,7 @@ parse_dotmonetdb(DotMonetdb *dotfile)
                cfile = strdup(cfile);
        }
 
-        if (dotfile) {
-               *dotfile = (DotMonetdb) {0};
-        }
+       *dotfile = (DotMonetdb) {0};
 
        if (config) {
                int line = 0;
diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c
--- a/clients/mapiclient/mclient.c
+++ b/clients/mapiclient/mclient.c
@@ -3252,7 +3252,6 @@ main(int argc, char **argv)
        }
 
        /* parse config file first, command line options override */
-       // parse_dotmonetdb(&user, &passwd, &dbname, &language, &save_history, 
&output, &pagewidth);
        parse_dotmonetdb(&dotfile);
         user = dotfile.user;
         passwd = dotfile.passwd;
diff --git a/common/utils/msabaoth.c b/common/utils/msabaoth.c
--- a/common/utils/msabaoth.c
+++ b/common/utils/msabaoth.c
@@ -750,6 +750,11 @@ msab_getStatus(sabdb** ret, char *dbname
        sabdb *sdb;
        sdb = *ret = NULL;
 
+       if (dbname && strpbrk(dbname, "/\\") != NULL) {
+               snprintf(data, sizeof(data),
+                                "database name contains disallowed 
characters");
+               return strdup(data);
+       }
        /* scan the parent for directories */
        if ((p = getFarmPath(pathbuf, sizeof(pathbuf), NULL)) != NULL)
                return(p);
diff --git a/gdk/gdk_aggr.c b/gdk/gdk_aggr.c
--- a/gdk/gdk_aggr.c
+++ b/gdk/gdk_aggr.c
@@ -3759,7 +3759,7 @@ BATgroupcorrelation(BAT *b1, BAT *b2, BA
             (BATcount(e) == BATcount(b1) && (e->hseqbase == b1->hseqbase || 
e->hseqbase == b2->hseqbase))) &&
            (BATtdense(g) || (g->tkey && g->tnonil))) {
                dbl v = dbl_nil;
-               return BATconstant(ngrp == 0 ? 0 : min, TYPE_dbl, &v, ngrp, 
TRANSIENT);
+               return BATconstant(min, TYPE_dbl, &v, ngrp, TRANSIENT);
        }
 
        delta1 = GDKmalloc(ngrp * sizeof(dbl));
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -499,8 +499,9 @@ fixdateheap(BAT *b, const char *anme)
                TRC_CRITICAL(GDK, "GDKfilepath failed\n");
                return GDK_FAIL;
        }
-       /* coverity[null_returns] */
-       *strrchr(srcdir, DIR_SEP) = 0;
+       char *s;
+       if ((s = strrchr(srcdir, DIR_SEP)) != NULL)
+               *s = 0;
 
        if ((bnme = strrchr(nme, DIR_SEP)) != NULL)
                bnme++;
@@ -951,6 +952,7 @@ BBPreadEntries(FILE *fp, unsigned bbpver
                if ((s = strchr(headname, '~')) != NULL && s == headname) {
                        int len = snprintf(logical, sizeof(logical), "tmp_%o", 
(unsigned) bid);
                        if (len == -1 || len >= (int) sizeof(logical)) {
+                               BATdestroy(bn);
                                TRC_CRITICAL(GDK, "BBP logical filename 
directory is too large\n");
                                return GDK_FAIL;
                        }
diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -284,7 +284,6 @@ log_read_clear(logger *lg, trans *tr, ch
 {
        if (lg->debug & 1)
                fprintf(stderr, "#logger found log_read_clear %s\n", NAME(name, 
tpe, id));
-
        if (tr_grow(tr) != GDK_SUCCEED)
                return LOG_ERR;
        tr->changes[tr->nr].type = LOG_CLEAR;
@@ -337,13 +336,12 @@ la_bat_clear(logger *lg, logaction *la)
 }
 
 static log_return
-log_read_seq(logger *lg, trans *tr, logformat *l)
+log_read_seq(logger *lg, logformat *l)
 {
        int seq = (int) l->nr;
        lng val;
        BUN p;
 
-       (void)tr;
        assert(!lg->inmemory);
        assert(l->nr <= (lng) INT_MAX);
        if (mnstr_readLng(lg->input_log, &val) != 1) {
@@ -478,13 +476,13 @@ log_read_updates(logger *lg, trans *tr, 
                } else {
                        assert(ht == TYPE_void);
                }
-
                r = COLnew(0, tt, (BUN) l->nr, PERSISTENT);
                if (r == NULL) {
                        BBPreclaim(uid);
                        logbat_destroy(b);
                        return LOG_ERR;
                }
+
                if (tseq)
                        BATtseqbase(r, 0);
 
@@ -797,6 +795,7 @@ la_bat_updates(logger *lg, logaction *la
 static log_return
 log_read_destroy(logger *lg, trans *tr, char *name, char tpe, oid id)
 {
+       (void) lg;
        assert(!lg->inmemory);
        if (tr_grow(tr) == GDK_SUCCEED) {
                tr->changes[tr->nr].type = LOG_DESTROY;
@@ -910,6 +909,8 @@ la_bat_create(logger *lg, logaction *la)
 static log_return
 log_read_use(logger *lg, trans *tr, logformat *l, char *name, char tpe, oid id)
 {
+       (void) lg;
+
        assert(!lg->inmemory);
        if (tr_grow(tr) != GDK_SUCCEED)
                return LOG_ERR;
@@ -1270,7 +1271,7 @@ logger_read_transaction(logger *lg)
                                tr = tr_commit(lg, tr);
                        break;
                case LOG_SEQ:
-                       err = log_read_seq(lg, tr, &l);
+                       err = log_read_seq(lg, &l);
                        break;
                case LOG_INSERT:
                case LOG_INSERT_OFFSET:
diff --git a/gdk/gdk_string.c b/gdk/gdk_string.c
--- a/gdk/gdk_string.c
+++ b/gdk/gdk_string.c
@@ -788,9 +788,9 @@ strWrite(const char *a, stream *s, size_
 
 static gdk_return
 concat_strings(BAT **bnp, ValPtr pt, BAT *b, oid seqb,
-                          BUN ngrp, struct canditer *restrict ci, BUN ncand,
-                          const oid *restrict gids, oid min, oid max, bool 
skip_nils,
-                          BAT *sep, const char *restrict separator, BUN 
*has_nils)
+              BUN ngrp, struct canditer *restrict ci, BUN ncand,
+              const oid *restrict gids, oid min, oid max, bool skip_nils,
+              BAT *sep, const char *restrict separator, BUN *has_nils)
 {
        oid gid;
        BUN i, p, nils = 0;
@@ -839,6 +839,7 @@ concat_strings(BAT **bnp, ValPtr pt, BAT
                                }
                        }
                } else { /* sep case */
+                       assert(sep != NULL);
                        for (i = 0; i < ncand; i++) {
                                p = canditer_next(ci) - seqb;
                                s = BUNtvar(bi, p);
@@ -887,6 +888,7 @@ concat_strings(BAT **bnp, ValPtr pt, BAT
                                        empty = false;
                                }
                        } else { /* sep case */
+                               assert(sep != NULL);
                                for (i = 0; i < ncand; i++) {
                                        p = canditer_next(ci) - seqb;
                                        s = BUNtvar(bi, p);
@@ -941,7 +943,7 @@ concat_strings(BAT **bnp, ValPtr pt, BAT
                 * are empty), set to NULL */
                for (i = 0; i < ngrp; i++)
                        astrings[i] = (char *) str_nil;
-       
+
                if (separator) {
                        for (p = 0; p < ncand; p++) {
                                i = canditer_next(ci) - seqb;
@@ -961,6 +963,7 @@ concat_strings(BAT **bnp, ValPtr pt, BAT
                                }
                        }
                } else { /* sep case */
+                       assert(sep != NULL);
                        for (p = 0; p < ncand; p++) {
                                i = canditer_next(ci) - seqb;
                                if (gids[i] >= min && gids[i] <= max) {
@@ -1001,6 +1004,7 @@ concat_strings(BAT **bnp, ValPtr pt, BAT
                                        astrings[i] = NULL;
                        }
                } else { /* sep case */
+                       assert(sep != NULL);
                        for (i = 0; i < ngrp; i++) {
                                if (astrings[i] == NULL) {
                                        if ((astrings[i] = GDKmalloc(lengths[i] 
+ 1 - lastseplength[i])) == NULL) {
@@ -1036,6 +1040,7 @@ concat_strings(BAT **bnp, ValPtr pt, BAT
                                }
                        }
                } else { /* sep case */
+                       assert(sep != NULL);
                        for (p = 0; p < ncand; p++) {
                                i = canditer_next(ci) - seqb;
                                if (gids[i] >= min && gids[i] <= max) {
@@ -1073,7 +1078,7 @@ concat_strings(BAT **bnp, ValPtr pt, BAT
                }
        }
 
-finish:
+  finish:
        if (has_nils)
                *has_nils = nils;
        GDKfree(lengths);
@@ -1092,8 +1097,8 @@ finish:
 }
 
 gdk_return
-BATstr_group_concat(ValPtr res, BAT *b, BAT *s, BAT *sep, bool skip_nils, 
-                                       bool abort_on_error, bool nil_if_empty, 
const char *restrict separator)
+BATstr_group_concat(ValPtr res, BAT *b, BAT *s, BAT *sep, bool skip_nils,
+                   bool abort_on_error, bool nil_if_empty, const char 
*restrict separator)
 {
        BUN ncand;
        struct canditer ci;
@@ -1116,13 +1121,13 @@ BATstr_group_concat(ValPtr res, BAT *b, 
                return GDK_SUCCEED;
        }
 
-       return concat_strings(NULL, res, b, b->hseqbase, 1, &ci, ncand, NULL, 
0, 0, 
-                                                 skip_nils, sep, separator, 
NULL);
+       return concat_strings(NULL, res, b, b->hseqbase, 1, &ci, ncand, NULL, 
0, 0,
+                             skip_nils, sep, separator, NULL);
 }
 
 BAT *
 BATgroupstr_group_concat(BAT *b, BAT *g, BAT *e, BAT *s, BAT *sep, bool 
skip_nils,
-                                                bool abort_on_error, const 
char *restrict separator)
+                        bool abort_on_error, const char *restrict separator)
 {
        BAT *bn = NULL;
        oid min, max;
@@ -1163,8 +1168,8 @@ BATgroupstr_group_concat(BAT *b, BAT *g,
        }
 
        res = concat_strings(&bn, NULL, b, b->hseqbase, ngrp, &ci, ncand,
-                                                (const oid *) Tloc(g, 0), min, 
max, skip_nils, sep, 
-                                                separator, &nils);
+                            (const oid *) Tloc(g, 0), min, max, skip_nils, sep,
+                            separator, &nils);
        if (res != GDK_SUCCEED)
                return NULL;
 
@@ -1218,6 +1223,7 @@ GDKanalytical_str_group_concat(BAT *r, B
                                        empty = false;
                                }
                        } else { /* sep case */
+                               assert(sep != NULL);
                                sl = BUNtvar(bis, (BUN) j);
 
                                if (!strNil(sb)) {
@@ -1257,6 +1263,7 @@ GDKanalytical_str_group_concat(BAT *r, B
                                offset += next_length;
                                empty = false;
                        } else { /* sep case */
+                               assert(sep != NULL);
                                sl = BUNtvar(bis, (BUN) j);
 
                                if (strNil(sb))
@@ -1284,7 +1291,7 @@ GDKanalytical_str_group_concat(BAT *r, B
        r->tnonil = true;
        r->tnil = false;
        return GDK_SUCCEED;
- allocation_error:
+  allocation_error:
        GDKfree(single_str);
        GDKerror("malloc failure\n");
        return GDK_FAIL;
diff --git a/gdk/gdk_time.c b/gdk/gdk_time.c
--- a/gdk/gdk_time.c
+++ b/gdk/gdk_time.c
@@ -609,6 +609,24 @@ date_fromstr(const char *buf, size_t *le
        return parse_date(buf, *d, external);
 }
 
+static ssize_t
+do_date_tostr(char *buf, size_t len, const date *val, bool external)
+{
+       assert(len >= 15);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to