Changeset: 639e9b5688f8 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/639e9b5688f8
Modified Files:
        monetdb5/optimizer/opt_dataflow.c
Branch: parappend
Log Message:

Replicate corner case around bat.append


diffs (38 lines):

diff --git a/monetdb5/optimizer/opt_dataflow.c 
b/monetdb5/optimizer/opt_dataflow.c
--- a/monetdb5/optimizer/opt_dataflow.c
+++ b/monetdb5/optimizer/opt_dataflow.c
@@ -307,7 +307,7 @@ checkBreakpoint(Client cntxt, MalBlkPtr 
 }
 
 static void
-decideRegionType(Client cntxt, MalBlkPtr mb, InstrPtr p, region_state *state)
+decideRegionType(Client cntxt, MalBlkPtr mb, InstrPtr p, States states, 
region_state *state)
 {
        (void) cntxt;
 
@@ -323,6 +323,16 @@ decideRegionType(Client cntxt, MalBlkPtr
                state->type = singleton_region;
        } else if (isUnsafeFunction(p)) {
                state->type = singleton_region;
+       } else if (
+               isUpdateInstruction(p)
+               && getModuleId(p) != sqlRef
+               && (getState(states, p, p->retc) & (VARREAD | VARBLOCK)) == 0
+       ) {
+               // Special case. Unless they're from the sql module, 
instructions with
+               // names like 'append', 'update', 'delete', 'grow', etc., are 
expected
+               // to express their side effects as data dependencies, for 
example,
+               //     X5 := bat.append(X_5, ...)
+               state->type = dataflow_region;
        } else if (hasSideEffects(mb, p, false)) {
                state->type = singleton_region;
        } else if (isMultiplex(p)) {
@@ -456,7 +466,7 @@ OPTdataflowImplementation_wrapped(Client
                        memset((char*) states, 0, vlimit * sizeof(char));
                        top = 0;
                        start = i;
-                       decideRegionType(cntxt, mb, p, &state);
+                       decideRegionType(cntxt, mb, p, states, &state);
                }
 
                // remember you assigned/read variables
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to