Changeset: 41dfc7ac4f08 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=41dfc7ac4f08
Removed Files:
        monetdb5/optimizer/opt_iot.c
        monetdb5/optimizer/opt_iot.h
Modified Files:
        monetdb5/optimizer/opt_garbageCollector.c
        monetdb5/optimizer/opt_pipes.c
        monetdb5/optimizer/opt_prelude.c
        monetdb5/optimizer/opt_prelude.h
        monetdb5/optimizer/opt_support.c
        monetdb5/optimizer/opt_support.h
        monetdb5/optimizer/opt_wrapper.c
Branch: default
Log Message:

Backing out changeset c4ad80e9ca8c: it belongs on branch iot.


diffs (truncated from 391 to 300 lines):

diff --git a/monetdb5/optimizer/opt_garbageCollector.c 
b/monetdb5/optimizer/opt_garbageCollector.c
--- a/monetdb5/optimizer/opt_garbageCollector.c
+++ b/monetdb5/optimizer/opt_garbageCollector.c
@@ -73,10 +73,10 @@ OPTgarbageCollectorImplementation(Client
                }
                if (blockStart(p) )
                        depth++;
+               if ( p->token == ENDsymbol)
+                       break;
                
                pushInstruction(mb, p);
-               if ( p->token == ENDsymbol)
-                       break;
                n = mb->stop-1;
                for (j = 0; j < p->argc; j++) {
                        if (getEndLifespan(span,getArg(p,j)) == i && 
isaBatType(getArgType(mb, p, j)) ){
@@ -103,6 +103,9 @@ OPTgarbageCollectorImplementation(Client
                        }
                }
        }
+       assert(p);
+       assert( p->token == ENDsymbol);
+       pushInstruction(mb, p);
        for (i++; i < limit; i++) 
                pushInstruction(mb, old[i]);
        for (; i < slimit; i++) 
