Changeset: ba45789614bb for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ba45789614bb
Modified Files:
        clients/Tests/exports.stable.out
        monetdb5/optimizer/opt_dataflow.c
        monetdb5/optimizer/opt_mergetable.c
        monetdb5/optimizer/opt_support.c
        monetdb5/optimizer/opt_support.h
        
sql/test/BugTracker-2009/Tests/segfault_when_quitting_debugger.SF-2538837.stable.out
Branch: jit
Log Message:

Merge with default


diffs (90 lines):

diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -2350,6 +2350,7 @@ str operatorName(int i);
 lng optDebug;
 str optimizeMALBlock(Client cntxt, MalBlkPtr mb);
 str optimizerCheck(Client cntxt, MalBlkPtr mb, str name, int actions, lng 
usec);
+int optimizerIsApplied(MalBlkPtr mb, str name);
 str optimizerRef;
 str optimizer_prelude(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
 str pack2Ref;
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
@@ -208,6 +208,8 @@ OPTdataflowImplementation(Client cntxt, 
        if (GDKnr_threads <= 1)
                return 0;
 
+       if ( optimizerIsApplied(mb,"dataflow"))
+               return 0;
        (void) stk;
        /* inlined functions will get their dataflow control later */
        if ( mb->inlineProp)
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
@@ -1444,14 +1444,12 @@ mat_topn(MalBlkPtr mb, InstrPtr p, matli
                        pushInstruction(mb,r);
 
                        q = copyInstruction(p);
-                       //setFunctionId(q, subsliceRef);
-                       setFunctionId(q, sliceRef);
+                       setFunctionId(q, subsliceRef);
                        if (ml->v[m].type != mat_tpn || is_slice) 
                                getArg(q,1) = getArg(r,0);
                        pushInstruction(mb,q);
                }
 
-               ml->v[piv].packed = 1;
                ml->v[piv].type = mat_slc;
        }
 }
@@ -1497,6 +1495,8 @@ OPTmergetableImplementation(Client cntxt
        char buf[256];
        lng usec = GDKusec();
 
+       if( optimizerIsApplied(mb, "mergetable"))
+               return 0;
        old = mb->stmt;
        oldtop= mb->stop;
        OPTDEBUGmergetable {
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
@@ -204,6 +204,24 @@ OPTsetDebugStr(void *ret, str *nme)
        return MAL_SUCCEED;
 }
 
+/* some optimizers can only be applied once.
+ * The optimizer trace at the end of the MAL block
+ * can be used to check for this.
+ */
+int
+optimizerIsApplied(MalBlkPtr mb, str optname)
+{
+       InstrPtr p;
+       int i;
+       for( i = mb->stop; i < mb->ssize; i++){
+               p = getInstrPtr(mb,i);
+               if( p == NULL)
+                       return 0;
+               if (getModuleId(p) == optimizerRef && p->token == REMsymbol && 
strcmp(getFunctionId(p),optname) == 0) 
+                       return 1;
+       }
+       return 0;
+}
 /*
  * All optimizers should pass the optimizerCheck for defense against
  * incomplete and malicious MAL code.
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
@@ -75,6 +75,7 @@ mal_export str optimizeMALBlock(Client c
 mal_export void showOptimizerStep(str fnme,int i, int flg);
 mal_export void showOptimizerHistory(void);
 
+mal_export int optimizerIsApplied(MalBlkPtr mb, str name);
 mal_export int isUnsafeInstruction(InstrPtr q);
 mal_export int isUnsafeFunction(InstrPtr q);
 mal_export int isInvariant(MalBlkPtr mb, int pcf, int pcl, int varid);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to