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 = 
"han...@cwi.nl"),
        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
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to