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 <[email protected]>
+- 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 <[email protected]>
- 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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list