Changeset: 2a4270b6947c for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/2a4270b6947c Branch: default Log Message:
Merge with Sep2022 branch. diffs (196 lines): diff --git a/gdk/ChangeLog.Jan2022 b/gdk/ChangeLog.Jan2022 --- a/gdk/ChangeLog.Jan2022 +++ b/gdk/ChangeLog.Jan2022 @@ -1,3 +1,7 @@ # ChangeLog file for GDK # This file is updated with Maddlog +* Wed Aug 24 2022 Sjoerd Mullender <sjo...@acm.org> +- The median_avg and quantile_avg returned bogus results in the + non-grouped case (i.e. something like SELECT sys.median_avg(i) FROM t). + diff --git a/gdk/gdk_aggr.c b/gdk/gdk_aggr.c --- a/gdk/gdk_aggr.c +++ b/gdk/gdk_aggr.c @@ -3908,8 +3908,16 @@ BATmax(BAT *b, void *aggr) #define DO_QUANTILE_AVG(TPE) \ do { \ - TPE low = *(TPE*) BUNtloc(bi, r + (BUN) hi); \ - TPE high = *(TPE*) BUNtloc(bi, r + (BUN) lo); \ + BUN idxlo, idxhi; \ + if (ords) { \ + idxlo = ords[r + (BUN) lo] - b->hseqbase; \ + idxhi = ords[r + (BUN) hi] - b->hseqbase; \ + } else { \ + idxlo = r + (BUN) lo; \ + idxhi = r + (BUN) hi; \ + } \ + TPE low = *(TPE*) BUNtloc(bi, idxhi); \ + TPE high = *(TPE*) BUNtloc(bi, idxlo); \ if (is_##TPE##_nil(low) || is_##TPE##_nil(high)) { \ val = dbl_nil; \ nils++; \ @@ -4074,6 +4082,7 @@ doBATgroupquantile(BAT *b, BAT *g, BAT * double f = (p - r - 1) * quantile; double lo = floor(f); double hi = ceil(f); + const oid *const ords = NULL; switch (ATOMbasetype(tp)) { case TYPE_bte: DO_QUANTILE_AVG(bte); diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c --- a/gdk/gdk_bat.c +++ b/gdk/gdk_bat.c @@ -2180,8 +2180,8 @@ backup_new(Heap *hp, bool lock) struct stat st; /* check for an existing X.new in BATDIR, BAKDIR and SUBDIR */ - batpath = GDKfilepath(hp->farmid, BATDIR, hp->filename, ".new"); - bakpath = GDKfilepath(hp->farmid, BAKDIR, hp->filename, ".new"); + batpath = GDKfilepath(hp->farmid, BATDIR, hp->filename, "new"); + bakpath = GDKfilepath(hp->farmid, BAKDIR, hp->filename, "new"); if (batpath != NULL && bakpath != NULL) { /* file actions here interact with the global commits */ if (lock) diff --git a/sql/test/BugTracker-2020/Tests/median_avg-nulls.Bug-6807.test b/sql/test/BugTracker-2020/Tests/median_avg-nulls.Bug-6807.test --- a/sql/test/BugTracker-2020/Tests/median_avg-nulls.Bug-6807.test +++ b/sql/test/BugTracker-2020/Tests/median_avg-nulls.Bug-6807.test @@ -6,12 +6,12 @@ 5.500 query R rowsort SELECT median_avg(c1) FROM (VALUES (1), (NULL)) t1(c1) ---- -NULL +1.000 query R rowsort SELECT quantile_avg(c1, 0.2) FROM (VALUES (1), (NULL)) t1(c1) ---- -NULL +1.000 query R rowsort SELECT quantile_avg(c1, 0.1) FROM (VALUES (1), (10)) t1(c1) diff --git a/sql/test/sys-schema/Tests/ValidateSystemCatalogTables.SQL.py b/sql/test/sys-schema/Tests/ValidateSystemCatalogTables.SQL.py --- a/sql/test/sys-schema/Tests/ValidateSystemCatalogTables.SQL.py +++ b/sql/test/sys-schema/Tests/ValidateSystemCatalogTables.SQL.py @@ -17,7 +17,11 @@ if __name__ == '__main__': cmd = ['java', CLIENT, '-h', HOST, '-p', MAPIPORT, '-d', TSTDB, '-f', os.path.join(TSTSRCBASE, TSTDIR, 'Tests', 'ValidateSystemCatalogTables.sql')] try: p = run(cmd, stdout=PIPE, stderr=PIPE, check=True, encoding='utf-8') - sys.stderr.write(p.stdout) - sys.stderr.write(p.stderr) + pout = str(p.stdout) + if pout != "": + print(pout) + perr = str(p.stderr) + if perr != "": + print(perr) except CalledProcessError as e: raise SystemExit(e.stderr) diff --git a/tools/merovingian/ChangeLog.Jan2022 b/tools/merovingian/ChangeLog.Jan2022 --- a/tools/merovingian/ChangeLog.Jan2022 +++ b/tools/merovingian/ChangeLog.Jan2022 @@ -1,3 +1,7 @@ # ChangeLog file for sql/src/backends/monet5/merovingian # This file is updated with mchangelog +* Wed Aug 24 2022 Sjoerd Mullender <sjo...@acm.org> +- In certain cases a log message was logged over and over again. + This has been fixed. + diff --git a/tools/merovingian/daemon/handlers.c b/tools/merovingian/daemon/handlers.c --- a/tools/merovingian/daemon/handlers.c +++ b/tools/merovingian/daemon/handlers.c @@ -298,7 +298,7 @@ childhandler(void) while (p != NULL) { if (p->pid == pid) { /* log everything that's still in the pipes */ - logFD(p, 0, "MSG", p->dbname, (long long int)p->pid, _mero_logfile, 1); + logFD(p, 0, "MSG", p->dbname, (long long int)p->pid, _mero_logfile, true); p->pid = -1; /* indicate the process is dead */ /* close the descriptors */ diff --git a/tools/merovingian/daemon/merovingian.c b/tools/merovingian/daemon/merovingian.c --- a/tools/merovingian/daemon/merovingian.c +++ b/tools/merovingian/daemon/merovingian.c @@ -139,6 +139,7 @@ logFD(dpair dp, int fd, const char *type time_t now; char buf[8096]; ssize_t len = 0; + ssize_t last = 0; char *p, *q; struct tm *tmp; char mytime[20]; @@ -149,8 +150,10 @@ logFD(dpair dp, int fd, const char *type ssize_t n; repeat: n = read(dp->input[fd].fd, buf + len, sizeof(buf) - len - 1); - if (n <= 0) + if (n <= 0) { + rest = false; break; + } len += n; buf[len] = 0; } while (buf[len - 1] != '\n' && len < (ssize_t) sizeof(buf) - 1); @@ -159,7 +162,7 @@ logFD(dpair dp, int fd, const char *type now = time(NULL); tmp = localtime(&now); strftime(mytime, sizeof(mytime), "%Y-%m-%d %H:%M:%S", tmp); - for (q = buf; *q; q = p + 1) { + for (q = buf + last; *q; q = p + 1) { p = strchr(q, '\n'); if (p == NULL) { if (q > buf) { @@ -167,6 +170,7 @@ logFD(dpair dp, int fd, const char *type * just continue reading */ len = strlen(q); memmove(buf, q, len); + last = 0; goto repeat; } /* we must have received a ridiculously long line */ @@ -177,6 +181,7 @@ logFD(dpair dp, int fd, const char *type mytime, type, dbname, pid, q); break; } + last = p + 1 - buf; if (p == q) { /* empty line, don't bother */ continue; @@ -299,18 +304,18 @@ logListener(void *x) for (int i = 0; i < nfds; i++) { if (pfd[i].fd == w->input[0].fd && pfd[i].revents & POLLIN) logFD(w, 0, "MSG", w->dbname, - (long long int)w->pid, _mero_logfile, 0); + (long long int)w->pid, _mero_logfile, false); else if (pfd[i].fd == w->input[1].fd && pfd[i].revents & POLLIN) logFD(w, 1, "ERR", w->dbname, - (long long int)w->pid, _mero_logfile, 0); + (long long int)w->pid, _mero_logfile, false); } #else if (FD_ISSET(w->input[0].fd, &readfds) != 0) logFD(w, 0, "MSG", w->dbname, - (long long int)w->pid, _mero_logfile, 0); + (long long int)w->pid, _mero_logfile, false); if (w->input[1].fd != w->input[0].fd && FD_ISSET(w->input[1].fd, &readfds) != 0) logFD(w, 1, "ERR", w->dbname, - (long long int)w->pid, _mero_logfile, 0); + (long long int)w->pid, _mero_logfile, false); #endif w->flag &= ~1; } diff --git a/tools/merovingian/daemon/multiplex-funnel.c b/tools/merovingian/daemon/multiplex-funnel.c --- a/tools/merovingian/daemon/multiplex-funnel.c +++ b/tools/merovingian/daemon/multiplex-funnel.c @@ -866,7 +866,7 @@ multiplexThread(void *d) while (p != NULL) { if (p->type == MEROFUN && strcmp(p->dbname, m->name) == 0) { /* log everything that's still in the pipes */ - logFD(p, 0, "MSG", p->dbname, (long long int)p->pid, _mero_logfile, 1); + logFD(p, 0, "MSG", p->dbname, (long long int)p->pid, _mero_logfile, true); /* remove from the list */ q->next = p->next; /* close the descriptors */ _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org