diff --git a/monetdb5/optimizer/opt_iot.c b/monetdb5/optimizer/opt_iot.c
deleted file mode 100644
--- a/monetdb5/optimizer/opt_iot.c
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * The contents of this file are subject to the MonetDB Public License
- * Version 1.1 (the "License"); you may not use this file except in
- * compliance with the License. You may obtain a copy of the License at
- * http://www.monetdb.org/Legal/MonetDBLicense
- *
- * Software distributed under the License is distributed on an "AS IS"
- * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
- * License for the specific language governing rights and limitations
- * under the License.
- *
- * The Original Code is the MonetDB Database System.
- *
- * The Initial Developer of the Original Code is CWI.
- * Portions created by CWI are Copyright (C) 1997-July 2008 CWI.
- * Copyright August 2008-2015 MonetDB B.V.
- * All Rights Reserved.
- */
-
-/*
- * (author) M. Kersten
- * Assume simple queries . Clear out all non-iot schema related sql 
statements, except
- * for the bare minimum.
- */
-/*
- * We keep a flow dependency table to detect.
- */
-#include "monetdb_config.h"
-#include "opt_iot.h"
-#include "opt_deadcode.h"
-#include "mal_interpreter.h"    /* for showErrors() */
-#include "mal_builder.h"
-#include "opt_statistics.h"
-#include "opt_dataflow.h"
-
-int
-OPTiotImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
-{
-       int actions = 0, mvc=0;
-       int i, j, limit, slimit;
-       InstrPtr r, p, *old;
-       int  movetofront=0;
-       int *alias;
-       char *tidlist;
-
-       (void) pci;
-       (void) mvc;
-
-       OPTDEBUGiot {
-               mnstr_printf(cntxt->fdout, "#iot optimizer started\n");
-               printFunction(cntxt->fdout, mb, stk, LIST_MAL_DEBUG);
-       } else
-               (void) stk;
-
-       old = mb->stmt;
-       limit = mb->stop;
-       slimit = mb->ssize;
-       if (newMalBlkStmt(mb, slimit) < 0)
-               return 0;
-
-       alias = (int *) GDKzalloc(mb->vtop * 2 * sizeof(int));
-       tidlist = (char *) GDKzalloc(mb->vtop );
-       if (alias == 0)
-               return 0;
-
-       pushInstruction(mb, old[0]);
-       for (i = 1; i < limit; i++)
-               if (old[i]) {
-                       p = old[i];
-
-                       if (getModuleId(p) == iotRef && getFunctionId(p) == 
putName("window", 6) &&
-                               isVarConstant(mb, getArg(p, 1)) && 
isVarConstant(mb, getArg(p, 2)) && isVarConstant(mb, getArg(p, 3)))
-                               /* let's move the window to the start of the 
block  when it consists of constants*/
-                               movetofront=1;
-                       if (getModuleId(p) == iotRef && (getFunctionId(p) == 
putName("threshold", 9) || getFunctionId(p) == putName("beat", 4)) &&
-                               isVarConstant(mb, getArg(p, 1)) && 
isVarConstant(mb, getArg(p, 2)))
-                               /* let's move the threshold/beat to the start 
of the block  when it consists of constants*/
-                               movetofront=1;
-                       if( movetofront){
-                               movetofront =0;
-                               pushInstruction(mb, p);
-                               for (j = mb->stop - 1; j > 1; j--)
-                                       mb->stmt[j] = mb->stmt[j - 1];
-                               mb->stmt[j] = p;
-                               continue;
-                       }
-
-                       if (p->token == ENDsymbol) {
-                               /* a good place to commit the SQL transaction */
-                               /* catch any exception left behind */
-                               r = newAssignment(mb);
-                               j = getArg(r, 0) = newVariable(mb, 
GDKstrdup("SQLexception"), TYPE_str);
-                               setVarUDFtype(mb, j);
-                               r->barrier = CATCHsymbol;
-                               r = newAssignment(mb);
-                               getArg(r, 0) = j;
-                               r->barrier = EXITsymbol;
-                               r = newAssignment(mb);
-                               j = getArg(r, 0) = newVariable(mb, 
GDKstrdup("MALexception"), TYPE_str);
-                               setVarUDFtype(mb, j);
-                               r->barrier = CATCHsymbol;
-                               r = newAssignment(mb);
-                               getArg(r, 0) = j;
-                               r->barrier = EXITsymbol;
-
-                               break;
-                       }
-
-                       if (getModuleId(p) == sqlRef && getFunctionId(p) == 
mvcRef)
-                               mvc = getArg(p, 0);
-
-                       /* trim the number of sql instructions dealing with 
baskets */
-                       if (getModuleId(p) == sqlRef && getFunctionId(p) == 
putName("affectedRows", 12)) {
-                               freeInstruction(p);
-                               continue;
-                       }
-
-                       /* remove consolidation of tid lists */
-                       if (getModuleId(p) == algebraRef && getFunctionId(p) == 
subjoinRef  && tidlist[getArg(p,1)]){
-                               alias[getArg(p, 0)] = getArg(p,2);
-                               freeInstruction(p);
-                               continue;
-                       }
-                       /* remove delta processing for baskets */
-                       if (getModuleId(p) == sqlRef && (getFunctionId(p) == 
deltaRef || getFunctionId(p) == subdeltaRef) ) {
-                               clrFunction(p);
-                               p->argc =2;
-                               pushInstruction(mb, p);
-                               continue;
-                       }
-
-                       /* remove delta processing for baskets */
-                       if (getModuleId(p) == sqlRef && (getFunctionId(p) == 
projectdeltaRef || getFunctionId(p) == subdeltaRef) ) {
-                               clrFunction(p);
-                               setModuleId(p,algebraRef);
-                               setFunctionId(p,subjoinRef);
-                               p->argc =3;
-                               pushInstruction(mb, p);
-                               continue;
-                       }
-
-                       for (j = 0; j < p->argc; j++)
-                               if (alias[getArg(p, j)])
-                                       getArg(p, j) = alias[getArg(p, j)];
-
-                       if (getModuleId(p) == sqlRef && getFunctionId(p) == 
appendRef) {
-                               /* the appends come in multiple steps.
-                                  The first initializes an basket update 
statement,
-                                  which is triggered when we commit the 
transaction.
-                                */
-                       }
-                       pushInstruction(mb, p);
-               }
-
-    /* take the remainder as is */
-    for (; i<limit; i++)
-        if (old[i])
-            pushInstruction(mb,old[i]);
-       (void) stk;
-       (void) pci;
-
-       OPTDEBUGiot {
-               mnstr_printf(cntxt->fdout, "#iot optimizer intermediate\n");
-               printFunction(cntxt->fdout, mb, stk, LIST_MAL_DEBUG);
-       } 
-       GDKfree(alias);
-       GDKfree(tidlist);
-       return actions;
-}
-
diff --git a/monetdb5/optimizer/opt_iot.h b/monetdb5/optimizer/opt_iot.h
deleted file mode 100644
--- a/monetdb5/optimizer/opt_iot.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * The contents of this file are subject to the MonetDB Public License
- * Version 1.1 (the "License"); you may not use this file except in
- * compliance with the License. You may obtain a copy of the License at
- * http://www.monetdb.org/Legal/MonetDBLicense
- *
- * Software distributed under the License is distributed on an "AS IS"
- * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
- * License for the specific language governing rights and limitations
- * under the License.
- *
- * The Original Code is the MonetDB Database System.
- *
- * The Initial Developer of the Original Code is CWI.
- * Portions created by CWI are Copyright (C) 1997-July 2008 CWI.
- * Copyright August 2008-2015 MonetDB B.V.
- * All Rights Reserved.
- */
-
-#ifndef _OPT_DATACELL_
-#define _OPT_DATACELL_
-#include "opt_prelude.h"
-#include "opt_support.h"
-#include "opt_pipes.h"
-
-#define OPTDEBUGiot   if (1)
-//#define OPTDEBUGiot  if (optDebug & ((lng) 1 << DEBUG_OPT_DATACELL))
-opt_export int OPTiotImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
-#endif
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
@@ -7,7 +7,9 @@
  */
 
 /*
- * M.L. Kersten
+ * @f opt_pipes
+ * @a M.L. Kersten
+ * @-
  * The default SQL optimizer pipeline can be set per server.  See the
  * optpipe setting in monetdb(1) when using merovingian.  During SQL
  * initialization, the optimizer pipeline is checked against the
@@ -221,34 +223,6 @@ static struct PIPELINES {
         "optimizer.garbageCollector();",
         "stable", NULL, NULL, 1},
  */
