Changeset: 8481cbadd976 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8481cbadd976
Modified Files:
        MonetDB.spec
        gdk/gdk_logger.c
        gdk/gdk_utils.c
        sql/test/BugTracker-2020/Tests/All
Branch: oscar
Log Message:

Merge with Jun2020 branch.


diffs (239 lines):

diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -753,7 +753,7 @@ fi
 
 %files selinux
 %defattr(-,root,root,0755)
-%doc buildtools/selinux/*
+%doc buildtools/selinux/monetdb.*
 %{_datadir}/selinux/*/monetdb.pp
 
 %endif
diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -97,7 +97,7 @@
 
 #define NAME(name,tpe,id) (name?name:"tpe id")
 
-#define LOG_DISABLED(lg) ((lg)->debug&128)
+#define LOG_DISABLED(lg) ((lg)->debug&128 || (lg)->inmemory)
 
 static const char *log_commands[] = {
        NULL,
@@ -1069,9 +1069,9 @@ logger_open(logger *lg)
        char id[BUFSIZ];
        char *filename;
 
-       if (lg->inmemory || LOG_DISABLED(lg)) {
+       if (LOG_DISABLED(lg)) {
                lg->end = 0;
-               if (lg->id) /* go back too last used id */
+               if (lg->id) /* go back to last used id */
                        lg->id--;
                return GDK_SUCCEED;
        }
@@ -1104,7 +1104,7 @@ logger_open(logger *lg)
 static inline void
 logger_close(logger *lg)
 {
-       if (!lg->inmemory)
+       if (!LOG_DISABLED(lg))
                close_stream(lg->log);
        lg->log = NULL;
 }
@@ -1691,7 +1691,7 @@ logger_load(int debug, const char *fn, c
        bool needcommit = false;
        int dbg = GDKdebug;
 
-       if (!lg->inmemory && !LOG_DISABLED(lg)) {
+       if (!LOG_DISABLED(lg)) {
                if ((filenamestr = GDKfilepath(farmid, lg->dir, LOGFILE, NULL)) 
== NULL)
                        goto error;
                len = snprintf(filename, FILENAME_MAX, "%s", filenamestr);
@@ -1721,7 +1721,7 @@ logger_load(int debug, const char *fn, c
        lg->seqs_val = NULL;
        lg->dseqs = NULL;
 
-       if (!lg->inmemory && !LOG_DISABLED(lg)) {
+       if (!LOG_DISABLED(lg)) {
                /* try to open logfile backup, or failing that, the file
                 * itself. we need to know whether this file exists when
                 * checking the database consistency later on */
@@ -1808,7 +1808,7 @@ logger_load(int debug, const char *fn, c
                        goto error;
                }
 
-               if (!lg->inmemory && !LOG_DISABLED(lg)) {
+               if (!LOG_DISABLED(lg)) {
                        if (GDKcreatedir(filename) != GDK_SUCCEED) {
                                GDKerror("cannot create directory for log file 
%s\n",
                                         filename);
@@ -2466,8 +2466,12 @@ logger_exit(logger *lg)
        char filename[FILENAME_MAX];
        int len, farmid;
 
-       if (lg->inmemory || LOG_DISABLED(lg)) {
+       if (LOG_DISABLED(lg)) {
                logger_close(lg);
+               if (logger_commit(lg) != GDK_SUCCEED) {
+                       TRC_CRITICAL(GDK, "logger_commit failed\n");
+                       return GDK_FAIL;
+               }
                lg->changes = 0;
                return GDK_SUCCEED;
        }
@@ -2567,7 +2571,7 @@ logger_cleanup(logger *lg)
        char buf[BUFSIZ];
        FILE *fp = NULL;
 
-       if (lg->inmemory || LOG_DISABLED(lg))
+       if (LOG_DISABLED(lg))
                return GDK_SUCCEED;
 
        farmid = BBPselectfarm(PERSISTENT, 0, offheap);
@@ -2682,7 +2686,7 @@ log_bat_persists(logger *lg, BAT *b, con
                l.flag = (l.flag == LOG_USE)?LOG_USE_ID:LOG_CREATE_ID;
        l.tid = lg->tid;
        lg->changes++;
-       if (!lg->inmemory && !LOG_DISABLED(lg)) {
+       if (!LOG_DISABLED(lg)) {
                if (log_write_format(lg, &l) != GDK_SUCCEED ||
                    log_write_string(lg, name) != GDK_SUCCEED ||
                    (tpe && log_write_id(lg, tpe, id) != GDK_SUCCEED))
@@ -2715,7 +2719,7 @@ log_bat_persists(logger *lg, BAT *b, con
                }
                return GDK_SUCCEED;
        }
-       if (lg->inmemory || LOG_DISABLED(lg))
+       if (LOG_DISABLED(lg))
                return GDK_SUCCEED;
 
        ha = "vid";
@@ -2774,7 +2778,7 @@ log_bat_transient(logger *lg, const char
                //      assert(lg->tid == tid);
        }
 
-       if (lg->inmemory || LOG_DISABLED(lg))
+       if (LOG_DISABLED(lg))
                return GDK_SUCCEED;
 
        if (log_write_format(lg, &l) != GDK_SUCCEED ||
@@ -2801,7 +2805,7 @@ log_delta(logger *lg, BAT *uid, BAT *uva
        l.nr = (BUNlast(uval));
        lg->changes += l.nr;
 
-       if (LOG_DISABLED(lg) || lg->inmemory) {
+       if (LOG_DISABLED(lg)) {
                /* logging is switched off */
                return GDK_SUCCEED;
        }
@@ -2870,7 +2874,7 @@ log_bat(logger *lg, BAT *b, const char *
        l.nr = (BUNlast(b) - b->batInserted);
        lg->changes += (b->batInserted)?l.nr:1; /* initial large inserts is 
counted as 1 change */
 
-       if (LOG_DISABLED(lg) || lg->inmemory) {
+       if (LOG_DISABLED(lg)) {
                /* logging is switched off */
                return GDK_SUCCEED;
        }
@@ -2916,7 +2920,7 @@ log_bat_clear(logger *lg, const char *na
        l.tid = lg->tid;
        lg->changes += l.nr;
 
-       if (LOG_DISABLED(lg) || lg->inmemory) {
+       if (LOG_DISABLED(lg)) {
                /* logging is switched off */
                return GDK_SUCCEED;
        }
@@ -2937,7 +2941,7 @@ log_tstart(logger *lg)
 {
        logformat l;
 
-       if (LOG_DISABLED(lg) || lg->inmemory)
+       if (LOG_DISABLED(lg))
                return GDK_SUCCEED;
 
        l.flag = LOG_START;
@@ -2959,7 +2963,7 @@ static gdk_return
 pre_allocate(logger *lg)
 {
        // FIXME: this causes serious issues on Windows at least with MinGW
-       assert(!lg->inmemory && !LOG_DISABLED(lg));
+       assert(!LOG_DISABLED(lg));
 #ifndef WIN32
        lng p;
        p = (lng) getfilepos(getFile(lg->log));
@@ -3018,7 +3022,7 @@ log_tend(logger *lg)
                                   lg->snapshots_tid, NULL, NULL, 
lg->dsnapshots, NULL, lg->debug);
                BBPunfix(bids->batCacheid);
        }
-       if (LOG_DISABLED(lg) || lg->inmemory)
+       if (LOG_DISABLED(lg))
                return GDK_SUCCEED;
        l.flag = LOG_END;
        l.tid = lg->tid;
@@ -3040,7 +3044,7 @@ log_abort(logger *lg)
 {
        logformat l;
 
-       if (LOG_DISABLED(lg) || lg->inmemory)
+       if (LOG_DISABLED(lg))
                return GDK_SUCCEED;
        if (lg->debug & 1)
                fprintf(stderr, "#log_abort %d\n", lg->tid);
@@ -3060,7 +3064,7 @@ log_sequence_(logger *lg, int seq, lng v
 {
        logformat l;
 
-       if (LOG_DISABLED(lg) || lg->inmemory)
+       if (LOG_DISABLED(lg))
                return GDK_SUCCEED;
        l.flag = LOG_SEQ;
        l.tid = lg->tid;
diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c
--- a/gdk/gdk_utils.c
+++ b/gdk/gdk_utils.c
@@ -1360,10 +1360,7 @@ GDKusec(void)
        return (lng) (f.QuadPart / 10);
 #elif defined(HAVE_CLOCK_GETTIME)
        struct timespec ts;
-#ifdef CLOCK_REALTIME_COARSE
-       if (clock_gettime(CLOCK_REALTIME_COARSE, &ts) < 0)
-#endif
-               (void) clock_gettime(CLOCK_REALTIME, &ts);
+       clock_gettime(CLOCK_REALTIME, &ts);
        return (lng) (ts.tv_sec * LL_CONSTANT(1000000) + ts.tv_nsec / 1000);
 #elif defined(HAVE_GETTIMEOFDAY)
        struct timeval tv;
diff --git a/sql/test/BugTracker-2020/Tests/All 
b/sql/test/BugTracker-2020/Tests/All
--- a/sql/test/BugTracker-2020/Tests/All
+++ b/sql/test/BugTracker-2020/Tests/All
@@ -16,3 +16,4 @@ copy-decimal-with-space.Bug-6917
 isauuid.Bug-6934
 tpch-cube.Bug-6938
 HAVE_PYMONETDB?remote-table-like.Bug-6841
+KNOWNFAIL?copy-empty-blob.Bug-6948
diff --git a/sql/test/BugTracker-2020/Tests/copy-empty-blob.Bug-6948.sql 
b/sql/test/BugTracker-2020/Tests/copy-empty-blob.Bug-6948.sql
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2020/Tests/copy-empty-blob.Bug-6948.sql
@@ -0,0 +1,13 @@
+start transaction;
+create table blobtbl (i int, b blob);
+
+-- the following COPY INTO should succeed
+copy into blobtbl from stdin delimiters ',','\n','"';
+0,NULL
+1,12ff
+2,""
+3,
+
+-- This should return 4 rows
+select * form blobtbl;
+rollback;
diff --git a/sql/test/BugTracker-2020/Tests/copy-empty-blob.Bug-6948.stable.err 
b/sql/test/BugTracker-2020/Tests/copy-empty-blob.Bug-6948.stable.err
new file mode 100644
diff --git a/sql/test/BugTracker-2020/Tests/copy-empty-blob.Bug-6948.stable.out 
b/sql/test/BugTracker-2020/Tests/copy-empty-blob.Bug-6948.stable.out
new file mode 100644
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to