Changeset: c711df1cde84 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c711df1cde84
Added Files:
        
sql/test/BugTracker-2018/Tests/count_from_commented_function_signatures.Bug-6542.sql
        
sql/test/BugTracker-2018/Tests/count_from_commented_function_signatures.Bug-6542.stable.err
        
sql/test/BugTracker-2018/Tests/count_from_commented_function_signatures.Bug-6542.stable.out
        sql/test/BugTracker-2018/Tests/truncate_bam_tables.Bug-6543.sql
        sql/test/BugTracker-2018/Tests/truncate_bam_tables.Bug-6543.stable.err
        sql/test/BugTracker-2018/Tests/truncate_bam_tables.Bug-6543.stable.out
        sql/test/BugTracker-2018/Tests/truncate_empty_table.Bug-6544.sql
        sql/test/BugTracker-2018/Tests/truncate_empty_table.Bug-6544.stable.err
        sql/test/BugTracker-2018/Tests/truncate_empty_table.Bug-6544.stable.out
        sql/test/BugTracker-2018/Tests/truncate_sys_netcdf_tables.Bug-6543.sql
        
sql/test/BugTracker-2018/Tests/truncate_sys_netcdf_tables.Bug-6543.stable.err
        
sql/test/BugTracker-2018/Tests/truncate_sys_netcdf_tables.Bug-6543.stable.out
        sql/test/BugTracker-2018/Tests/truncate_sys_tables.Bug-6543.sql
        sql/test/BugTracker-2018/Tests/truncate_sys_tables.Bug-6543.stable.err
        sql/test/BugTracker-2018/Tests/truncate_sys_tables.Bug-6543.stable.out
Modified Files:
        clients/Tests/exports.stable.out
        clients/mapiclient/mclient.c
        clients/mapiclient/mhelp.c
        gdk/ChangeLog.Mar2018
        gdk/gdk.h
        gdk/gdk_aggr.c
        gdk/gdk_align.c
        gdk/gdk_bat.c
        gdk/gdk_batop.c
        gdk/gdk_bbp.c
        gdk/gdk_storage.c
        monetdb5/modules/kernel/bat5.c
        monetdb5/modules/mal/bbp.c
        monetdb5/modules/mal/clients.c
        monetdb5/modules/mal/inspect.c
        monetdb5/modules/mal/mal_io.c
        monetdb5/modules/mal/mdb.c
        sql/ChangeLog.Mar2018
        sql/backends/monet5/sql_fround_impl.h
        sql/backends/monet5/sql_round_impl.h
        sql/storage/bat/bat_storage.c
        sql/storage/bat/bat_table.c
        sql/storage/bat/bat_utils.c
        sql/test/BugTracker-2018/Tests/All
Branch: default
Log Message:

Merge with Mar2018 branch.


diffs (truncated from 2189 to 300 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
@@ -159,7 +159,7 @@ BAT *BATproject(BAT *l, BAT *r);
 BAT *BATprojectchain(BAT **bats);
 gdk_return BATrangejoin(BAT **r1p, BAT **r2p, BAT *l, BAT *rl, BAT *rh, BAT 
*sl, BAT *sr, int li, int hi, BUN estimate) 
__attribute__((__warn_unused_result__));
 gdk_return BATreplace(BAT *b, BAT *p, BAT *n, bit force) 
__attribute__((__warn_unused_result__));
-void BATroles(BAT *b, const char *tnme);
+gdk_return BATroles(BAT *b, const char *tnme);
 BAT *BATsample(BAT *b, BUN n);
 BAT *BATselect(BAT *b, BAT *s, const void *tl, const void *th, int li, int hi, 
int anti);
 gdk_return BATsemijoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT *sr, 
int nil_matches, BUN estimate) __attribute__((__warn_unused_result__));
@@ -479,7 +479,7 @@ size_t strLen(const char *s);
 int strNil(const char *s);
 const char str_nil[2];
 gdk_return void_inplace(BAT *b, oid id, const void *val, bit force) 
__attribute__((__warn_unused_result__));
-BUN void_replace_bat(BAT *b, BAT *p, BAT *u, bit force) 
__attribute__((__warn_unused_result__));
+gdk_return void_replace_bat(BAT *b, BAT *p, BAT *u, bit force) 
__attribute__((__warn_unused_result__));
 int win_mkdir(const char *, const int mode);
 int win_rename(const char *, const char *);
 int win_rmdir(const char *);
diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c
--- a/clients/mapiclient/mclient.c
+++ b/clients/mapiclient/mclient.c
@@ -301,12 +301,10 @@ timerHuman(int64_t sqloptimizer, int64_t
                fflush(stderr);
                return;
        }