-       {"iot_pipe",
-        "optimizer.inline();"
-        "optimizer.candidates();"
-        "optimizer.remap();"
-        "optimizer.iot();"
-        "optimizer.costModel();"
-        "optimizer.coercions();"
-        "optimizer.evaluate();"
-        "optimizer.aliases();"
-        "optimizer.pushselect();"
-        "optimizer.mitosis();"
-        "optimizer.mergetable();"
-        "optimizer.deadcode();"
-        "optimizer.aliases();"
-        "optimizer.constants();"
-        "optimizer.commonTerms();"
-        "optimizer.projectionpath();"
-        "optimizer.deadcode();"
-        "optimizer.reorder();"
-        "optimizer.reduce();"
-        "optimizer.matpack();"
-        "optimizer.dataflow();"
-        "optimizer.querylog();"
-        "optimizer.multiplex();"
-        "optimizer.generator();"
-        "optimizer.profiler();"
-        "optimizer.garbageCollector();",
-        "stable", NULL, NULL, 1},
 /* sentinel */
        {NULL, NULL, NULL, NULL, NULL, 0}
 };
diff --git a/monetdb5/optimizer/opt_prelude.c b/monetdb5/optimizer/opt_prelude.c
--- a/monetdb5/optimizer/opt_prelude.c
+++ b/monetdb5/optimizer/opt_prelude.c
@@ -116,7 +116,6 @@ str ilikesubselectRef;
 str ilikethetasubselectRef;
 str likeRef;
 str ilikeRef;
-str iotRef;
 str not_likeRef;
 str not_ilikeRef;
 str listRef;
@@ -131,7 +130,6 @@ str multicolumnRef;
 str matRef;
 str max_no_nilRef;
 str maxRef;
-str streamRef;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to