Changeset: a5c80687d26f for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a5c80687d26f
Added Files:
sql/test/BugTracker-2014/Tests/oid-table-assert.Bug-3514.sql
sql/test/BugTracker-2014/Tests/oid-table-assert.Bug-3514.stable.err
sql/test/BugTracker-2014/Tests/oid-table-assert.Bug-3514.stable.out
sql/test/BugTracker-2014/Tests/round-properties.Bug-3515.sql
sql/test/BugTracker-2014/Tests/round-properties.Bug-3515.stable.err
sql/test/BugTracker-2014/Tests/round-properties.Bug-3515.stable.out
Modified Files:
clients/R/MonetDB.R/DESCRIPTION
clients/Tests/exports.stable.out
gdk/gdk_bat.c
gdk/gdk_batop.c
gdk/gdk_logger.c
gdk/gdk_select.c
sql/backends/monet5/sql.c
sql/backends/monet5/sql_round_impl.h
sql/test/BugTracker-2014/Tests/All
sql/test/pg_regress/Tests/numeric.sql
sql/test/pg_regress/Tests/numeric.stable.err
sql/test/pg_regress/Tests/numeric.stable.out
sql/test/pg_regress/postgresql2sql99.sh
Branch: transaction-replication
Log Message:
Merge with default branch
Manually resolve conflicts in gdk_logger
diffs (truncated from 3862 to 300 lines):
diff --git a/clients/R/MonetDB.R/DESCRIPTION b/clients/R/MonetDB.R/DESCRIPTION
--- a/clients/R/MonetDB.R/DESCRIPTION
+++ b/clients/R/MonetDB.R/DESCRIPTION
@@ -1,6 +1,6 @@
Package: MonetDB.R
Version: 0.9.4
-Date: 2013-07-16
+Date: 2013-07-18
Title: Connect MonetDB to R
Authors@R: c(person("Hannes Muehleisen", role = c("aut", "cre"),email =
"[email protected]"),
person("Thomas Lumley", role = "ctb"),
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
@@ -160,7 +160,7 @@ int BATmmap(BAT *b, int hb, int tb, int
BAT *BATmode(BAT *b, int onoff);
gdk_return BATmultiprintf(stream *f, int argc, BAT *argv[], int printoid, int
order, int printorderby);
int BATname(BAT *b, const char *nme);
-BAT *BATnew(int hdtype, int tltype, BUN capacity, int role);
+BAT *BATnew(int hdtype, int tltype, BUN capacity, int role)
__attribute__((warn_unused_result));
BAT *BATorder(BAT *b);
BAT *BATorder_rev(BAT *b);
int BATordered(BAT *b);
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -1288,6 +1288,7 @@ BUNappend(BAT *b, const void *t, bit for
return NULL;
}
+ assert(!isVIEW(b));
bm = BBP_cache(-b->batCacheid);
if ((b->tkey & BOUND2BTRUE) && BUNfnd(bm, t) != BUN_NONE) {
return b;
diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c
--- a/gdk/gdk_batop.c
+++ b/gdk/gdk_batop.c
@@ -457,6 +457,7 @@ BATappend(BAT *b, BAT *n, bit force)
if (b == NULL || n == NULL || (sz = BATcount(n)) == 0) {
return b;
}
+ assert(!isVIEW(b));
if (b->htype != TYPE_void && b->htype != TYPE_oid) {
GDKerror("BATappend: input must be (V)OID headed\n");
return NULL;
diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -183,7 +183,7 @@ log_read_string(logger *l)
}
if (len == 0)
return NULL;
- buf = (char *) GDKmalloc(len);
+ buf = GDKmalloc(len);
if (buf == NULL) {
fprintf(stderr, "!ERROR: log_read_string: malloc failed\n");
return NULL;
@@ -649,14 +649,14 @@ la_bat_use(logger *lg, logaction *la)
static trans *
tr_create(trans *tr, int tid)
{
- trans *ntr = (trans *) GDKmalloc(sizeof(trans));
+ trans *ntr = GDKmalloc(sizeof(trans));
if (ntr == NULL)
return NULL;
ntr->tid = tid;
ntr->sz = TR_SIZE;
ntr->nr = 0;
- ntr->changes = (logaction *) GDKmalloc(sizeof(logaction) * TR_SIZE);
+ ntr->changes = GDKmalloc(sizeof(logaction) * TR_SIZE);
if (ntr->changes == NULL) {
GDKfree(ntr);
return NULL;
@@ -1092,7 +1092,7 @@ bm_subcommit(BAT *list_bid, BAT *list_nm
{
BUN p, q;
BUN nn = 3 + (list_bid->batFirst > list_bid->batDeleted ?
list_bid->batFirst - list_bid->batDeleted : 0) + BATcount(list_bid) + (extra ?
BATcount(extra) : 0);
- bat *n = (bat*)GDKmalloc(sizeof(bat) * nn);
+ bat *n = GDKmalloc(sizeof(bat) * nn);
int i = 0;
BATiter iter = (list_nme)?bat_iterator(list_nme):bat_iterator(list_bid);
int res;
@@ -1157,7 +1157,8 @@ logger_fatal(const char *format, const c
GDKexit(1);
}
-/* upgrade from old logger format */
+/* upgrade from old logger format; all errors are fatal since
+ * this should only happen on startup */
static void
logger_upgrade_format(char *fn, logger *lg, bat *bid, char *bak) {
/* split catalog -> catalog_bid, catalog_nme */
@@ -1169,49 +1170,74 @@ logger_upgrade_format(char *fn, logger *
lg->catalog_bid = logbat_new(TYPE_int, BATSIZE, PERSISTENT);
lg->catalog_nme = logbat_new(TYPE_str, BATSIZE, PERSISTENT);
+
v = BATmark(b, 0);
- BATappend(lg->catalog_bid, BATmirror(v), FALSE);
+ if (v == NULL)
+ logger_fatal("logger_upgrade_format: cannot create view on
bat", 0, 0, 0);
+ if (BATappend(lg->catalog_bid, BATmirror(v), FALSE) == NULL)
+ logger_fatal("logger_upgrade_format: BATappend failed", 0, 0,
0);
BBPunfix(v->batCacheid);
v = BATmark(BATmirror(b), 0);
- BATappend(lg->catalog_nme, BATmirror(v), FALSE);
+ if (v == NULL)
+ logger_fatal("logger_upgrade_format: cannot create view on
bat", 0, 0, 0);
+ if (BATappend(lg->catalog_nme, BATmirror(v), FALSE) == NULL)
+ logger_fatal("logger_upgrade_format: BATappend failed", 0, 0,
0);
BBPunfix(v->batCacheid);
/* Make persistent */
*bid = lg->catalog_bid->batCacheid;
BBPincref(*bid, TRUE);
snprintf(bak, BUFSIZ, "%s_catalog_bid", fn);
- BBPrename(lg->catalog_bid->batCacheid, bak);
+ if (BBPrename(lg->catalog_bid->batCacheid, bak) < 0)
+ logger_fatal("logger_upgrade_format: BBPrename to %s failed",
bak, 0, 0);
/* Make persistent */
*bid = lg->catalog_nme->batCacheid;
BBPincref(*bid, TRUE);
snprintf(bak, BUFSIZ, "%s_catalog_nme", fn);
- BBPrename(lg->catalog_nme->batCacheid, bak);
+ if (BBPrename(lg->catalog_nme->batCacheid, bak) < 0)
+ logger_fatal("logger_upgrade_format: BBPrename to %s failed",
bak, 0, 0);
+
logbat_destroy(b);
/* split snapshots -> snapshots_bid, snapshots_tid */
*bid = logger_find_bat(lg, "snapshots");
b = BATdescriptor(*bid);
- if (b == 0) {
+ if (b == 0)
logger_fatal("logger_upgrade_format: inconsistent database,
'%s' snapshots does not exist", bak, 0, 0);
- }
lg->snapshots_bid = logbat_new(TYPE_int, 1, PERSISTENT);
+ if (lg->snapshots_bid == NULL)
+ logger_fatal("logger_upgrade_format: cannot create snapshot
bat", 0, 0, 0);
v = BATmark(b, 0);
- BATappend(lg->snapshots_bid, BATmirror(v), FALSE);
+ if (v == NULL)
+ logger_fatal("logger_upgrade_format: cannot create view on
bat", 0, 0, 0);
+ if (BATappend(lg->snapshots_bid, BATmirror(v), FALSE) == NULL)
+ logger_fatal("logger_upgrade_format: BATappend failed", 0, 0,
0);
BBPunfix(v->batCacheid);
snprintf(bak, BUFSIZ, "%s_snapshots_bid", fn);
- BBPrename(lg->snapshots_bid->batCacheid, bak);
+ if (BBPrename(lg->snapshots_bid->batCacheid, bak) < 0)
+ logger_fatal("logger_upgrade_format: BBPrename to %s failed",
bak, 0, 0);
logger_add_bat(lg, lg->snapshots_bid, "snapshots_bid");
lg->snapshots_tid = logbat_new(TYPE_int, 1, PERSISTENT);
+ if (lg->snapshots_tid == NULL)
+ logger_fatal("logger_upgrade_format: cannot create snapshot
bat", 0, 0, 0);
+
v = BATmark(BATmirror(b), 0);
- BATappend(lg->snapshots_tid, BATmirror(v), FALSE);
+ if (v == NULL)
+ logger_fatal("logger_upgrade_format: cannot create view on
bat", 0, 0, 0);
+ if (BATappend(lg->snapshots_tid, BATmirror(v), FALSE) == NULL)
+ logger_fatal("logger_upgrade_format: BATappend failed", 0, 0,
0);
BBPunfix(v->batCacheid);
snprintf(bak, BUFSIZ, "%s_snapshots_tid", fn);
- BBPrename(lg->snapshots_tid->batCacheid, bak);
+ if (BBPrename(lg->snapshots_tid->batCacheid, bak) < 0)
+ logger_fatal("logger_upgrade_format: BBPrename to %s failed",
bak, 0, 0);
+
logger_add_bat(lg, lg->snapshots_tid, "snapshots_tid");
+
logbat_destroy(b);
+
/* split seqs -> seqs_id, seqs_val */
*bid = logger_find_bat(lg, "seqs");
b = BATdescriptor(*bid);
@@ -1220,23 +1246,36 @@ logger_upgrade_format(char *fn, logger *
}
lg->seqs_id = logbat_new(TYPE_int, 1, PERSISTENT);
+ if (lg->seqs_id == NULL)
+ logger_fatal("logger_upgrade_format: cannot create sequences
bat", 0, 0, 0);
v = BATmark(b, 0);
- BATappend(lg->seqs_id, BATmirror(v), FALSE);
+ if (v == NULL)
+ logger_fatal("logger_upgrade_format: cannot create view on
bat", 0, 0, 0);
+ if (BATappend(lg->seqs_id, BATmirror(v), FALSE) == NULL)
+ logger_fatal("logger_upgrade_format: BATappend failed", 0, 0,
0);
BBPunfix(v->batCacheid);
snprintf(bak, BUFSIZ, "%s_seqs_id", fn);
- BBPrename(lg->seqs_id->batCacheid, bak);
+ if (BBPrename(lg->seqs_id->batCacheid, bak) < 0)
+ logger_fatal("logger_upgrade_format: BBPrename to %s failed",
bak, 0, 0);
logger_add_bat(lg, lg->seqs_id, "seqs_id");
lg->seqs_val = logbat_new(TYPE_lng, 1, PERSISTENT);
+ if (lg->seqs_val == NULL)
+ logger_fatal("logger_upgrade_format: cannot create sequences
bat", 0, 0, 0);
v = BATmark(BATmirror(b), 0);
- BATappend(lg->seqs_val, BATmirror(v), FALSE);
+ if (v == NULL)
+ logger_fatal("logger_upgrade_format: cannot create view on
bat", 0, 0, 0);
+ if (BATappend(lg->seqs_val, BATmirror(v), FALSE) == NULL)
+ logger_fatal("logger_upgrade_format: BATappend failed", 0, 0,
0);
BBPunfix(v->batCacheid);
snprintf(bak, BUFSIZ, "%s_seqs_val", fn);
- BBPrename(lg->seqs_val->batCacheid, bak);
+ if (BBPrename(lg->seqs_val->batCacheid, bak) < 0)
+ logger_fatal("logger_upgrade_format: BBPrename to %s failed",
bak, 0, 0);
logger_add_bat(lg, lg->seqs_val, "seqs_val");
logbat_destroy(b);
- bm_subcommit(lg->catalog_bid, lg->catalog_nme, lg->catalog_bid,
lg->catalog_nme, NULL, lg->debug);
+ if (bm_subcommit(lg->catalog_bid, lg->catalog_nme, lg->catalog_bid,
lg->catalog_nme, NULL, lg->debug) < 0)
+ logger_fatal("logger_upgrade_format: commit of logger
conversion failed", 0, 0, 0);
logbat_destroy(lg->catalog_bid);
logbat_destroy(lg->catalog_nme);
logbat_destroy(lg->snapshots_bid);
@@ -1266,6 +1305,8 @@ logger_create_catalog_file(int debug, lo
lg->catalog_bid = logbat_new(TYPE_int, BATSIZE, PERSISTENT);
lg->catalog_nme = logbat_new(TYPE_str, BATSIZE, PERSISTENT);
+ if (lg->catalog_bid == NULL || lg->catalog_nme == NULL)
+ logger_fatal("logger_create_catalog_file: cannot create catalog
bats", 0, 0, 0);
if (debug & 1)
fprintf(stderr, "#create %s catalog\n", fn);
@@ -1273,13 +1314,17 @@ logger_create_catalog_file(int debug, lo
bid = lg->catalog_bid->batCacheid;
BBPincref(bid, TRUE);
snprintf(bak, BUFSIZ, "%s_catalog_bid", fn);
- BBPrename(lg->catalog_bid->batCacheid, bak);
+ if (BBPrename(lg->catalog_bid->batCacheid, bak) < 0)
+ logger_fatal("logger_create_catalog_file: BBPrename to %s
failed", bak, 0, 0);
+
/* Make persistent */
bid = lg->catalog_nme->batCacheid;
BBPincref(bid, TRUE);
snprintf(bak, BUFSIZ, "%s_catalog_nme", fn);
- BBPrename(lg->catalog_nme->batCacheid, bak);
+ if (BBPrename(lg->catalog_nme->batCacheid, bak) < 0)
+ logger_fatal("logger_create_catalog_file: BBPrename to %s
failed", bak, 0, 0);
+
if (!GDKcreatedir(filename)) {
logger_fatal("logger_create_catalog_file: cannot create
directory for log file %s\n", filename, 0, 0);
@@ -1289,10 +1334,18 @@ logger_create_catalog_file(int debug, lo
logger_fatal("logger_create_catalog_file: cannot create log
file %s\n", filename, 0, 0);
return LOG_ERR;
}
- fprintf(fp, "%06d\n\n", lg->version);
lg->id++;
- fprintf(fp, LLFMT "\n", lg->id);
- fclose(fp);
+ if (fprintf(fp, "%06d\n\n" LLFMT "\n", lg->version, lg->id) < 0) {
+ fclose(fp);
+ unlink(filename);
+ logger_fatal("logger_create_catalog_file: writing log file %s
failed",
+ filename, 0, 0);
+ }
+ if (fclose(fp) < 0) {
+ unlink(filename);
+ logger_fatal("logger_create_catalog_file: closing log file %s
failed",
+ filename, 0, 0);
+ }
fp = NULL;
if (bm_subcommit(lg->catalog_bid, lg->catalog_nme, lg->catalog_bid,
lg->catalog_nme, NULL, lg->debug) != 0) {
@@ -1438,28 +1491,39 @@ logger_load(int debug, char* fn, char fi
if (seqs_id == 0) {
lg->seqs_id = logbat_new(TYPE_int, 1, PERSISTENT);
snprintf(bak, BUFSIZ, "%s_seqs_id", fn);
- BBPrename(lg->seqs_id->batCacheid, bak);
+ if (BBPrename(lg->seqs_id->batCacheid, bak) < 0)
+ logger_fatal("logger_load: BBPrename to %s failed",
+ bak, 0, 0);
logger_add_bat(lg, lg->seqs_id, "seqs_id");
lg->seqs_val = logbat_new(TYPE_lng, 1, PERSISTENT);
snprintf(bak, BUFSIZ, "%s_seqs_val", fn);
- BBPrename(lg->seqs_val->batCacheid, bak);
+ if (BBPrename(lg->seqs_val->batCacheid, bak) < 0)
+ logger_fatal("logger_load: BBPrename to %s failed",
+ bak, 0, 0);
logger_add_bat(lg, lg->seqs_val, "seqs_val");
- BUNappend(lg->seqs_id, &id, FALSE);
- BUNappend(lg->seqs_val, &lg->id, FALSE);
+ if (BUNappend(lg->seqs_id, &id, FALSE) == NULL ||
+ BUNappend(lg->seqs_val, &lg->id, FALSE) == NULL)
+ logger_fatal("logger_load: failed to append value to "
+ "sequences bat", 0, 0, 0);
lg->snapshots_bid = logbat_new(TYPE_int, 1, PERSISTENT);
snprintf(bak, BUFSIZ, "%s_snapshots_bid", fn);
- BBPrename(lg->snapshots_bid->batCacheid, bak);
+ if (BBPrename(lg->snapshots_bid->batCacheid, bak) < 0)
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list