Changeset: 462a0dbbeab5 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/462a0dbbeab5
Branch: default
Log Message:

Merge with Dec2025 branch.


diffs (199 lines):

diff --git a/common/stream/bs.c b/common/stream/bs.c
--- a/common/stream/bs.c
+++ b/common/stream/bs.c
@@ -93,8 +93,14 @@ bs_write(stream *restrict ss, const void
                         * to the left */
                        blksize <<= 1;
                        if (!mnstr_writeSht(ss->inner, (int16_t) blksize) ||
-                           ss->inner->write(ss->inner, s->buf, 1, s->nr) != 
(ssize_t) s->nr) {
-                               mnstr_copy_error(ss, ss->inner);
+                           ss->inner->write(ss->inner, s->buf, 1, s->nr) != 
(ssize_t) s->nr
+                       ) {
+                               if (mnstr_errnr(ss->inner) != MNSTR_NO__ERROR) {
+                                       mnstr_copy_error(ss, ss->inner);
+                               } else {
+                                       mnstr_set_error(ss, MNSTR_WRITE_ERROR, 
"connection closed unexpectedly");
+                               }
+
                                s->nr = 0; /* data is lost due to error */
                                return -1;
                        }
diff --git a/common/stream/mapi_stream.c b/common/stream/mapi_stream.c
--- a/common/stream/mapi_stream.c
+++ b/common/stream/mapi_stream.c
@@ -56,6 +56,7 @@ discard(stream *s)
 struct mapi_filetransfer {
        stream *from_client; // set to NULL after sending MAPI_PROMPT3
        stream *to_client; // set to NULL when client sends empty
+       bstream *bs;
 };
 
 static ssize_t
@@ -77,7 +78,8 @@ upload_read(stream *restrict s, void *re
                        mnstr_write(state->to_client, PROMPT2, strlen(PROMPT2), 
1) != 1
                ||      mnstr_flush(state->to_client, MNSTR_FLUSH_ALL) < 0
        ) {
-               mnstr_set_error(s, mnstr_errnr(state->to_client), "%s", 
mnstr_peek_error(state->to_client));
+               state->bs->pos = state->bs->len;
+               mnstr_copy_error(s, state->to_client);
                return -1;
        }
 
@@ -92,6 +94,7 @@ upload_read(stream *restrict s, void *re
                state->from_client = NULL;
                return nread;
        } else {
+               state->bs->pos = state->bs->len;
                mnstr_set_error(s, mnstr_errnr(state->from_client), "%s", 
mnstr_peek_error(state->from_client));
                return -1;
        }
@@ -116,7 +119,15 @@ download_write(stream *restrict s, const
 {
        struct mapi_filetransfer *state = s->stream_data.p;
        stream *to = state->to_client;
-       return to->write(to, buf, elmsize, cnt);
+       ssize_t res = to->write(to, buf, elmsize, cnt);
+       if (res < 0) {
+               state->bs->pos = state->bs->len;
+               mnstr_copy_error(s, to);
+       } else if (res == 0) {
+               assert(to->eof);
+               s->eof = to->eof;
+       }
+       return res;
 }
 
 static void
@@ -205,6 +216,7 @@ setup_transfer(const char *req, const ch
        }
        state->from_client = rs;
        state->to_client = ws;
+       state->bs = bs;
        s->stream_data.p = state;
 end:
        if (msg) {
diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c
--- a/sql/backends/monet5/rel_bin.c
+++ b/sql/backends/monet5/rel_bin.c
@@ -2557,7 +2557,7 @@ rel2bin_table(backend *be, sql_rel *rel,
 {
        mvc *sql = be->mvc;
        list *l;
-       stmt *sub = NULL, *osub = NULL;
+       stmt *sub = NULL;
        node *en, *n;
        sql_exp *op = rel->r;
 
@@ -2782,8 +2782,6 @@ rel2bin_table(backend *be, sql_rel *rel,
                s = stmt_alias(be, s, exp->alias.label, rnme, exp_name(exp));
                list_append(l, s);
        }
-       if (osub && osub->nrcols)
-               list_join(l, osub->op4.lval);
        sub = stmt_list(be, l);
        return sub;
 }
diff --git a/sql/backends/monet5/sql_optimizer.c 
b/sql/backends/monet5/sql_optimizer.c
--- a/sql/backends/monet5/sql_optimizer.c
+++ b/sql/backends/monet5/sql_optimizer.c
@@ -58,7 +58,6 @@ SQLgetSpace(mvc *m, MalBlkPtr mb, int pr
 {
        sql_trans *tr = m->session->tr;
        lng size,space = 0, i;
-       str lasttable = 0;
 
        for (i = 0; i < mb->stop; i++) {
                InstrPtr p = mb->stmt[i];
@@ -84,11 +83,10 @@ SQLgetSpace(mvc *m, MalBlkPtr mb, int pr
                                continue;
 
                        /* we have to sum the cost of all three components of a 
BAT */
-                       if (c && isTable(c->t) && (lasttable == 0 || 
strcmp(lasttable,tname)==0)) {
+                       if (c && isTable(c->t)) {
                                size = SQLgetColumnSize(tr, c, access);
                                space += size;  // accumulate once per table
-                               //lasttable = tname;     invalidate this attempt
-                               if (!prepare && size == 0 && !t->system)
+                               if (!prepare && size == 0  && !t->system)
                                        setFunctionId(p, emptybindRef);
                        }
                }
diff --git a/sql/backends/monet5/sql_statement.c 
b/sql/backends/monet5/sql_statement.c
--- a/sql/backends/monet5/sql_statement.c
+++ b/sql/backends/monet5/sql_statement.c
@@ -2048,7 +2048,7 @@ select2_join2(backend *be, stmt *op1, st
 
                int r1 = op2->nr;
                int r2 = op3->nr;
-               int rs = 0;
+               /* int rs = 0; */
                q = newStmtArgs(mb, algebraRef, cmd, 12);
                if (q == NULL)
                        goto bailout;
@@ -2066,12 +2066,12 @@ select2_join2(backend *be, stmt *op1, st
                }
                if (sub) /* only for uselect2 */
                        q = pushArgument(mb, q, sub->nr);
-               if (rs) {
-                       q = pushArgument(mb, q, rs);
-               } else {
-                       q = pushArgument(mb, q, r1);
-                       q = pushArgument(mb, q, r2);
-               }
+               /* if (rs) { */
+                       /* q = pushArgument(mb, q, rs); */
+               /* } else { */
+               q = pushArgument(mb, q, r1);
+               q = pushArgument(mb, q, r2);
+               /* } */
                if (type == st_join2) {
                        q = pushNilBat(mb, q);
                        q = pushNilBat(mb, q);
@@ -3994,7 +3994,6 @@ stmt_convert(backend *be, stmt *v, stmt 
        InstrPtr q = NULL;
        const char *convert = t->type->impl, *mod = calcRef;
        int pushed = (v->cand && v->cand == sel), no_candidates = 0;
-       bool add_tz = false;
        /* convert types and make sure they are rounded up correctly */
 
        if (v->nr < 0)
@@ -4078,15 +4077,13 @@ stmt_convert(backend *be, stmt *v, stmt 
                q = pushInt(mb, q, 3);
        }
        q = pushArgument(mb, q, v->nr);
-       if (add_tz)
-                       q = pushLng(mb, q, be->mvc->timezone);
        if (sel && !pushed && !v->cand) {
                q = pushArgument(mb, q, sel->nr);
                pushed = 1;
        } else if (v->nrcols > 0 && !no_candidates) {
                q = pushNilBat(mb, q);
        }
-       if (!add_tz && (t->type->eclass == EC_DEC || 
EC_TEMP_FRAC(t->type->eclass) || EC_INTERVAL(t->type->eclass))) {
+       if (t->type->eclass == EC_DEC || EC_TEMP_FRAC(t->type->eclass) || 
EC_INTERVAL(t->type->eclass)) {
                /* digits, scale of the result decimal */
                q = pushInt(mb, q, t->digits);
                if (!EC_TEMP_FRAC(t->type->eclass))
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -3165,8 +3165,6 @@ store_hot_snapshot(sql_trans *tx, str ta
        int do_remove = 0;
        int dir_fd = -1;
        stream *tar_stream = NULL;
-       buffer *plan_buf = NULL;
-       stream *plan_stream = NULL;
        sqlstore *store = tx->store;
 
        if (!store->logger_api.get_snapshot_files) {
@@ -3262,10 +3260,6 @@ end:
                close(dir_fd);
        if (tar_stream)
                close_stream(tar_stream);
-       if (plan_stream)
-               close_stream(plan_stream);
-       if (plan_buf)
-               buffer_destroy(plan_buf);
        if (do_remove)
                (void) MT_remove(tmppath);      // Best effort, ignore the 
result
        GDKfree(tmppath);
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to