Changeset: 795e55f311d3 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=795e55f311d3
Modified Files:
        monetdb5/optimizer/opt_commonTerms.c
        monetdb5/optimizer/opt_support.c
Branch: default
Log Message:

Another step in cornering tpchds 22


diffs (27 lines):

diff --git a/monetdb5/optimizer/opt_commonTerms.c 
b/monetdb5/optimizer/opt_commonTerms.c
--- a/monetdb5/optimizer/opt_commonTerms.c
+++ b/monetdb5/optimizer/opt_commonTerms.c
@@ -170,7 +170,7 @@ OPTcommonTermsImplementation(Client cntx
                                i, getArg(p,p->argc-1), HASHinstruction(p), 
hash[HASHinstruction(p)]);
                fprintInstruction(stderr, mb, 0, p, LIST_MAL_ALL);
 #endif
-               if ( !mayhaveSideEffects(cntxt, mb, p, TRUE) && p->argc != 
p->retc &&  !isUnsafeFunction(p) && !isUpdateInstruction(p)){
+               if ( !mayhaveSideEffects(cntxt, mb, p, TRUE) && p->argc != 
p->retc &&  isLinearFlow(p) && !isUnsafeFunction(p) && !isUpdateInstruction(p)){
                        list[i] = hash[HASHinstruction(p)];
                        hash[HASHinstruction(p)] = i;
                        pushInstruction(mb,p);
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
@@ -471,6 +471,11 @@ mayhaveSideEffects(Client cntxt, MalBlkP
                return TRUE;
        if (getModuleId(p) != malRef || getFunctionId(p) != multiplexRef) 
                return hasSideEffects(mb, p, strict);
+       //  a manifold instruction can also have side effects.
+       //  for this to check we need the function signature, not its function 
address.
+       //  The easy way out now is to consider all manifold instructions as 
potentially having side effects.
+       if ( getModuleId(p) == malRef && getFunctionId(p) == manifoldRef)
+               return TRUE;
        if (MANIFOLDtypecheck(cntxt,mb,p,1) == NULL)
                return TRUE;
        return FALSE;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to