Changeset: b84ceba8719a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/b84ceba8719a
Modified Files:
        monetdb5/optimizer/opt_matpack.c
        monetdb5/optimizer/opt_mergetable.c
        monetdb5/optimizer/opt_pipes.c
        monetdb5/optimizer/opt_reorder.c
        monetdb5/optimizer/opt_support.c
        monetdb5/optimizer/opt_support.h
Branch: default
Log Message:

Merge with Mar2025 branch.


diffs (146 lines):

diff --git a/monetdb5/optimizer/opt_matpack.c b/monetdb5/optimizer/opt_matpack.c
--- a/monetdb5/optimizer/opt_matpack.c
+++ b/monetdb5/optimizer/opt_matpack.c
@@ -27,10 +27,6 @@ OPTmatpackImplementation(Client cntxt, M
        InstrPtr *old = NULL;
        str msg = MAL_SUCCEED;
 
-       if (!isOptimizerUsed(mb, pci, mergetableRef)) {
-               goto wrapup;
-       }
-
        (void) cntxt;
        (void) stk;
        for (i = 1; i < mb->stop; i++)
diff --git a/monetdb5/optimizer/opt_mergetable.c 
b/monetdb5/optimizer/opt_mergetable.c
--- a/monetdb5/optimizer/opt_mergetable.c
+++ b/monetdb5/optimizer/opt_mergetable.c
@@ -2292,8 +2292,6 @@ OPTmergetableImplementation(Client cntxt
        char *group_input;
        str msg = MAL_SUCCEED;
 
-       if (!isOptimizerUsed(mb, pci, mitosisRef))
-               goto cleanup2;
        old = mb->stmt;
        oldtop = mb->stop;
 
@@ -2912,7 +2910,6 @@ OPTmergetableImplementation(Client cntxt
                if (!msg)
                        msg = chkDeclarations(mb);
        }
-  cleanup2:
        /* keep actions taken as a fake argument */
        if (msg == MAL_SUCCEED) {
                (void) pushInt(mb, pci, actions);
diff --git a/monetdb5/optimizer/opt_pipes.c b/monetdb5/optimizer/opt_pipes.c
--- a/monetdb5/optimizer/opt_pipes.c
+++ b/monetdb5/optimizer/opt_pipes.c
@@ -261,7 +261,6 @@ validatePipe(struct pipeline *pipe)
 {
        bool mitosis = false, deadcode = false, mergetable = false;
        bool multiplex = false, garbage = false, generator = false, remap = 
false;
-       int i;
 
        if (pipe->def == NULL || pipe->def[0] == NULL)
                throw(MAL, "optimizer.validate", SQLSTATE(42000) "missing 
optimizers");
@@ -274,7 +273,7 @@ validatePipe(struct pipeline *pipe)
                throw(MAL, "optimizer.validate",
                          SQLSTATE(42000) "'inline' should be the first\n");
 
-       for (i = 0; pipe->def[i]; i++) {
+       for (int i = 0; pipe->def[i]; i++) {
                const char *fname = pipe->def[i];
                if (garbage)
                        throw(MAL, "optimizer.validate",
@@ -286,8 +285,17 @@ validatePipe(struct pipeline *pipe)
                        remap = true;
                else if (strcmp(fname, "mitosis") == 0)
                        mitosis = true;
-               else if (strcmp(fname, "mergetable") == 0)
+               else if (strcmp(fname, "mergetable") == 0) {
+                       if (!mitosis)
+                               throw(MAL, "optimizer.validate",
+                                         SQLSTATE(42000) "'mergetable' 
requires 'mitosis'\n");
                        mergetable = true;
+               } else if (strcmp(fname, "matpack") == 0 && !mergetable)
+                       throw(MAL, "optimizer.validate",
+                                 SQLSTATE(42000) "'matpack' requires 
'mergetable'\n");
+               else if (strcmp(fname, "reorder") == 0 && !mitosis)
+                       throw(MAL, "optimizer.validate",
+                                 SQLSTATE(42000) "'reorder' requires 
'mitosis'\n");
                else if (strcmp(fname, "multiplex") == 0)
                        multiplex = true;
                else if (strcmp(fname, "generator") == 0)
diff --git a/monetdb5/optimizer/opt_reorder.c b/monetdb5/optimizer/opt_reorder.c
--- a/monetdb5/optimizer/opt_reorder.c
+++ b/monetdb5/optimizer/opt_reorder.c
@@ -40,7 +40,7 @@
 
 /* Insert the instruction immediately after a previous instruction that
  * generated an argument needed.
- * If non can be found, add it to the end.
+ * If none can be found, add it to the end.
  * Be aware of side-effect instructions, they may not be skipped.
  */
 str
@@ -57,9 +57,6 @@ OPTreorderImplementation(Client cntxt, M
 
        for (i = 0; i < MAXSLICES; i++)
                top[i] = 0;
-       if (!isOptimizerUsed(mb, pci, mitosisRef)) {
-               goto wrapup;
-       }
        (void) cntxt;
        (void) stk;
 
@@ -173,7 +170,6 @@ OPTreorderImplementation(Client cntxt, M
        /* keep all actions taken as a post block comment */
        //mnstr_printf(cntxt->fdout,"REORDER RESULT ");
        //printFunction(cntxt->fdout, mb, 0, LIST_MAL_ALL);
-  wrapup:
        for (i = 0; i <= blkcnt; i++)
                if (top[i])
                        GDKfree(blocks[i]);
diff --git a/monetdb5/optimizer/opt_support.c b/monetdb5/optimizer/opt_support.c
--- a/monetdb5/optimizer/opt_support.c
+++ b/monetdb5/optimizer/opt_support.c
@@ -59,29 +59,6 @@ isOptimizerEnabled(MalBlkPtr mb, const c
        return 0;
 }
 
-/*
- * Find if an optimizer 'opt' has run before the instruction 'p'.
- */
-bool
-isOptimizerUsed(MalBlkPtr mb, InstrPtr p, const char *opt)
-{
-       bool p_found = false;
-
-       if (getModuleId(p) == optimizerRef && getFunctionId(p) == 
defaultfastRef)
-               return true;
-       for (int i = mb->stop - 1; i > 0; i--) {
-               InstrPtr q = getInstrPtr(mb, i);
-
-               p_found |= q == p;              /* the optimizer to find must 
come before p */
-               if (q && q->token == ENDsymbol)
-                       return false;
-               if (p_found && q && q != p && getModuleId(q) == optimizerRef
-                       && getFunctionId(q) == opt)
-                       return true;
-       }
-       return false;
-}
-
 /* Simple insertion statements do not require complex optimizer steps */
 int
 isSimpleSQL(MalBlkPtr mb)
diff --git a/monetdb5/optimizer/opt_support.h b/monetdb5/optimizer/opt_support.h
--- a/monetdb5/optimizer/opt_support.h
+++ b/monetdb5/optimizer/opt_support.h
@@ -53,6 +53,5 @@ extern int isSubJoin(InstrPtr q);
 extern int isMultiplex(InstrPtr q);
 extern int isUnion(InstrPtr q);
 extern int isOptimizerEnabled(MalBlkPtr mb, const char *opt);
-extern bool isOptimizerUsed(MalBlkPtr mb, InstrPtr p, const char *opt);
 
 #endif /* _OPT_SUPPORT_H */
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to