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