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