Changeset: c4dd5cbbfdd7 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/c4dd5cbbfdd7
Modified Files:
        monetdb5/mal/mal_instruction.c
        monetdb5/optimizer/opt_pushselect.c
        sql/backends/monet5/sql.c
        sql/server/rel_basetable.c
Branch: Aug2024
Log Message:

Merge with Dec2023 branch.


diffs (91 lines):

diff --git a/monetdb5/mal/mal_instruction.c b/monetdb5/mal/mal_instruction.c
--- a/monetdb5/mal/mal_instruction.c
+++ b/monetdb5/mal/mal_instruction.c
@@ -169,22 +169,6 @@ resizeMalBlk(MalBlkPtr mb, int elements)
                        return -1;
                }
        }
-
-
-       if (elements > mb->vsize) {
-               VarRecord *ovar = mb->var;
-               mb->var = GDKrealloc(mb->var, elements * sizeof(VarRecord));
-               if (mb->var) {
-                       memset(((char *) mb->var) +sizeof(VarRecord) * 
mb->vsize, 0,
-                                  (elements - mb->vsize) * sizeof(VarRecord));
-                       mb->vsize = elements;
-               } else {
-                       mb->var = ovar;
-                       mb->errors = createMalException(mb, 0, TYPE,
-                                                                               
        SQLSTATE(HY013) MAL_MALLOC_FAIL);
-                       return -1;
-               }
-       }
        return 0;
 }
 
@@ -1117,13 +1101,11 @@ void
 pushInstruction(MalBlkPtr mb, InstrPtr p)
 {
        int i;
-       int extra;
        InstrPtr q;
        if (p == NULL)
                return;
-       extra = mb->vsize - mb->vtop;   /* the extra variables already known */
        if (mb->stop + 1 >= mb->ssize) {
-               int s = ((mb->ssize + extra) / MALCHUNK + 1) * MALCHUNK;
+               int s = (mb->ssize / MALCHUNK + 1) * MALCHUNK;
                if (resizeMalBlk(mb, s) < 0) {
                        /* we are now left with the situation that the new
                         * instruction is dangling.  The hack is to take an
diff --git a/monetdb5/optimizer/opt_pushselect.c 
b/monetdb5/optimizer/opt_pushselect.c
--- a/monetdb5/optimizer/opt_pushselect.c
+++ b/monetdb5/optimizer/opt_pushselect.c
@@ -432,10 +432,8 @@ OPTpushselectImplementation(Client cntxt
        slices = (int *) GDKzalloc(sizeof(int) * mb->vtop);
        rslices = (bool *) GDKzalloc(sizeof(bool) * mb->vtop);
        oclean = (bool *) GDKzalloc(sizeof(bool) * mb->vtop);
-       if (!nvars || !slices || !rslices || !oclean
-               || newMalBlkStmt(mb,
-                                                mb->stop + (5 * 
push_down_delta) + (2 * nr_topn)) <
-               0) {
+       if (!nvars || !slices || !rslices || !oclean ||
+               newMalBlkStmt(mb, mb->stop + (5 * push_down_delta) + (2 * 
nr_topn)) < 0) {
                mb->stmt = old;
                GDKfree(vars);
                GDKfree(nvars);
diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -5105,14 +5105,16 @@ SQLunionfunc(Client cntxt, MalBlkPtr mb,
                                                i=1;
                                                for (ii = 0; i < pci->retc && 
!ret; ii++, i++) {
                                                        BAT *b;
-
-                                                       if (!(b = 
BATdescriptor(omb?env->stk[q->argv[ii]].val.bval:nstk->stk[q->argv[ii]].val.bval)))
+                                                       ValPtr vp = omb ? 
env->stk + q->argv[ii] : nstk->stk + q->argv[ii];
+
+                                                       if (!(b = 
BATdescriptor(vp->val.bval)))
                                                                ret = 
createException(MAL, "sql.unionfunc", SQLSTATE(HY002) RUNTIME_OBJECT_MISSING);
                                                        else if 
(BATappend(res[i], b, NULL, FALSE) != GDK_SUCCEED)
                                                                ret = 
createException(MAL, "sql.unionfunc", GDK_EXCEPTION);
                                                        if (b) {
                                                                
BBPrelease(b->batCacheid); /* release ref from env stack */
                                                                
BBPunfix(b->batCacheid);   /* free pointer */
+                                                               VALempty(vp);
                                                        }
                                                }
                                        }
diff --git a/sql/server/rel_basetable.c b/sql/server/rel_basetable.c
--- a/sql/server/rel_basetable.c
+++ b/sql/server/rel_basetable.c
@@ -231,7 +231,7 @@ bind_col_exp(mvc *sql, rel_base_t *ba, c
 static sql_exp *
 bind_col(mvc *sql, sql_rel *rel, char *name, sql_column *c )
 {
-       if (rel_base_use(sql, rel, c->colnr)) {
+       if (!c || rel_base_use(sql, rel, c->colnr)) {
                /* error */
                return NULL;
        }
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to