-       if (timermode == T_PERF) {
+       if (timermode == T_PERF && ((!singleinstr != !total) || !total)) {
                /* for performance measures we use milliseconds as the base */
-               if ((!singleinstr != !total) || !total) {
-                       fflush(stderr);
-                       mnstr_flush(toConsole);
-               }
+               fflush(stderr);
+               mnstr_flush(toConsole);
                if (!total)
                        fprintf(stderr, "sql:%" PRId64 ".%03d opt:%" PRId64 
".%03d run:%" PRId64 ".%03d ",
                                 sqloptimizer / 1000, (int) (sqloptimizer % 
1000),
@@ -314,10 +312,8 @@ timerHuman(int64_t sqloptimizer, int64_t
                                 querytime / 1000, (int) (querytime % 1000));
                if (!singleinstr != !total)
                        fprintf(stderr, "clk:%" PRId64 ".%03d ", t / 1000, 
(int) (t % 1000));
-               if ((!singleinstr != !total) || !total) {
-                       fprintf(stderr, "ms\n");
-                       fflush(stderr);
-               }
+               fprintf(stderr, "ms\n");
+               fflush(stderr);
                return;
        }
        return;
diff --git a/clients/mapiclient/mhelp.c b/clients/mapiclient/mhelp.c
--- a/clients/mapiclient/mhelp.c
+++ b/clients/mapiclient/mhelp.c
@@ -95,9 +95,9 @@ SQLhelp sqlhelp[] = {
         "See also 
https://www.monetdb.org/Documentation/SQLreference/Flowofcontrol"},
        {"COMMENT",
         "Add, update or remove a comment or description for a database object",
-        "COMMENT ON [ SCHEMA | TABLE | VIEW | COLUMN | INDEX | SEQUENCE |\n"
-        "           FUNCTION | PROCEDURE | AGGREGATE | FILTER FUNCTION | 
LOADER ]\n"
-        "     qname IS [ 'my description text' | NULL | '' ]",
+        "COMMENT ON { SCHEMA | TABLE | VIEW | COLUMN | INDEX | SEQUENCE |\n"
+        "           FUNCTION | PROCEDURE | AGGREGATE | FILTER FUNCTION | 
LOADER }\n"
+        "     qname IS { 'my description text' | NULL | '' }",
         NULL,
         NULL},
        {"COMMIT",
diff --git a/gdk/ChangeLog.Mar2018 b/gdk/ChangeLog.Mar2018
--- a/gdk/ChangeLog.Mar2018
+++ b/gdk/ChangeLog.Mar2018
@@ -1,6 +1,12 @@
 # ChangeLog file for MonetDB
 # This file is updated with Maddlog
 
+* Fri Feb 16 2018 Sjoerd Mullender <sjo...@acm.org>
+- Changed return type of function void_replace_bat from BUN to gdk_return:
+  it now only returns whether the operation succeeded or not.
+- Changed the return type of BATroles from void to gdk_return: it can
+  fail due to malloc failure.
+
 * Fri Feb  9 2018 Sjoerd Mullender <sjo...@acm.org>
 - Removed functions ALIGNsetH, ALIGNsetT, and CREATEview_ (mind the
   underscore).  The first can easily be replace by using BAThseqbase
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -1347,7 +1347,7 @@ gdk_export void BATsetcount(BAT *b, BUN 
 gdk_export BUN BATgrows(BAT *b);
 gdk_export gdk_return BATkey(BAT *b, int onoff);
 gdk_export gdk_return BATmode(BAT *b, int onoff);
-gdk_export void BATroles(BAT *b, const char *tnme);
+gdk_export gdk_return BATroles(BAT *b, const char *tnme);
 gdk_export void BAThseqbase(BAT *b, oid o);
 gdk_export void BATtseqbase(BAT *b, oid o);
 gdk_export gdk_return BATsetaccess(BAT *b, int mode);
@@ -2282,7 +2282,7 @@ gdk_export void GDKclrerr(void);
 #include "gdk_utils.h"
 
 /* functions defined in gdk_bat.c */
-gdk_export BUN void_replace_bat(BAT *b, BAT *p, BAT *u, bit force)
+gdk_export gdk_return void_replace_bat(BAT *b, BAT *p, BAT *u, bit force)
        __attribute__ ((__warn_unused_result__));
 gdk_export gdk_return void_inplace(BAT *b, oid id, const void *val, bit force)
        __attribute__ ((__warn_unused_result__));
diff --git a/gdk/gdk_aggr.c b/gdk/gdk_aggr.c
--- a/gdk/gdk_aggr.c
+++ b/gdk/gdk_aggr.c
@@ -2772,7 +2772,7 @@ BATgroupquantile(BAT *b, BAT *g, BAT *e,
                        /* singleton groups, so calculating quantile is
                         * easy */
                        bn = COLcopy(b, tp, 0, TRANSIENT);
-                       BAThseqbase(bn, g->tseqbase);
+                       BAThseqbase(bn, g->tseqbase); /* deals with NULL */
                        if (freeb)
                                BBPunfix(b->batCacheid);
                        if (freeg)
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -713,7 +713,7 @@ COLcopy(BAT *b, int tt, int writable, in
                                bunstocopy = cnt;
                }
 
-               bn = COLnew(0, tt, MAX(1, bunstocopy == BUN_NONE ? 0 : 
bunstocopy), role);
+               bn = COLnew(b->hseqbase, tt, MAX(1, bunstocopy == BUN_NONE ? 0 
: bunstocopy), role);
                if (bn == NULL)
                        return NULL;
 
@@ -796,7 +796,6 @@ COLcopy(BAT *b, int tt, int writable, in
                BATsetcount(bn, cnt);
        }
        /* set properties (note that types may have changed in the copy) */
-       BAThseqbase(bn, b->hseqbase);
        if (ATOMtype(tt) == ATOMtype(b->ttype)) {
                if (BATtvoid(b)) {
                        /* b is either dense or has a void(nil) tail */
@@ -821,7 +820,7 @@ COLcopy(BAT *b, int tt, int writable, in
                        bn->tnokey[0] = b->tnokey[0];
                        bn->tnokey[1] = b->tnokey[1];
                } else {
-                       bn->tnokey[0] = bn->tnokey[1];
+                       bn->tnokey[0] = bn->tnokey[1] = 0;
                }
                bn->tnosorted = b->tnosorted;
        } else if (ATOMstorage(tt) == ATOMstorage(b->ttype) &&
@@ -1269,10 +1268,9 @@ void_inplace(BAT *b, oid id, const void 
        return BUNinplace(b, id - b->hseqbase, val, force);
 }
 
-BUN
+gdk_return
 void_replace_bat(BAT *b, BAT *p, BAT *u, bit force)
 {
-       BUN nr = 0;
        BUN r, s;
        BATiter uii = bat_iterator(p);
        BATiter uvi = bat_iterator(u);
@@ -1282,10 +1280,9 @@ void_replace_bat(BAT *b, BAT *p, BAT *u,
                const void *val = BUNtail(uvi, r);
 
                if (void_inplace(b, updid, val, force) != GDK_SUCCEED)
-                       return BUN_NONE;
-               nr++;
+                       return GDK_FAIL;
        }
-       return nr;
+       return GDK_SUCCEED;
 }
 
 /*
@@ -1530,17 +1527,18 @@ BATtseqbase(BAT *b, oid o)
        }
 }
 
-void
+gdk_return
 BATroles(BAT *b, const char *tnme)
 {
        if (b == NULL)
-               return;
+               return GDK_SUCCEED;
        if (b->tident && !default_ident(b->tident))
                GDKfree(b->tident);
        if (tnme)
                b->tident = GDKstrdup(tnme);
        else
                b->tident = BATstring_t;
+       return b->tident ? GDK_SUCCEED : GDK_FAIL;
 }
 
 /*
diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c
--- a/gdk/gdk_batop.c
+++ b/gdk/gdk_batop.c
@@ -879,7 +879,7 @@ BATreplace(BAT *b, BAT *p, BAT *n, bit f
        if (b == NULL || p == NULL || n == NULL || BATcount(n) == 0) {
                return GDK_SUCCEED;
        }
-       if (void_replace_bat(b, p, n, force) == BUN_NONE)
+       if (void_replace_bat(b, p, n, force) != GDK_SUCCEED)
                return GDK_FAIL;
        return GDK_SUCCEED;
 }
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -1331,7 +1331,8 @@ BBPreadEntries(FILE *fp, int bbpversion)
                if (bn == NULL)
                        GDKfatal("BBPinit: cannot allocate memory for BAT.");
                bn->batCacheid = bid;
-               BATroles(bn, NULL);
+               if (BATroles(bn, NULL) != GDK_SUCCEED)
+                       GDKfatal("BBPinit: BATroles failed.");
                bn->batPersistence = PERSISTENT;
                bn->batCopiedtodisk = 1;
                bn->batRestricted = (properties & 0x06) >> 1;
diff --git a/gdk/gdk_storage.c b/gdk/gdk_storage.c
--- a/gdk/gdk_storage.c
+++ b/gdk/gdk_storage.c
@@ -987,8 +987,9 @@ BATprint(BAT *b)
        argv[0] = BATdense(b->hseqbase, b->hseqbase, BATcount(b));
        argv[1] = b;
        if (argv[0] && argv[1]) {
-               BATroles(argv[0], "h");
-               ret = BATprintcolumns(GDKstdout, 2, argv);
+               ret = BATroles(argv[0], "h");
+               if (ret == GDK_SUCCEED)
+                       ret = BATprintcolumns(GDKstdout, 2, argv);
        }
        if (argv[0])
                BBPunfix(argv[0]->batCacheid);
diff --git a/monetdb5/modules/kernel/bat5.c b/monetdb5/modules/kernel/bat5.c
--- a/monetdb5/modules/kernel/bat5.c
+++ b/monetdb5/modules/kernel/bat5.c
@@ -413,7 +413,7 @@ BKCbat_inplace_force(bat *r, const bat *
                BBPunfix(p->batCacheid);
                throw(MAL, "bat.inplace", SQLSTATE(HY002) 
RUNTIME_OBJECT_MISSING);
        }
-       if (void_replace_bat(b, p, u, *force) == BUN_NONE) {
+       if (void_replace_bat(b, p, u, *force) != GDK_SUCCEED) {
                BBPunfix(b->batCacheid);
                BBPunfix(p->batCacheid);
                BBPunfix(u->batCacheid);
@@ -869,7 +869,10 @@ BKCsetColumn(void *r, const bat *bid, co
                BBPunfix(b->batCacheid);
                throw(MAL, "bat.setColumn", ILLEGAL_ARGUMENT " Column name 
missing");
        }
-       BATroles(b, *tname);
+       if (BATroles(b, *tname) != GDK_SUCCEED) {
+               BBPunfix(b->batCacheid);
+               throw(MAL, "bat.setColumn", SQLSTATE(HY001) MAL_MALLOC_FAIL);
+       }
        BBPunfix(b->batCacheid);
        return MAL_SUCCEED;
 }
diff --git a/monetdb5/modules/mal/bbp.c b/monetdb5/modules/mal/bbp.c
--- a/monetdb5/modules/mal/bbp.c
+++ b/monetdb5/modules/mal/bbp.c
@@ -19,11 +19,10 @@ static int
 pseudo(bat *ret, BAT *b, str X1,str X2) {
        char buf[BUFSIZ];
        snprintf(buf,BUFSIZ,"%s_%s", X1,X2);
-       if (BBPindex(buf) <= 0 && BBPrename(b->batCacheid, buf) != 0) {
+       if ((BBPindex(buf) <= 0 && BBPrename(b->batCacheid, buf) != 0) || 
BATroles(b,X2) != GDK_SUCCEED) {
                BBPunfix(b->batCacheid);
                return -1;
        }
-       BATroles(b,X2);
        *ret = b->batCacheid;
        BBPkeepref(*ret);
        return -0;
diff --git a/monetdb5/modules/mal/clients.c b/monetdb5/modules/mal/clients.c
--- a/monetdb5/modules/mal/clients.c
+++ b/monetdb5/modules/mal/clients.c
@@ -33,7 +33,8 @@ pseudo(bat *ret, BAT *b, str X1,str X2) 
        snprintf(buf,BUFSIZ,"%s_%s", X1,X2);
        if (BBPindex(buf) <= 0 && BBPrename(b->batCacheid, buf) != 0)
                return -1;
-       BATroles(b,X2);
+       if (BATroles(b,X2) != GDK_SUCCEED)
+               return -1;
        *ret = b->batCacheid;
        BBPkeepref(*ret);
        return 0;
diff --git a/monetdb5/modules/mal/inspect.c b/monetdb5/modules/mal/inspect.c
--- a/monetdb5/modules/mal/inspect.c
+++ b/monetdb5/modules/mal/inspect.c
@@ -28,7 +28,8 @@ pseudo(bat *ret, BAT *b, str X1,str X2, 
        snprintf(buf,BUFSIZ,"%s_%s_%s", X1,X2,X3);
        if (BBPindex(buf) <= 0 && BBPrename(b->batCacheid, buf) != 0)
                return -1;
-       BATroles(b,X2);
+       if (BATroles(b,X2) != GDK_SUCCEED)
+               return -1;
        *ret = b->batCacheid;
        BBPkeepref(*ret);
        return 0;
diff --git a/monetdb5/modules/mal/mal_io.c b/monetdb5/modules/mal/mal_io.c
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to