Changeset: bc6eb7167efe for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/bc6eb7167efe
Modified Files:
        gdk/gdk_logger.c
        monetdb5/modules/mal/tablet.c
Branch: Oct2020
Log Message:

Merge with Jun2020 branch.


diffs (54 lines):

diff --git a/monetdb5/modules/mal/tablet.c b/monetdb5/modules/mal/tablet.c
--- a/monetdb5/modules/mal/tablet.c
+++ b/monetdb5/modules/mal/tablet.c
@@ -1235,12 +1235,13 @@ SQLproducer(void *p)
        bool blocked[MAXBUFFERS] = { false };
        bool ateof[MAXBUFFERS] = { false };
        BUN cnt = 0, bufcnt[MAXBUFFERS] = { 0 };
-       char *end, *e, *s = NULL, *base;
+       char *end = NULL, *e = NULL, *s = NULL, *base;
        const char *rsep = task->rsep;
        size_t rseplen = strlen(rsep), partial = 0;
        char quote = task->quote;
        dfa_t rdfa;
        lng rowno = 0;
+       int more = 0;
 
        MT_sema_down(&task->producer);
        if (task->id < 0) {
@@ -1447,6 +1448,7 @@ SQLproducer(void *p)
                        task->cur = cur;
                        task->ateof = ateof[cur];
                        task->cnt = bufcnt[cur];
+                       more = !ateof[cur] || (e && e < end && task->top[cur] 
== task->limit);
 /*                     TRC_DEBUG(MAL_SERVER, "SQL producer got buffer '%d' 
filled with '%d' records\n", cur, task->top[cur]);*/
 
                        MT_sema_up(&task->consumer);
@@ -1464,7 +1466,7 @@ SQLproducer(void *p)
 /*             TRC_DEBUG(MAL_SERVER, "Continue producer buffer: %d\n", cur);*/
 
                /* we ran out of input? */
-               if (task->ateof) {
+               if (task->ateof && !more) {
 /*                     TRC_DEBUG(MAL_SERVER, "Producer encountered eof\n");*/
                        GDKfree(rdfa);
                        return;
@@ -1528,7 +1530,7 @@ SQLload_file(Client cntxt, Tablet *as, b
        BUN i, attr;
        READERtask task;
        READERtask ptask[MAXWORKERS];
-       int threads = (maxrow< 0 || maxrow > (1 << 16)) ? (GDKnr_threads < 
MAXWORKERS && GDKnr_threads > 1 ? GDKnr_threads - 1 : MAXWORKERS - 1) : 1;
+       int threads = (maxrow< 0 || maxrow > (1 << 16)) && GDKnr_threads > 1 ? 
(GDKnr_threads < MAXWORKERS ? GDKnr_threads - 1 : MAXWORKERS - 1) : 1;
        lng lio = 0, tio, t1 = 0, total = 0, iototal = 0;
        char name[MT_NAME_LEN];
 
@@ -1836,6 +1838,9 @@ SQLload_file(Client cntxt, Tablet *as, b
                        task.maxrow = cnt;
                        task.state = ENDOFCOPY;
                }
+               if (task.ateof && task.top[task.cur] < task.limit && cnt != 
task.maxrow)
+                       break;
+               task.top[task.cur] = 0;
                MT_sema_up(&task.producer);
        }
 
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to