Changeset: 69f5c8e3cb5d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=69f5c8e3cb5d
Added Files:
        sql/test/miscellaneous/Tests/simple_plans.sql
        sql/test/miscellaneous/Tests/simple_plans.stable.err
        sql/test/miscellaneous/Tests/simple_plans.stable.out
Modified Files:
        clients/mapiclient/dump.c
        clients/mapiclient/mhelp.c
        gdk/gdk_bat.c
        gdk/gdk_batop.c
        gdk/gdk_bbp.c
        monetdb5/mal/mal_import.c
        monetdb5/optimizer/opt_mergetable.c
        sql/ChangeLog.Jun2020
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql_upgrades.c
        sql/scripts/25_debug.sql
        sql/server/rel_dump.c
        sql/server/rel_exp.c
        sql/server/rel_optimizer.c
        sql/server/rel_propagate.c
        sql/server/rel_psm.c
        sql/server/rel_rel.c
        sql/server/rel_rel.h
        sql/server/rel_rewriter.c
        sql/server/rel_rewriter.h
        sql/server/rel_schema.c
        sql/server/rel_select.c
        sql/server/rel_unnest.c
        sql/server/rel_unnest.h
        sql/server/rel_updates.c
        sql/storage/store.c
        sql/test/BugDay_2005-10-06_2.9.3/Tests/bool_boolean.SF-935601.stable.out
        
sql/test/BugTracker-2016/Tests/memory-consumption-query-PLAN-25joins.Bug-3972.stable.out
        sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
        
sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.powerpc64.int128
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.32bit
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64.int128
        sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128
        sql/test/emptydb-upgrade/Tests/upgrade.stable.out
        sql/test/emptydb-upgrade/Tests/upgrade.stable.out.32bit
        sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128
        sql/test/emptydb/Tests/check.stable.out
        sql/test/emptydb/Tests/check.stable.out.32bit
        sql/test/emptydb/Tests/check.stable.out.int128
        sql/test/mergetables/Tests/sqlsmith-exists2.sql
        sql/test/mergetables/Tests/sqlsmith-exists2.stable.out
        sql/test/miscellaneous/Tests/All
        sql/test/miscellaneous/Tests/column_aliases.sql
        sql/test/miscellaneous/Tests/column_aliases.stable.err
        sql/test/miscellaneous/Tests/groupby_error.sql
        sql/test/miscellaneous/Tests/groupby_error.stable.out
        sql/test/miscellaneous/Tests/simple_selects.sql
        sql/test/miscellaneous/Tests/simple_selects.stable.err
        sql/test/subquery/Tests/subquery3.sql
        sql/test/subquery/Tests/subquery3.stable.err
        sql/test/subquery/Tests/subquery3.stable.out
        sql/test/subquery/Tests/subquery5.sql
        sql/test/subquery/Tests/subquery5.stable.err
        sql/test/subquery/Tests/subquery5.stable.out
        sql/test/sys-schema/Tests/systemfunctions.stable.out
        sql/test/sys-schema/Tests/systemfunctions.stable.out.int128
        sql/test/testdb-reload/Tests/reload.stable.out
        sql/test/testdb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out
        sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.32bit
        sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade-hge/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade/Tests/upgrade.stable.out
        sql/test/testdb-upgrade/Tests/upgrade.stable.out.32bit
        sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128
        sql/test/testdb/Tests/dump.stable.out
        sql/test/testdb/Tests/load.sql
        tools/merovingian/client/monetdb.c
        tools/merovingian/daemon/merovingian.c
        tools/merovingian/utils/control.c
        tools/merovingian/utils/control.h
        tools/merovingian/utils/properties.c
        tools/merovingian/utils/utils.c
        tools/merovingian/utils/utils.h
Branch: scoping
Log Message:

Merged with default


diffs (truncated from 7496 to 300 lines):

diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c
--- a/clients/mapiclient/dump.c
+++ b/clients/mapiclient/dump.c
@@ -2018,12 +2018,20 @@ dump_function(Mapi mid, stream *toConsol
                sep = "";
                while (mapi_fetch_row(hdl) != 0) {
                        const char *aname = mapi_fetch_field(hdl, 0);
-                       char *atype = strdup(mapi_fetch_field(hdl, 1));
-                       char *adigs = strdup(mapi_fetch_field(hdl, 2));
-                       char *ascal = strdup(mapi_fetch_field(hdl, 3));
+                       char *atype = mapi_fetch_field(hdl, 1);
+                       char *adigs = mapi_fetch_field(hdl, 2);
+                       char *ascal = mapi_fetch_field(hdl, 3);
                        const char *ainou = mapi_fetch_field(hdl, 4);
 
-                       if (!atype || !adigs || !ascal) {
+                       if (strcmp(ainou, "0") == 0) {
+                               /* end of arguments */
+                               break;
+                       }
+
+                       atype = strdup(atype);
+                       adigs = strdup(adigs);
+                       ascal = strdup(ascal);
+                       if (atype == NULL || adigs == NULL || ascal == NULL) {
                                free(atype);
                                free(adigs);
                                free(ascal);
@@ -2037,13 +2045,6 @@ dump_function(Mapi mid, stream *toConsol
                                }
                                goto bailout;
                        }
-                       if (strcmp(ainou, "0") == 0) {
-                               /* end of arguments */
-                               free(atype);
-                               free(adigs);
-                               free(ascal);
-                               break;
-                       }
 
                        mnstr_printf(toConsole, "%s", sep);
                        dquoted_print(toConsole, aname, " ");
@@ -2064,7 +2065,7 @@ dump_function(Mapi mid, stream *toConsol
                                char *adigs = strdup(mapi_fetch_field(hdl, 2));
                                char *ascal = strdup(mapi_fetch_field(hdl, 3));
 
-                               if (!atype || !adigs || !ascal) {
+                               if (atype == NULL || adigs == NULL || ascal == 
NULL) {
                                        free(atype);
                                        free(adigs);
                                        free(ascal);
@@ -2091,6 +2092,8 @@ dump_function(Mapi mid, stream *toConsol
                                free(adigs);
                                free(ascal);
                        } while (mapi_fetch_row(hdl) != 0);
+                       if (ftype == 5)
+                               mnstr_printf(toConsole, ")");
                }
                if (flkey) {
                        mnstr_printf(toConsole, " LANGUAGE %s", flkey);
diff --git a/clients/mapiclient/mhelp.c b/clients/mapiclient/mhelp.c
--- a/clients/mapiclient/mhelp.c
+++ b/clients/mapiclient/mhelp.c
@@ -804,9 +804,8 @@ SQLhelp sqlhelp2[] = {
         NULL},
        {"procedure_statement",
         NULL,
-        "{ transaction_statement | update_statement | grant | revoke |\n"
-        "  declare | set_statement | control_statement | select_single_row } 
';'",
-        
"transaction_statement,update_statement,grant,revoke,declare,set_statement,control_statement,select_single_row",
+        "{ update_statement | declare_statement | set_statement | 
control_statement | select_single_row } ';'",
+        
"update_statement,declare_statement,set_statement,control_statement,select_single_row",
         NULL},
        {"select_single_row",
         NULL,
@@ -946,9 +945,8 @@ SQLhelp sqlhelp2[] = {
         NULL},
        {"trigger_statement",
         NULL,
-        "transaction_statement | update_statement | grant | revoke | 
declare_statement |\n"
-        "        set_statement | control_statement | select_single_row",
-        
"transaction_statement,update_statement,grant,revoke,declare_statement,set_statement,control_statement,select_single_row",
+        "update_statement | declare_statement | set_statement | 
control_statement | select_single_row",
+        
"update_statement,declare_statement,set_statement,control_statement,select_single_row",
         NULL},
        {"when_statement",
         NULL,
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -750,11 +750,6 @@ COLcopy(BAT *b, int tt, bool writable, r
 
                        /* make sure we use the correct capacity */
                        bn->batCapacity = (BUN) (bn->ttype ? bn->theap.size >> 
bn->tshift : 0);
-
-
-                       /* first/inserted must point equally far into
-                        * the heap as in the source */
-                       bn->batInserted = b->batInserted;
                } else if (BATatoms[tt].atomFix || tt != TYPE_void || 
ATOMextern(tt)) {
                        /* case (4): one-by-one BUN insert (really slow) */
                        BUN p, q, r = 0;
diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c
--- a/gdk/gdk_batop.c
+++ b/gdk/gdk_batop.c
@@ -53,7 +53,7 @@ unshare_string_heap(BAT *b)
 #endif
 
 static gdk_return
-insert_string_bat(BAT *b, BAT *n, BAT *s, bool force)
+insert_string_bat(BAT *b, BAT *n, struct canditer *ci, bool force)
 {
        BATiter ni;             /* iterator */
        size_t toff = ~(size_t) 0;      /* tail offset */
@@ -66,20 +66,16 @@ insert_string_bat(BAT *b, BAT *n, BAT *s
 #endif
        var_t v;                /* value */
        size_t off;             /* offset within n's string heap */
-       struct canditer ci;
-       BUN cnt;
+       BUN cnt = ci->ncand;
        BUN oldcnt = BATcount(b);
 
        assert(b->ttype == TYPE_str);
        /* only transient bats can use some other bat's string heap */
        assert(b->batRole == TRANSIENT || b->tvheap->parentid == b->batCacheid);
-       if (n->batCount == 0 || (s && s->batCount == 0))
+       if (cnt == 0)
                return GDK_SUCCEED;
        ni = bat_iterator(n);
        tp = NULL;
-       cnt = canditer_init(&ci, n, s);
-       if (cnt == 0)
-               return GDK_SUCCEED;
        if ((!GDK_ELIMDOUBLES(b->tvheap) || oldcnt == 0) &&
            !GDK_ELIMDOUBLES(n->tvheap) &&
            b->tvheap->hashash == n->tvheap->hashash) {
@@ -106,7 +102,7 @@ insert_string_bat(BAT *b, BAT *n, BAT *s
                         * heap */
                        if (oldcnt == 0 &&
                            b->tvheap != n->tvheap &&
-                           ci.tpe == cand_dense) {
+                           ci->tpe == cand_dense) {
                                if (b->tvheap->parentid != bid) {
                                        BBPunshare(b->tvheap->parentid);
                                } else {
@@ -118,7 +114,7 @@ insert_string_bat(BAT *b, BAT *n, BAT *s
                                b->batDirtydesc = true;
                                toff = 0;
                        } else if (b->tvheap->parentid == n->tvheap->parentid &&
-                                  ci.tpe == cand_dense) {
+                                  ci->tpe == cand_dense) {
                                toff = 0;
                        } else if (b->tvheap->parentid != bid &&
                                   unshare_string_heap(b) != GDK_SUCCEED) {
@@ -148,7 +144,7 @@ insert_string_bat(BAT *b, BAT *n, BAT *s
                        size_t len = b->tvheap->hashash ? 1024 * EXTRALEN : 0;
                        for (i = 0; i < 1024; i++) {
                                p = (BUN) (((double) rand() / RAND_MAX) * (cnt 
- 1));
-                               p = canditer_idx(&ci, p) - n->hseqbase;
+                               p = canditer_idx(ci, p) - n->hseqbase;
                                off = BUNtvaroff(ni, p);
                                if (off < b->tvheap->free &&
                                    strcmp(b->tvheap->base + off, 
n->tvheap->base + off) == 0 &&
@@ -198,10 +194,10 @@ insert_string_bat(BAT *b, BAT *n, BAT *s
                }
        } else if (unshare_string_heap(b) != GDK_SUCCEED)
                return GDK_FAIL;
-       if (toff == 0 && n->twidth == b->twidth && ci.tpe == cand_dense) {
+       if (toff == 0 && n->twidth == b->twidth && ci->tpe == cand_dense) {
                /* we don't need to do any translation of offset
                 * values, so we can use fast memcpy */
-               memcpy(Tloc(b, BUNlast(b)), Tloc(n, ci.seq - n->hseqbase), cnt 
<< n->tshift);
+               memcpy(Tloc(b, BUNlast(b)), Tloc(n, ci->seq - n->hseqbase), cnt 
<< n->tshift);
                BATsetcount(b, oldcnt + cnt);
        } else if (toff != ~(size_t) 0) {
                /* we don't need to insert any actual strings since we
@@ -251,7 +247,7 @@ insert_string_bat(BAT *b, BAT *n, BAT *s
                b->tvarsized = false;
                while (cnt > 0) {
                        cnt--;
-                       p = canditer_next(&ci) - n->hseqbase;
+                       p = canditer_next(ci) - n->hseqbase;
                        switch (n->twidth) {
                        case 1:
                                v = (var_t) tbp[p] + GDK_VAROFFSET;
@@ -316,7 +312,7 @@ insert_string_bat(BAT *b, BAT *n, BAT *s
                oid hseq = n->hseqbase;
                while (cnt > 0) {
                        cnt--;
-                       p = canditer_next(&ci) - hseq;
+                       p = canditer_next(ci) - hseq;
                        tp = BUNtvar(ni, p);
                        if (bunfastappVAR(b, tp) != GDK_SUCCEED)
                                goto bunins_failed;
@@ -332,7 +328,7 @@ insert_string_bat(BAT *b, BAT *n, BAT *s
                r = BUNlast(b);
                while (cnt > 0) {
                        cnt--;
-                       p = canditer_next(&ci) - n->hseqbase;
+                       p = canditer_next(ci) - n->hseqbase;
                        off = BUNtvaroff(ni, p); /* the offset */
                        tp = n->tvheap->base + off; /* the string */
                        if (off < b->tvheap->free &&
@@ -397,11 +393,10 @@ insert_string_bat(BAT *b, BAT *n, BAT *s
 }
 
 static gdk_return
-append_varsized_bat(BAT *b, BAT *n, BAT *s)
+append_varsized_bat(BAT *b, BAT *n, struct canditer *ci)
 {
        BATiter ni;
-       struct canditer ci;
-       BUN cnt, r;
+       BUN cnt = ci->ncand, r;
        oid hseq = n->hseqbase;
 
        /* only transient bats can use some other bat's vheap */
@@ -409,9 +404,6 @@ append_varsized_bat(BAT *b, BAT *n, BAT 
        /* make sure the bats use var_t */
        assert(b->twidth == n->twidth);
        assert(b->twidth == SIZEOF_VAR_T);
-       if (n->batCount == 0 || (s && s->batCount == 0))
-               return GDK_SUCCEED;
-       cnt = canditer_init(&ci, n, s);
        if (cnt == 0)
                return GDK_SUCCEED;
        if (BATcount(b) == 0 &&
@@ -434,24 +426,24 @@ append_varsized_bat(BAT *b, BAT *n, BAT 
        if (b->tvheap == n->tvheap) {
                /* if b and n use the same vheap, we only need to copy
                 * the offsets from n to b */
-               if (ci.tpe == cand_dense) {
+               if (ci->tpe == cand_dense) {
                        /* fast memcpy since we copy a consecutive
                         * chunk of memory */
                        memcpy(Tloc(b, BUNlast(b)),
-                              Tloc(n, ci.seq - hseq),
+                              Tloc(n, ci->seq - hseq),
                               cnt << b->tshift);
                } else {
                        var_t *restrict dst = (var_t *) Tloc(b, BUNlast(b));
                        const var_t *restrict src = (const var_t *) Tloc(n, 0);
                        while (cnt > 0) {
                                cnt--;
-                               *dst++ = src[canditer_next(&ci) - hseq];
+                               *dst++ = src[canditer_next(ci) - hseq];
                        }
                }
                b->theap.dirty = true;
-               BATsetcount(b, BATcount(b) + ci.ncand);
+               BATsetcount(b, BATcount(b) + ci->ncand);
                /* maintain hash table */
-               for (BUN i = BATcount(b) - ci.ncand;
+               for (BUN i = BATcount(b) - ci->ncand;
                     b->thash && i < BATcount(b);
                     i++) {
                        HASHins(b, i, b->tvheap->base + ((var_t *) 
b->theap.base)[i]);
@@ -481,7 +473,7 @@ append_varsized_bat(BAT *b, BAT *n, BAT 
        r = BUNlast(b);
        while (cnt > 0) {
                cnt--;
-               BUN p = canditer_next(&ci) - hseq;
+               BUN p = canditer_next(ci) - hseq;
                const void *t = BUNtvar(ni, p);
                if (bunfastapp_nocheckVAR(b, r, t, Tsize(b)) != GDK_SUCCEED)
                        return GDK_FAIL;
@@ -676,11 +668,11 @@ BATappend(BAT *b, BAT *n, BAT *s, bool f
                b->tnil |= n->tnil && cnt == BATcount(n);
        }
        if (b->ttype == TYPE_str) {
-               if (insert_string_bat(b, n, s, force) != GDK_SUCCEED) {
+               if (insert_string_bat(b, n, &ci, force) != GDK_SUCCEED) {
                        return GDK_FAIL;
                }
        } else if (ATOMvarsized(b->ttype)) {
-               if (append_varsized_bat(b, n, s) != GDK_SUCCEED) {
+               if (append_varsized_bat(b, n, &ci) != GDK_SUCCEED) {
                        return GDK_FAIL;
                }
        } else {
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -677,7 +677,7 @@ fixdatebats(void)
 #endif
 
 static int
-heapinit(BAT *b, const char *buf, int *hashash, unsigned bbpversion, bat bid, 
const char *filename)
+heapinit(BAT *b, const char *buf, int *hashash, unsigned bbpversion, bat bid, 
const char *filename, int lineno)
 {
        int t;
        char type[33];
@@ -706,12 +706,12 @@ heapinit(BAT *b, const char *buf, int *h
                   &nokey1, &nosorted, &norevsorted, &base,
                   &free, &size, &storage,
                   &n) < 12) {
-               TRC_CRITICAL(GDK, "invalid format for BBP.dir\n%s", buf);
+               TRC_CRITICAL(GDK, "invalid format for BBP.dir on line %d", 
lineno);
                return -1;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to